VoIP e Asterisk/Interactive Voice Response
Gli IVR sono dei sistemi telefonici automatici che permettono di fornire menu anche complessi in cui il chiamante può navigare usando il tastierino numerico o usando comandi vocali. Questi sistemi sono ampiamente utilizzati in sistemi informativi come quelli delle ferrovie, dei cinema, in quei sistemi in cui si leggono una serie di informazioni per un evento selezionato, oppure in sistemi di billing dove l'utente deve immettere alcune informazioni (es. carta di credito) senza l'aiuto di un operatore.
Questi IVR in Asterisk si codificano nel dialplan, solitamente sono abbastanza avanzati per cui richiedono una certa dimestichezza con le varie application disponibili, ecco alcune delle più utilizzate:
GotoIf WaitExten Set Playback Read Authenticate
La codifica nel dialplan non è l'unica strada disponibile, per IVR avanzati si può valutare la scrittura di un AGI, visto nel capitolo precedente.
Ecco un esempio, utilizzabile in un'azienda come IVR per le chiamate in ingresso:
[mainmenu] exten => s,1,Answer exten => s,2,SetMusicOnHold(default) exten => s,3,DigitTimeout,5 exten => s,4,ResponseTimeout,10 ;menu - 1 supporto tecnico, 2 voicemail, 3 echo test exten => s,5,Background(sai-welcome) exten => s,6,Background(sai-choose) ; Supporto tecnico exten => 1,1,AGI(dima-test.agi) exten => 1,2,SetGlobalVar(ACCOUNTCODE=${callerid}) exten => 1,3,SetVar(testcallerid=${callerid}) exten => 1,4,Background(sai-reptech-welcome) exten => 1,5,Queue(rep-tech) ; Voicemail exten => 2,1,VoicemailMain() exten => 2,2,Hangup ; Echo Test exten => 3,1,Playback(demo-echotest) exten => 3,2,Echo exten => 3,3,Playback(demo-echodone) exten => 3,4,Goto(mainmenu,s,6) ; #=hangup exten => #,1,Playback(sai-thanks) exten => #,2,Hangup exten => t,1,Goto(#,1) ; in caso di timeout (“t”) exten => i,1,Playback(invalid) ; estensione invalida