Domanda

Attualmente sto scrivendo un servizio di Windows che utilizza l'Asterisk AMI per rilevare quando una chiamata è in arrivo e quindi eseguire una richiesta Web in base a chi la chiamata proviene da e chi sta andando. Qualcuno sa di un evento in Asterisk che ho potuto ascoltare il include entrambi questi dettagli? Ho bisogno del numero della persona al di fuori del sistema di chi sta chiamando, ma tutto ciò che ho potuto utilizzare per identificare il numero di telefono interno di essere chiamato sarebbe bene, fintanto che può essere al di fuori di usato asterisco.

I stava guardando gli eventi e tutti hanno il numero del chiamante esterno su di loro però nessuno di loro collegamento al chiamante interno diverso da quello con il quale uniqueid meno che costruire un dizionario di questi in servizio non lo farò essere in grado di utilizzare.

È stato utile?

Soluzione

Così alla fine sono riuscito a fare questo attraverso utilizzando solo l'AMI e di ascolto per gli eventi di chiamata. Con quello che volevamo l'accesso a ascoltai per gli eventi Newchannel, Quadrante eventi e manifestazioni Hangup, anche se tutto quello che sono dopo è il numero di chi sta chiamando e il numero di chi stanno chiamando Sono abbastanza sicuro che si potrebbe ottenere via con il monitoraggio solo gli eventi di chiamata.

Ogni volta che un evento è stato ricevuto Newchannel ho creato un oggetto Channel e aggiunto a un elenco di canali che erano attualmente sul server Asterisk. Poi, ascoltando gli eventi di composizione con il Subevent di Begin sono stato in grado di estrarre l'unico canale di id dispone di entrambe le parti coinvolte nella chiamata e quindi ottenere i numeri coinvolti. Quando è stato ricevuto un evento Riaggancia ho rimosso il canale che veniva distrutto. Questo sembra funzionare grande per ora, anche se noi havent avuto il tempo pieno di provarlo quindi speriamo che sia corretta.

Altri suggerimenti

Io ho un'idea, ma probabilmente non come la risposta:)

Abbiamo cercato di fare questo e non è riuscito così abbiamo fatto qualcosa di male:)

Quello che abbiamo fatto erano a scrivere AGI script e li chiamano utilizzando l'interfaccia Manager e poi raschiare la linea di comando.

Roba come nucleo Mostra canali conciso, ecc, la sua ikky ma funziona .. abbiamo usato regex per analizzare l'output di stringa e poi afferrò le informazioni da lì, l'unico problema con il fare cose del genere è che si deve guardare ogni volta si applica una patch come l'uscita dalla linea di comando tende a patch di modifica patch.

Se non scopre un modo di fare questo usando il c # api e che non utilizzano AGI sarei molto interessato, ma non siamo riusciti a fare quello che volevamo con l'API senza ricorrere a script AGI alla fine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top