miércoles, 6 de julio de 2011

Creación de IVR en Asterisk

En este documento detallaremos los pasos necesarios para configurar un IVR para una central asterisk. El escenario se describe a continuación,  simularemos la entrada de una llamada exterior  marcando la extensión 2000, a continuación nos atenderá el IVR donde se escuchará la operadora de bienvenida diciendo el siguiente  mensaje

“Gracias por comunicarse con   Mi Empresa SRL….……para comunicarse con  Ventas marque 1… para  comunicarse con Soporte  marque 2 …. Para comunicarse con Administración  marque 3… para enviar un fax presione 4  sino aguarde y será atendido por una operadora.”

Para realizar esta tarea seguiremos los siguientes pasos:

crear un IVR en formato wav llamado menudia.wav y  convertirlo a extension gsm con el software WavePadSound editor.

con el winscp copiar el archivo creado (menudia2.gsm) en el siguiente PATH /var/lib/asterisk/sounds/es/

agregar  el contexto  menu-dia en el archivo extensions.conf. Si queremos listar el directorio, lo hacemos con la opción 9. Para ello copiar el archivo  cp /var/lib/asterisk/sounds/es/dir-intro.gsm /var/lib/asterisk/sounds/es/dir-welcome.gsm






[phones]include => internal

[internal]

exten => _2XXX,1,Dial(SIP/${EXTEN},10) ; llamados de ext 2xxx

exten => _2XXX,n,VoiceMail(${EXTEN}@default,u) ; opcion de dejar un mensaje en la casilla de la ext

exten => _2XXX,n,Playback(vm_goodbye) ; se despide con un mensaje

exten => _2XXX,n,Hangup() ; cuelga la comunicacion

;;;;;con *98 entro a mi casilla de mensajes

exten => *98,1,Answer

exten => *98,2,Wait(1)

exten => *98,3,VoiceMailMain(${CALLERID}@default)

exten => *98,4,Hangup

;llamando al interno 2000 entra al IVRsegun el horario ejecuta el mensaje

exten => 2000,1,GotoIfTime(9:00-18:00|mon-fri|*|*?menu-dia,s,1)

exten => 2000,2,GotoIfTime(18:01-8:59|mon-fri|*|*?menu-noche,s,1) 

[menu-noche]

exten=>s,1,Answer

exten=>s,2,Wait(1)

exten=>s,3,Playback(menunoct)

exten=>s,4,Hangup

;;;;; llamando al 3333 grabo un IVR

exten => 3333,1,Answer

exten => 3333,n,Wait(0.5)

exten => 3333,n,Record(menudia2.gsm)

exten => 3333,n,Wait(1)

exten => 3333,n,Playback(menudia2)

exten => 3333,n,Hangup()

 [menu-dia]

exten => s,1,Answer

exten => s,n,Wait(0.5)

exten => s,n,Background(menudia2) ; reproduce el mensaje grabado

exten => s,n,WaitExtend(5)

exten => 1,1,Goto(internal,2001,1) ; si selecciona la opcion 1 redirecciona a la ext 2001

exten => 2,1,Goto(internal,2002,1); si selecciona la opcion 2 redirecciona a la ext 2002

exten => 2,1,Goto(internal,2003,1); si selecciona la opcion 3 redirecciona a la ext 2003

exten => 9,1,Directory(default,user,e) ; si selecciona la opcion 9 redirige al directorio

exten => *,1,Goto(s,1) ; vuelve a reproducer el menu principal con la tecla asterisco

exten => t,1,Playback(goodbye) ; si esta mucho tiempo sin hacer nada despide y cuelga

exten => t,n,Hangup()

exten => i,1,Playback(pbx-invalid) ; si el numero digitado no es valido comunica el error

exten => i,n,goto(s,1) ;vuleve al menu principal del IVR

TIPS= La diferencia entre Playback() y Background () es que con Playback cuando reproduce un mensaje tengo que esperar a que termine para elegir la opción que deseo, en cambio con Background puedo oprimir la opción antes de que termine el mensaje.

Se agrega la siguiente línea al contexto features.






 [features]


exten => 2000,1,Goto(menu-dia,s,1) ; llamando a la ext 2000 ingresa al menu del IVR


se realiza la prueba llamando al interno 2000 donde tendría que escucharse el IVR

Diagrama de flujo de comportamiento del IVR

 



Cómo funciona el IVR según horarios.
Vamos hacer que el IVR según el horario la operadora de 2 tipos de mensajes

1-      Si el llamado es de lunes a viernes de 9:00 a 18:00 nos atiende la operadora dando la bienvenida y derivando a la extensión que queremos ejecutando el contexto menu-dia.

2-      Si el llamado es fuera de horario y día hábil, nos dará un mensaje informando el horario de atención, ejecutando el contexto menú-noche.

exten => 2000,1,GotoIfTime(9:00-18:00|mon-fri|*|*?menu-dia,s,1)

exten => 2000,2,GotoIfTime(18:01-8:59|mon-fri|*|*?menu-noche,s,1)

La sintaxis es la siguiente para entender cómo funciona el GotoifTime

(9:00-18:00|mon-fri|*|*?menu-dia,s,1)

(rango horario|dias de la semana|dias del mes| meses?contexto)

No hay comentarios:

Publicar un comentario