Está en la página 1de 8

PROGRAMACION AVANZADA DEL PLAN DE DISCADO PCC

Laboratorio N 02 MACROS AVANZADAS

Macros Avanzadas

Programacin Avanzada del plan de discado

Objetivos: Reconocer variables globales y de canal en el plan de discado. Utilizar macros en el plan de discado.

Equipos, Materiales, Programas y Recursos: Una computadora con SO Linux y Asterisk instalado. Telfonos IP por software y hardware. Introduccin: En este laboratorio trabajaremos con variables globales y de canal en el plan de discado para aumentar las caractersticas del plan de discado. Tambin utilizaremos macros para automatizar las tareas que son repetitivas en el plan de discado y evitar escribir mucho cdigo simplificando su mantenimiento. Seguridad:

Ubicar maletines y/o mochilas en el gabinete al final de aula de Laboratorio. No ingresar con lquidos ni comida al aula de Laboratorio. Tener cuidado en conectar los equipos utilizando cable y enchufes en buen estado. Asegurarse de conectar y desconectar los dispositivos cuando estn apagados. Al culminar la sesin de laboratorio, apagar correctamente la computadora y el monitor.

Dpto. de Informtica

Pg. 2

Macros Avanzadas

Programacin Avanzada del plan de discado

Procedimiento Para que el laboratorio sea mejor aprovechado debe realizarse en grupos de 2 personas. Previo 1. Anotar la direccin IP de su servidor: _____________________________ 2. Configurar en el servidor asterisk las cuentas SIP 2001 y 2002. 3. Configurar los telfonos IP por software y/o hardware. 4. Establecer una comunicacin utilizando IAX con el servidor de su compaero. Para las pruebas utilizar en ambos lados el contexto local. 5. Hacer un plan de discado bsico colocando todos las extensiones en el mismo contexto (local). Configurando Variables.6. Ingresar al directorio /etc/asterisk y editar el archivo extensions.conf. En la configuracin general agregar: [general] static=yes writeprotect=yes 7. Agregar la definicin de las siguientes variables globales: [globals] OPERADORA=SIP/2001 GERENCIA=SIP/3001 8. Crear la siguiente extensin: exten=>1001,1,answer exten=>1001,n,set(NOMBRE=Hans) exten=>1001,n,noop(Variables Globales) exten=>1001,n,noop(${GERENCIA}) exten=>1001,n,noop(${OPERADORA}) exten=>1001,n,noop(Variables de Canal) exten=>1001,n,noop(${NOMBRE}) exten=>1001,n,Noop(${EXTEN}) exten=>1001,n,Noop(${CALLERID(num)}) exten=>1001,n,Noop(${CALLERID(name)}) exten=>1001,n,Noop(${CONTEXT}) exten=>1001,n,Noop(${PRIORITY}) exten=>1001,n,Noop(${CHANNEL}) exten=>1001,n,hangup 9. Llamar a la extensin 1001. Observar el CLI. Qu hace el comando Noop? _____________________________________________________________________ _ _____________________________________________________________________ _ 10. Crear la siguiente extensin: exten=>1002,1,answer exten=>1002,n,set(NOMBRE=Robert) exten=>1002,n,Noop(Variables Globales)
Dpto. de Informtica Pg. 3

Macros Avanzadas

Programacin Avanzada del plan de discado

exten=>1002,n,Noop(${GERENCIA}) exten=>1002,n,Noop(${OPERADORA}) exten=>1002,n,Noop(Variables de Canal) exten=>1002,n,Noop(${EXTEN}) exten=>1002,n,Noop(${CALLERID(num)}) exten=>1002,n,Noop(${CALLERID(name)}) exten=>1002,n,Noop(${CONTEXT}) exten=>1002,n,Noop(${PRIORITY}) exten=>1002,n,Noop(${CHANNEL}) exten=>1002,n,hangup 11. Llamar a la extensin 1002. Observar el CLI. Comprelo con la salida mostrada en el paso 7. Qu diferencias observa? _____________________________________________________________________ _ _____________________________________________________________________ _ 12. Crear la extensin 1003: exten=>1003,1,answer exten=>1003,n,noop(${DIALSTATUS}) exten=>1003,n,hangup 13. Llamar a la extensin 1003. Observar el CLI. Qu valor obtiene la variable DIALSTATUS? _____________________________________________________________________ _ _____________________________________________________________________ _ 14. Cambiar la primera lnea de la extensin 1003 como sigue: exten=>1003,1, dial(sip/3001,10) exten=>1003,n,noop(${DIALSTATUS}) exten=>1003,n,hangup 15. Llamar otra vez a la extensin 1003, no contestar la llamada. Observar el CLI. Qu valor obtiene la variable DIALSTATUS? _____________________________________________________________________ _ _____________________________________________________________________ _ Utilizar la aplicacin monitor y las variables de canal para grabar llamadas. 16. Crear la siguiente extensin: exten=>1004,1,Set(FECHA= ${STRFTIME(${EPOCH},,%d-%m-%Y-%H-%M-%S)}) exten=>1004,n,Set(NOMBRE_ARCHIVO=${EXTEN}-${CALLERID(num)}-${FECHA}) exten=>1004,n,Monitor(wav,${NOMBRE_ARCHIVO},m) exten=>1004,n,Dial(SIP/2002,20,Trt)
Dpto. de Informtica Pg. 4

Macros Avanzadas

Programacin Avanzada del plan de discado

exten=>1004,n,Hangup 17. Llamar de la extension 2001 al 1004, contestar el telefono y hablar por unos segundos, cortar la llamada. Buscar en el directorio /var/spool/asterisk/monitor/ Con que nombre se graba el archivo monitoreado? _____________________________________________________________________ _ _____________________________________________________________________ _ Crear una extensin que nos permita grabar un mensaje personal que ser escuchado si no contestamos el telfono despus de 10 segundos. 18. Crear la siguiente extensin: exten=>1005,1,Playback(ingrese-su-mensaje) exten=>1005,n,Set(NAME_FILE=${CALLERID(num)}) exten=>1005,n,Noop(${NAME_FILE}) exten=>1005,n,Record(${NAME_FILE}.wav) exten=>1005,n,Hangup 19. Modificar las extensiones: 2001 y 2002, agregando un playback. exten=>2001,1,Dial(SIP/2001,10,Trt) exten=>2001,2,Playback(${EXTEN}) exten=>2001,3,Hangup Crear un IVR utilizando GoTo y variables. El IVR debe tener un men principal con 3 opciones, de las cuales la tercera deber enviarlo a un submen. Este submen a su vez tendr 3 opciones, de las cuales la tercera le debe permitir regresar al men principal. 20. Crear los contextos menu-ivr y submenu-ventas y agregar las siguientes extensiones. [menu-ivr] exten=>s,1,answer exten=>s,n,background(ivr-menu) exten=>s,n,waitexten(8) exten=>1,1,dial(sip/2001,10) exten=>1,n,hangup exten=>2,1,dial(sip/2002,10) exten=>2,n,hangup exten=>3,1,goto(submenu-ventas,s,1) exten=>3,n,hangup exten=>t,1,goto(s,2) exten=>t,n,hangup exten=>i,1,playback(invalido) exten=>i,n,goto(s,2) exten=>i,n,hangup [submenu-ventas] exten=>s,1,answer
Dpto. de Informtica Pg. 5

Macros Avanzadas

Programacin Avanzada del plan de discado

exten=>s,n,background(ivr-smenu-ventas) exten=>s,n,waitexten(8) exten=>1,1,playback(su-credito-es) exten=>1,n,hangup exten=>2,1,playback(su-representante-de-ventas) exten=>2,n,hangup exten=>3,1,goto(menu-ivr,s,2) exten=>3,n,hangup exten=>t,1,goto(s,2) exten=>t,n,hangup

Programando macros: Crear una macro que verifique el estado de una llamada no atendida y de acuerdo a los estados ocupado (BUSY) o no contestado (NO-ANSWER) tome una accin. Si el telfono est ocupado debe dar un mensaje que llame de nuevo, si el telfono o ha sido contestado debe ser derivado a la operadora. 21. Agregar la siguiente macro en el archivo extensions.conf: [macro-exstatus] exten => s,1,Dial(${ARG1},20) exten => s,2,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,dial(${OPERADORA},10) exten => s-NOANSWER,2,Hangup exten => s-BUSY,1, Playback(busy-msg) exten => s-BUSY,2, Hangup exten => _s-.,1,Goto(s-NOANSWER,1) exten => _s-.,2,Hangup 22. En el contexto local modificar la siguiente extensin: exten => 2001,1,Macro(exstatus,SIP/${EXTEN}) Crear una macro que compare el CALLERID y de acuerdo al valor cambie el calleridname que se muestra en el telfono, para indicar quien est llamado. 23. Agregar la siguiente macro en el archivo extensions.conf: [macro-selcid] exten => s,1,Gotoif($["${ARG1}"="2001"]?2:4) exten => s,2,Set(CALLERID(name)="${ARG1} Area: Gerencia") exten => s,3,MacroExit exten => s,4,Gotoif($["${ARG1}"="2002"]?5:7) exten => s,5,Set(CALLERID(name)=" ${ARG1} Area: Ventas") exten => s,6,MacroExit exten => s,7,Set(CALLERID(name)=" ${ARG1} Area: Desconocida") exten => s,8,MacroExit 24. En el contexto local modificar la siguiente extensin: exten => 2001,1,Macro(selcid,${CALLERID(name)}) exten => 2001,2,Dial(SIP/2001)
Dpto. de Informtica Pg. 6

Macros Avanzadas

Programacin Avanzada del plan de discado

exten => 2001,3,Hangup Crear una macro que de acuerdo a la hora del da haga timbrar el telfono de recepcin o el de vigilancia. El telfono de vigilancia solo timbrara si ya pasaron las 8 de la noche. 25. En el contexto local modificar la siguiente extensin: [macro-selhour] exten => s,1,GotoIfTime(8:00-20:00|mon-fri|*|*?dia,1) exten => s,n,dial(${ARG2},10) exten => s,n,MacroExit exten => dia,1,Dial(${ARG1},10) exten => dia,n,MacroExit 26. En el contexto local modificar la siguiente extensin: exten => 2001,1,Macro(selhour,SIP/${EXTEN},SIP/2002) exten => 2001,n,Hangup Crear una macro que de acuerdo al da de un saludo diferente. 27. En el contexto local modificar la siguiente extensin: [macro-selday] exten => s,1,GotoIfTime(*|*|25|dec?nav,1) exten => s,n,GotoIfTime(*|*|28-29|jul?fpat,1) exten => s,n,GotoIfTime(*|*|1|jan?nyear,1) exten => nav,n,MacroExit exten => nav,1,playback(feliz-navidad) exten => nav,n,MacroExit exten => fpat,1,playback(felices-fiestas) exten => fpat,n,MacroExit exten => nyear,1,playback(feliz-anyo-nuevo) exten => nyear,n,MacroExit 28. Colocar la macro en el inicio del ivr y hacer las pruebas correspondientes

Ejercicio 1: Crear una macro con el nombre callmon para implementar el monitoreo de llamadas segn el paso 15. Utilizar la macro para monitorear las llamadas hechas a las extensiones 2001 y 2002. Ejercicio 2: Crear una macro que permita regresar 3 veces al men principal, una vez que se vence el tiempo establecido por waitexten. Una vez terminados estos 3 intentos la lnea deber colgarse(hangup).

Observaciones y Conclusiones

Dpto. de Informtica

Pg. 7

Macros Avanzadas

Programacin Avanzada del plan de discado

________________________________________________________________________ _ ________________________________________________________________________ _ ________________________________________________________________________ _

Dpto. de Informtica

Pg. 8