VoIP e Asterisk/Interactive Voice Response

Indice del libro

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