VoIP e Asterisk/Integrazione con sistemi esistenti

Wikibooks, manuali e libri di testo liberi.

CopertinaVoIP e Asterisk/Copertina

Asterisk offre differenti modalità per integrare il sistema di telefonia con i sistemi aziendali o con un qualunque tipo di sistema informatico.

Asterisk Management Interface[modifica]

L'integrazione può essere intesa come il poter controllare il sistema telefonico da altri sistemi, e in Asterisk avviene prevalentemente tramite la AMI, Asterisk Manager Interface.

La Asterisk Manager Interface fornisce una API che permette ai programmi esterni di monitorare e gestire Asterisk. Una volta abilitato nella configurazione Asterisk si metterà in ascolto sulla porta TCP 5038 per eventuali connessioni in ingresso. I comandi vengono spediti tramite questa connessione, il protocollo usato per dialogare è relativamente semplice:

Action: <action type>
<key 1>: <value 1>
<key 2>: <value 2>
....
<variable1>: <value>
<variable2>: <value>
....

È un sistema abbastanza semplice da usare ed è molto potente, i comandi disponibili sono molti, e per un ulteriore trattazione si rimanda alla documentazione di Asterisk.

Asterisk Gateway Interface[modifica]

Altro tipo di integrazione è tramite la AGI, Asterisk Gateway Interface. Integrazione fatta a un altro livello: Le AGI vengono utilizzate quando nel dialplan si necessita una interazione con l'esterno non prefissata, principio simile ai CGI.

Solitamente gli script AGI servono per effettuare operazioni complesse, comunicare con i database aziendali, accedere a risorse di rete. Molte azioni delle AGI risulterebbero difficoltose o impossibili da fare tramite applications.

Il principio di funzionamento delle AGI è molto simile al funzionamento dei CGI nei server http: la comunicazione tra AGI e Asterisk avviene attraverso i tre descrittori stdin, stdout e stderr. Asterisk fornirà attraverso lo stdin (standard input) le informazioni riguardo alla comunicazione corrente, il formato è abbastanza semplice, questo è un esempio:

agi_request: nomeprogramma
agi_channel: Canale, es. Zap/1-1
agi_callerid: Pinco pallino <12345>
agi_context: ufficio
agi_extension: s
agi_priority: 2

Queste sono alcune delle variabili che vengono passate allo script AGI, sulla base delle quali il programma potrà prendere delle decisioni.

Una volta lanciato, il programma scriverà sullo stdout (standard output) i comandi che impartirà ad Asterisk, esempio:

STREAM FILE beep

Per riprodurre il file beep.gsm, come se si usasse l'application Background(beep.gsm)

SAY NUMBER 12345

Asterisk farà lo spelling del numero specificato (application SayNumber)

WAIT FOR DIGIT 1000

Asterisk aspetterà un tono DMTF per 1000 millisecondi

I comandi possibili di un AGI sono molti, per un elenco completo si rimanda alla documentazione di Asterisk.

L'ultimo canale, stderr (standard error), viene utilizzato per le informazioni di debug, inviate e visualizzate nella console principale di Asterisk.

Per scrivere script AGI sono disponibili librerie che si occupano di facilitarne la scrittura in molti linguaggi, fornendo librerie già pronte per l'uso per filtrare stdin e stdout.