Ricerca nel sito web

Configurazione IVR nel server Asterisk PBX


IVR è una risposta vocale interattiva che riceve input da un chiamante, esegue un'azione basata su tale input e restituisce un risultato al chiamante. Tradizionalmente, i sistemi IVR sono stati molto complessi e costosi da implementare. Lo scopo di questo tutorial è mostrare un modo semplice per ottenere IVR nel sistema Asterisk.
Questa è la continuazione dei tutorial su Asterisk e PBX basato su software. Dovresti avere un sistema Asterisk funzionante prima di provare a configurare IVR in Asterisk. Se sei nuovo e desideri installare Asterisk, puoi utilizzare il nostro tutorial basato su CentOS di seguito:

Funzionamento dell'IVR:
Quando una chiamata in entrata arriva al contesto IVR, il primo prompt dice al chiamante cosa si aspetta IVR dal chiamante, un metodo per ricevere input dal chiamante, logica per verificare che il la risposta del chiamante è un input valido, la logica per determinare quale dovrebbe essere il passaggio successivo dell'IVR e, infine, un meccanismo di archiviazione per le risposte, se applicabile.

Configura IVR in Asterisk

L'IVR nel design Asterisk mostrato qui è per un piccolo campus con i seguenti uffici come esempio:

  1. Ufficio di accoglienza
  2. Ufficio finanziario
  3. Ufficio DVC
  4. Ufficio Sicurezza
  5. Ufficio ICT
  6. Ufficio Scolastico
  7. Ufficio alloggi

Puoi modificare tutte le configurazioni per adattarle al tuo caso d'uso. Gli utenti SIP aggiunti al file sip.conf sono i seguenti.

[101]
username=customercare
secret=pass
host=dynamic
type=friend
disallow= all
allow=ulaw
allow=h263
allow=gsm
allow=alaw
context=moi-ivr
callerid=customercare
videosupport=yes

[102]
username=finance
secret=pass
host=dynamic
type=friend
disallow= all
allow=ulaw
allow=g722
allow=gsm
allow=alaw
context=moi-ivr
callerid=finance

[103]
username=dvc
secret=pass
host=dynamic
type=friend
disallow= all
allow=ulaw
allow=g722
allow=gsm
allow=alaw
context=moi-ivr
callerid=dvc

[104]
username=security
secret=pass
host=dynamic
type=friend
disallow= all
allow=ulaw
allow=g722
allow=gsm
allow=alaw
context=moi-ivr
callerid=security

[105]
username=ICT
secret=pass
type=friend
disallow= all
allow=ulaw
allow=g722
allow=gsm
allow=alaw
context=moi-ivr
callerid=ICT

[106]
username=schooloffice
secret=pass
type=friend
disallow= all
allow=ulaw
allow=h263
allow=gsm
allow=alaw
context=moi-ivr
callerid=schooloffice

[107]
username=accomodation
secret=pass
type=friend
disallow= all
allow=ulaw
allow=h263
allow=gsm
allow=alaw
context=moi-ivr
callerid=accomodation

Il prossimo passo è avere il contesto pronto per il rock. Il contesto è riportato di seguito:

[moi-incoming]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered IVR menu)
same => n,Answer()
same => n,Set(TIMEOUT(digit)=2) ; this sets the inter-digit timer
same => n,Wait(2) ; wait two second to establish audio
; During job hours, jump to moi-ivr context.
; During closed hours, jumpt to offices-closed.
same => n,GotoIfTime(9:00-16:00,mon-fri,*,*?moi-ivr,s,1:offices-closed)
same => n,GotoIfTime(9:00-12:00,sat,*,*?moi-ivr,s,1:offices-closed)
[offices-closed]
exten =>s,1,Answer()
same => n,wait(2)
same => Background(basic-pbx-ivr-main)
same => n,Hangup()
[moi-ivr]
exten =>s,1,Answer()
same => n,wait(2)
same => n,Set(TIMEOUT(digit)=10) ; ; this sets the inter-digit timer
same => n,Set(TIMEOUT(response)=10)
same => n,Background(basic-pbx-ivr-main)
same => n,WaitExten()
same => n,Background(silence/5)
; 1 to talk to reception ;101
; 2 to talk to finance office ; 102
; 3 to talk to dvc office ;103
; 4 to talk to security office ; 104
; 5 to talk to ICT office ;105
; 6 to talk to schools office ; 106
; 7 to talk to accommodation office ;107
exten => 1,1,Goto(ivr-customercare,s,1)
exten => 2,1,Goto(ivr-finance,s,1)
exten => 3,1,Goto(ivr-dvc,s,1)
exten => 4,1,Goto(ivr-security,s,1)
exten => 5,1,Goto(ivr-ict,s,1)
exten => 6,1,Goto(ivr-schools,s,1)
exten => 7,1,Goto(ivr-accomodation,s,1)
;; 'i' extension that is used for invalid extensions, i e, non-existing extensions dialled by clients.
exten => i,1,Playback(option-is-invalid)
same => n,Goto(moi-ivr)
;; Timeout extension
exten => t,1,Playback(still-there)
exten => t,Goto(moi-ivr,s,5)
;; define extensions for IVR menu
[ivr-reception]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered Customer care support center)
same => n,Answer()
same => n,Dial(SIP/101,10,r)
same => n,Hangup()
same => n,Playback(unavail)
same => n,Hangup()
[ivr-finance]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered Customercare support center)
same => n,Answer()
same => n,Dial(SIP/102,10,r)
same => n,Hangup()
same => n,Playback(unavail)
same => n,Hangup()
[ivr-dvc]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered Customercare support center)
same => n,Answer()
same => n,Dial(SIP/103,10,r)
same => n,Hangup()
same => n,Playback(unavail)
same => n,Hangup()
[ivr-security]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered Customercare support center)
same => n,Answer()
same => n,Dial(SIP/104,10,r)
same => n,Hangup()
same => n,Playback(unavail)
same => n,Hangup()
[ivr-ict]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered Customercare support center)
same => n,Answer()
same => n,Dial(SIP/105,10,r)
same => n,Hangup()
same => n,Playback(unavail)
same => n,Hangup()
[ivr-schools]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered Customercare support center)
same => n,Answer()
same => n,Dial(SIP/106,10,r)
same => n,Hangup()
same => n,Playback(unavail)
same => n,Hangup()
[ivr-accommodation]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered Customercare support center)
same => n,Answer()
same => n,Dial(SIP/107,10,r)
same => n,Hangup()
same => n,Playback(unavail)
same => n,Hangup()

Per fare in modo che le chiamate dirette ai numeri di interno 101-107 arrivano all'IVR nel contesto Asterisk, dobbiamo includere il contesto IVR nel contesto principale per le chiamate in entrata. Il file modificato è
/etc/asterisk/extensions.conf. Quindi aggiungendo la seguente riga di codice,

include => moi-incoming

Ora ogni volta che una persona compone il 101 ed effettua una chiamata, l'elaborazione verrà eseguita nel contesto IVR. Il punto chiave da notare è che tutti i numeri di interno utilizzati su IVR devono essere registrati affinché una chiamata venga instradata.
Se disponi di una logica di instradamento delle chiamate separata su extensions.conf per le chiamate in entrata PSTN, basta includere il contesto IVR al suo interno.

Gli articoli correlati sono:

Come installare Asterisk PBX 13.x su CentOS 7 guida passo passo

Come integrare il server di chat XMPP Openfire con il server PBX Asterisk

Configurazione della mappatura tra utenti Openfire XMPP e utenti Asterisk SIP

Configurazione della mappatura tra utenti Openfire XMPP e utenti Asterisk SIP

Come installare e configurare Festival per l'utilizzo di Asterisk

TRASFERIMENTO E INOLTRO DI CHIAMATA IN CONFIGURAZIONE ASTERISCO

Come configurare l'account XMPP su X-Lite,Zoiper, Jitsi Sofphones e il client Spark XMPP

Articoli correlati: