Está en la página 1de 5

Configuracion de un IVR en Asterisk - Primera parte

Mi, 17/12/2008 - 17:46 admin

Hoy empezamos con un tema nuevo. Como crear un IVR en nuestra centralita para luego utilizarlo en nuestro dialplan (plan de llamadas). En esta primera parte veremos como crear archivos audio personalizados para luego usarlos en Asterisk. La cosa ms sencilla que podemos hacer, si no disponemos de mayores recursos tecnolgicos, es grabar los archivos con la aplicacin Record. El el contexto local de nuestro archivo de configuracin pondremos las siguientes lneas: nano /etc/asterisk/extensions.conf exten => _66XX,1,Answer() exten => _66XX,n,Wait(2) exten => _66XX,n,Record(/tmp/prompt${EXTEN:2}:wav) exten => _66XX,n,Wait(2) exten => _66XX,n,Playback(/tmp/prompt${EXTEN:2}) exten => _66XX,n,Wait(2) exten => _66XX,n,Hangup() Lnea 1: contesta la llamada Lnea 2: espera 2 segundos Lnea 3: Graba el archivo audio en la carpeta /tmp con nombre promptXX donde XX son los ltimos dos dgitos de la extensin que hemos llamado desde nuestro softphone. Ej. Si llamamos la extensin 6650 el archivo audio tendr el nombre prompt50.waw Lnea 4: espera 2 segundos Lnea 5: escucharemos el archivo recin grabado Lnea 6: espera 2 segundo Lnea 7: cuelga la llamada Si no estamos satisfechos con la calidad de la grabacin podemos volver a grabarla marcando el mismo numero. La vieja ser remplazada por la nueva. Esta solucin, que, tengo que admitirlo, le por algn lado, nos permite grabar hasta 99 archivos audio distintos. Una vez que tengamos nuestro o nuestros archivos listos vamos a copiarlos en la carpeta de las voces de asterisk. mkdir /var/lib/astersik/sounds/custom

cd /tmp mv prompt* /var/lib/asterisk/sounds/custom Los dejo con la sinopsis de la aplicacin Record (les recuerdo que pueden contribuir a la traduccin de asterisk 1.6 en el wiki). La prxima parte ser sobre la configuracin del IVR en el archivo extensions.conf Chao -= Info about application 'Record' =[Synopsis] Record to a file [Description] Record(filename.format,silence[,maxduration][,options]) Records from the channel into a given filename. If the file exists it will be overwritten. - 'format' is the format of the file type to be recorded (wav, gsm, etc). - 'silence' is the number of seconds of silence to allow before returning. - 'maxduration' is the maximum recording duration in seconds. If missing or 0 there is no maximum. - 'options' may contain any of the following letters: 'a' : append to existing recording rather than replacing 'n' : do not answer, but record anyway if line not yet answered 'q' : quiet (do not play a beep tone) 's' : skip recording if the line is not yet answered 't' : use alternate '*' terminator key (DTMF) instead of default '#' 'x' : ignore all terminator keys (DTMF) and keep recording until hangup If filename contains '%d', these characters will be replaced with a number incremented by one each time the file is recorded. A channel variable named RECORDED_FILE will also be set, which contains the final filemname. Use 'core show file formats' to see the available formats on your system User can press '#' to terminate the recording and continue to the next priority. If the user should hangup during a recording, all data will be lost and the application will teminate.

Configuracion de un IVR en Asterisk - Segunda parte


Mi, 14/01/2009 - 08:45 admin

En un precedente articulo, hemos visto como grabar archivos para usarlos en un IVR (Respuesta de Voz Interactiva). Para el ejemplo que les voy a presentar hoy, he registrado tres archivos que contienen las siguientes frases: espeng.wav - "for english press one, para espaol marque dos" espmenu.wav - "para efectuar un test de echo marque 1, para escuchar la msica en espera marque 2, para la oficina de ventas marque 3) engmenu.wav - "for echo test press 1, for music on hold press 2, for sales office, press 3) He copiado los archivos en la carpeta /var/lib/asterisk/sounds/custom y he empezado a construir mi IVR nano /etc/asterisk/IVR [IVR] exten => s,1,Wait(1) ;espera un segunfo exten => s,2,Set(CHANNEL(language)=es) ; pone como predefinidas las voces en espanol exten => s,3,Set(TIMEOUT(digit)=7) ; 7 segundos es el tiempo que espera entre el primer digito y los sucesivos exten => s,4,Set(TIMEOUT(response)=10) ; 10 segundos es el tiempo que espera para que el llamante presione una tecla exten => s,5,BackGround(custom/espeng) ; presenta el menu vocal y al mismo tiempo escucha si el llamante presiona alguna tecla exten => s,6,WaitExten() ; espera que el llamante presione alguna tecla exten => 1,1,goto(IVR1,s,1) ; si presiona 1 va al contexto IVR1, extension s, prioridad 1 exten => 2,1,goto(IVR2,s,1) ; si presiona 2 va al contexto IVR2, extension s, prioridad 1 exten => i,1,Playback(invalid) ; si el numero digitado no es valido (ni 1 ni 2) comunica el error exten => i,2,Playback(goodbye) ; se despide exten => i,3,Hangup ; cuelga la llamada exten => t,1,goto(IVR,s,2) ; si dentro de 10 segundo el llamante no presiona ninguna tecla vuelve a presentar el menu vocal exten => h,1,Hangup ; si el llamante cuelga ejecuta la extension h

[IVR1] exten => s,1,Set(TIMEOUT(digit)=7) ; exten => s,2,Set(TIMEOUT(response)=10) exten => s,3,Set(CHANNEL(language)=en) ; define como idioma predefinido el ingles y usas las voces en este idioma exten => s,4,BackGround(custom/engmenu) ; presenta en menu en ingles exten => s,5,WaitExten() ; Espera que el llamante presione una tecla exten => 1,1,Playback(demo-echotest) ; Si presiona 1 efectua el test de echo

exten => 1,2,Echo() exten => 2,1,MusicOnHold ; Si presiona 2 escuchar la musica en espera predefinida exten => 3,1,Playback(pls-wait-connect-call) ; Si presiona 3 lo pone en comunicacion con la oficina de ventas (extension 2000) exten => 3,2,Dial(SIP/2000,45,r) exten => i,1,Playback(invalid) exten => i,2,Playback(goodbye) exten => i,3,hangup exten => t,1,goto(IVR1,s,1) exten => h,1,Hangup

[IVR2] exten => s,1,Set(TIMEOUT(digit)=7) exten => s,2,Set(TIMEOUT(response)=10) exten => s,3,Set(CHANNEL(language)=es) exten => s,4,BackGround(custom/espmenu) exten => s,5,WaitExten() exten => 1,1,Playback(demo-echotest) exten => 1,2,Echo() exten => 2,1,MusicOnHold exten => 3,1,Playback(pls-wait-connect-call) exten => 3,2,Dial(SIP/2000,45,r) exten => i,1,Playback(invalid) exten => i,2,Playback(goodbye) exten => i,3,hangup exten => t,1,goto(IVR1,s,1) exten => h,1,Hangup El men IVR2 es totalmente igual al IVR1 solamente que es en espaol. Para incluir este archivo en el diaplan (plan de llamadas): nano /etc/asterisk/extensions.conf Si queremos que todas las llamadas externas sean atendidas por el IVR, en el contexto especifico ponemos: [from-PSTN] exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,Goto(IVR,s,1) y al final del archivo aadimos #include "IVR" Guardamos los cambios y desde la consola de asterisk:

CLI> dialplan reload Este es solo un pequeo ejemplo de lo que se puede hacer con un IVR. Las posibilidades son prcticamente infinitas. Algunos ejemplos:
y y

un IVR que gestione colas de espera diferenciadas por departamento (ventas, compras, asistencia tcnica, etc.) un IVR que permita digitar directamente la extensin o en caso contrario enve la llamada a una operadora.

Cualquier inquietud, ya saben. Chao

También podría gustarte