manual practico lab

36
CURSO DE ASTERISK SÁBADO, 14 DE MARZO DE 2009 DIAL PLAN & FEATURES • Dial Plan & Features – Dial Plan: Basic DP simple, DP Interactivo – Dial Plan: Variables, Funciones, Condicionales – Dial Plan: Voicemail, Macros – Asterisk: Features COMANDOS BASICOS ASTERISK Comandos Asterisk: asterisk –r: permite reconectarse al servidor asterisk –g: permite iniciar el servicio asterisk restart now: permite reiniciar el servicio de asterisk stop now: permite detener el servicio asterisk exit: Cierra la consola de asterisk DIAL PLAN BASICS El plan de marcación o “Dial Plan”, es el corazón de toda configuración en asterisk, y de esta configuración dependerá el performace y eficiencia de nuestra central telefónica. Para poder personalizar la central a gusto se deberá comprender plenamente el funcionamiento del plan de marcación de asterisk Sintaxis: El plan de marcación se configura en el archivo extensions.conf, este archivo reside usualmente en la carpeta /etc/asterisk/

Upload: comas-olivos

Post on 07-Nov-2015

272 views

Category:

Documents


0 download

DESCRIPTION

manual basico

TRANSCRIPT

CURSO DE ASTERISKSBADO, 14 DE MARZO DE 2009

DIAL PLAN & FEATURES Dial Plan & Features Dial Plan: Basic DP simple, DP Interactivo Dial Plan: Variables, Funciones, Condicionales Dial Plan: Voicemail, Macros Asterisk: Features

COMANDOS BASICOS ASTERISK

Comandos Asterisk:asterisk r: permite reconectarse al servidorasterisk g: permite iniciar el servicio asteriskrestart now: permite reiniciar el servicio de asteriskstop now: permite detener el servicio asteriskexit: Cierra la consola de asterisk

DIAL PLAN BASICS

El plan de marcacin o Dial Plan, es el corazn de toda configuracin en asterisk, y de esta configuracin depender el performace y eficiencia de nuestra central telefnica.

Para poder personalizar la central a gusto se deber comprender plenamente el funcionamiento del plan de marcacin de asterisk

Sintaxis:El plan de marcacin se configura en el archivo extensions.conf, este archivo reside usualmente en la carpeta /etc/asterisk/

El dial plan esta compuesto de 04 conceptos principalmente:- Contextos- Extensiones- Prioridades- Aplicaciones

CONTEXTOS:El dial plan se divide en secciones llamadas contextos, los contextos son nombres para un grupo de extensiones, las cuales pueden tener diferentes propsitos. Los contextos tambin pueden interactuar entre ellos.

Los contextos se denotan escribiendo el nombre del contexto entre corchetes [nombre_de_contexto].

Durante la creacin de una extensin (sip.conf, iax.conf, etc) se define a que contexto pertenece.

p.e. context=from-internal

Todas las instrucciones por debajo del nombre del contexto son asignadas a ese mismo contexto hasta que un nuevo contexto sea declarado.

Al inicio del archivo extensions.conf, existen dos contextos especiales

-[General]-[Globals]

La seccin general, contiene los parmetros generales del dial plan.

La seccin globals, contiene las variables globales del sistema, las cuales irn siendo utilizadas por los contextos siguientes.

EXTENSIONES:Normalmente conocemos con el nombre de extensin, al numero que se le asigna a los terminales telefnicos, sin embargo en asterisk una extensin es mucho mas que un nmero _ telefnico, ya que define una serie de pasos (donde cada paso contiene una aplicacin) que asterisk realizara durante una llamada.

La sintaxis usada para declarar una extensin es la palabra exten, seguido de una flecha formada por una signo igual y un signo mayor

p.e. exten =>

Esto va seguido por el numero de la extensin.

exten => name,priority,application()

Una extensin completa esta compuesta de:

El nombre (o numero) de la extensin.

La prioridad (cada extensin puede incluir mltiples pasos, el numero del paso es llamado prioridad)

La aplicacin (o comando) es el que realiza la accin en la llamada.

PRIORIDADES:Cada extensin puede tener multiples pasos, llamados prioridades, cada prioridad es numerada secuencialmente, comenzando con 1, y ejecutando una aplicacin especifica.

Existe un tipo de prioridad no numerada que se representa con la letra n y permite evitar problemas generados por la numeracin secuencial.

Esta prioridad no numerada significa que cada prioridad es igual a la prioridad anterior +1

Por lo tanto: n=n+1p.e. exten => 123,1,Answer()exten => 123,n,do somethingexten => 123,n,do something elseexten => 123,n,do one last thingexten => 123,n,Hangup()

PRIORIDADES - ETIQUETAS:

Desde asterisk 1.2, es muy comn asignar etiquetas de texto (labels), a las prioridades. Esto es para asegurarnos que podremos referirnos a esa prioridad por un valor distinto a su numero, el cual probablemente no se conozca (prioridad n), y dado que actualmente el uso de prioridades no numeradas es muy usual en el diseo de una dial plan.

Para asignar una etiqueta de texto a una prioridad, solo basta con agregarla entre parntesis justo despus del numero de la prioridad.

p.e. exten => 123,n(label),application()

APLICACIONES:

Las aplicaciones son el caballito de batalla del dial plan, cada aplicacin realiza una accin especifica sobre el canal actual, como por ejemplo, tocar una meloda, aceptando entradas de tono, marcar un canal, colgar una llamada, y as sucesivamente.

Algunas aplicaciones como Answer() o Hangup(), no requieren mayor informacin para hacer su trabajo, sin embargo existen otras aplicaciones que si requieren de cierta informacin adicional para procesarla, a esta informacin adicional se le conoce como parmetros, y para pasarle los parmetros a la aplicacin deben colocarse entre los parntesis.

Ocasionalmente podramos ver el pipe entre los parntesis, y es que este signo es utilizado para separar mas de un parmetro.

CONSTRUYENDO UN DIAL PLAN SIMPLE:Answer(), Playback(), Hangup()

Vamos a construir un dial plan que consista en que , asterisk contesta la llamada, toca una meloda, y luego cuelga.Para este ejemplo vamos a asumir que ya hemos creado la extensin y que tiene como nombre de contexto from-internal

Para la construccin de este dial plan utilizaremos las siguientes aplicaciones:

Answer()Playback()Hangup()

Answer(), es la aplicacin que se utiliza para que la central conteste una llamada que esta timbrando.

Se puede utilizar al inicio de la configuracin del contexto para una extension, pero en algunas ocasiones no es necesario.

Como ya mencionamos, Anwser() no tiene argumentos

Playback(), es la aplicacin que se utiliza para reproducir un sonido grabado previamente en un archivo o a travs de un canal.

Cuando utilizamos playback, las entradas (inputs) del usuario desde la extension son ignoradas.

Para utilizar playback() se debe ingresar el nombre del archivo sin la extension (p.e. .wav o .mp3) como argumento entre los parntesis.

Por defecto playback buscara el archivo ingresado como argumento en la ruta /var/libs/asterisk/sounds

Si se desea hacer referencia a un archivo ubicado en otra ruta, se deber ingresar la ruta completa entre los parntesis

Playback(/home/john/sounds/filename)

Lo mas comun es crear una carpeta para estos archivos dentro de la ruta por defecto

Playback(custom/filename)

Ahora si vamos a crear nuestro dial plan

[from-internal]exten => 1234,1,Answer()exten => 1234,n,Playback(hello-world)exten => 1234,n,Hangup()

CONSTRUYENDO UN DIAL PLAN INTERACTIVO:Background(), WaitExten(), and Goto()

La aplicacin background, es la pieza vital para un dial plan interactivo.

El background(), al igual que playback() reproduce una grabacin, pero a diferencia de playback(), esta aplicacin si permite al usuario ingresar entradas (inputs) desde el teclado del telfono, estas entradas interrumpen la reproduccin y se dirige a la extensin correspondiente.

El uso mas comn que suele drsele a la aplicacin background, se encuentra en la construccin de mens de voz.

exten => 123,1,Answer()exten => 123,n,Background(main-menu)

En el ejemplo anterior por defecto se cortara la llamada, pero si lo que queremos es esperar a que el usuario ingrese o marque algun codigo podemos agregarle la aplicacin waitexten() al final.

exten => 123,1,Answer()exten => 123,n,Background(main-menu)exten => 123,n,WaitExten()

La aplicacin WaitExten(), le indica al sistema que espere por el ingreso de una extensin, la cual deber estar dentro del contexto.

exten => 123,1,Answer()exten => 123,n,Background(main-menu)exten => 123,n,WaitExten()exten => 2,1,Playback(digits/2)exten => 3,1,Playback(digits/3)exten => 4,1,Playback(digits/4)Que ocurre cuando, tenemos un duplicado entre los primeros digitos de las extensiones disponibles:

p.e.

exten => 123,1,Answer()exten => 123,n,Background(main-menu)exten => 123,n,WaitExten()exten => 1,1,Playback(digits/1)exten => 2,1,Playback(digits/2)exten => 3,1,Playback(digits/3)exten => 4,1,Playback(digits/4)

Del ejemplo anterior si llamamos al 123, y luego presionamos la opcin 123, volveremos a ir al men, pero que ocurre si solo presionamos 1.

Como se puede comprobar en la practica asterisk esperara unos segundos cuando se encuentra con mas de una alternativa posible.

Luego de este tiempo ejecutara la extensin segn los dgitos que fueron ingresados.

Finalmente vamos a mencionar que la aplicacin WaitExten() soporta como argumento el tiempo en segundos que esperara para que el usuario ingrese una extensin valida, luego de este tiempo terminara esta aplicacin, y pasara a la siguiente prioridad si existiera.

Ahora vamos a utilizar la aplicacin Goto().

La aplicacin Goto(), es utilizada para enviar una llamada a otra parte del dial plan, la sintaxis de la aplicacin Goto(), requiere los argumentos contexto, extensin y prioridad.

exten => 123,n,Goto(context,extension,priority)

Background(), WaitExten(), and Goto()

[from-internal]exten => 123,1,Answer()exten => 123,n,Background(main-menu)exten => 1,1,Playback(digits/1)exten => 1,n,Goto(incoming,123,1)exten => 2,1,Playback(digits/2)exten => 2,n,Goto(incoming,123,1)

MANEJANDO INPUTS Y TIMEOUTS

[from-internal]exten => 123,1,Answer()exten => 123,n,Background(enter-ext-of-person)exten => 123,n,WaitExten()exten => 1,1,Playback(digits/1)exten => 1,n,Goto(from-internal,123,1)exten => 2,1,Playback(digits/2)exten => 2,n,Goto(from-internal,123,1)exten => 3,1,Playback(digits/3)exten => 3,n,Goto(from-internal,123,1)exten => i,1,Playback(pbx-invalid)exten => i,n,Goto(from-internal,123,1)exten => t,1,Playback(vm-goodbye)exten => t,n,Hangup()

MANEJANDO INPUTS Y TIMEOUTS

La opcin i, se ejecuta cuando el usuario ingresa una opcin invalida, y cuando se cumple el tiempo mximo disponible para que el usuario marque una extensin, la llamada ser direccionada automticamente hacia la extensin t (el timeout por defecto es de 10 segundos).

Utilizando las opciones i y t, obtenemos un dial plan un poco mas robusto y amigable.

La extensin SCuando una llamada entra en un contexto sin un destino especifico (por ejemplo una llamada en la lnea FXO), se pasa a la extensin s, S significa inicio o start.

La extensin S es muy utilizada para generar mens en la central telefnica.

El siguiente ejercicio intentara mostrar el funcionamiento de la extensin s, haciendo uso de la aplicacin Goto().

[menu]exten => _98,1,Goto(from-pstn,s,1)

[from-pstn]exten => s,1,Answer()exten => s,n,Playback(hello-world)exten => s,n,Hangup()

Habiendo definido esto ahora pasaremos a ver otras aplicaciones muy importantes, como la aplicacin DIAL(), que nos permite comunicar a dos anexos (personas) entre si.

Usando la aplicacin Dial()

La aplicacin Dial(), es una de las aplicaciones mas importantes con las que cuenta asterisk, tiene la capacidad de conectar dos usuarios uno con el otro.

Esto resulta muy til sobre todo cuando los usuarios estn utilizando distintos tipos de medio de comunicacin, por ejemplo.

Por ejemplo podemos utilizar la aplicacin Dial() para comunicar a un usuario que llama desde un telfono analgico a travs de la rede de telefona tradicional, con otro usuario que se puede encontrar en cualquier parte del mundo conectado a travs de Internet con su telfono IP.

La sintaxis de Dial(), es mas compleja que la sintaxis de la funciones anteriores, y puede tener hasta 4 argumentos, el primero el el destino al cual esta intentando conectarte.

Dial(type/identifier, timeout, options, URL)

p.e.exten => 204,1,Dial(SIP/201)exten => 202,1,Dial(IAX2/202)

Tambin se pueden llamar a un conjunto de extensionesp.e.exten => 111,1,Dial(SIP/202&SIP/203&SIP/204)

Usando la aplicacin Dial()

El segundo argumento me permite colocar el tiempo mximo que se ejecutara la aplicacin Dial.

exten => 123,1,Dial(Zap/1,10)exten => 123,n,Playback(vm-nobodyavail)exten => 123,n,Hangup()

El tercer parmetro puede ser una cadena o carcter, la lista de opciones es bastante larga, y pueden encontrarla en el siguiente hipervnculo:

http://www.voip-info.org/wiki/view/Asterisk+cmd+Dial

Usando la aplicacin Dial()p.e.

exten => 123,1,Dial(Zap/1,10,m)exten => 123,n,Playback(vm-nobodyavail)exten => 123,n,Hangup()

El carcter m, permite que el usuario que esta llamando escuche la MOH en lugar del tono de ring, hasta que la llamada sea contestada.

Cuando recibimos una llamada podemos derivarla a un men como el que hemos creado, pero a su vez podemos formar un men mas completo con el comando Dial(), tal como se aprecia en el siguiente ejemplo:

[from-pstn]exten => 123,1,Answer()exten => 123,n,Background(enter-ext-of-person)exten => 123,n,WaitExten()exten => 1,1,Dial(Zap/1,10)exten => 1,n,Playback(vm-nobodyavail)exten => 1,n,Hangup()eten => 2,1,Dial(SIP/Jane,10)exten => 2,n,Playback(vm-nobodyavail)exten => 2,n,Hangup()exten => i,1,Playback(pbx-invalid)exten => i,n,Goto(from-internal,123,1)exten => t,1,Playback(vm-goodbye)exten => t,n,Hangup()

DIAL PLAN: VARIABLES, FUNCIONES, CONDICIONALES

Las variables pueden ser de 03 tipos:

Variables Globales

Variables de Canal

Variables de Entorno

Las variables ayudan a reducir o simplificar el contenido y la estructura del dial plan optimizando de esta manera el proceso de lectura de los archivos de configuracin de nuestra centralita. Tambin sirven para agregar lgica a nuestro dial plan.

Una variable es como un contenedor que puede mantener una valor durante un periodo.

Variables Globales, se aplican a todas las extensiones en todos los contextos, esta variables debern ser declaradas debajo del contexto [globals].

Por ejemplo vamos a guardar el valor SIP/201 en la variable JESUS

[globals]JESUS=SIP/201JESSICA=SIP/202PABLO=SIP/208

exten => 123,1,Dial(${JESUS}&${JESSICA})

Ciertamente el tema de las variables resulta mas interesante cuando las asignamos a las troncales

[globals]

TELEFONICA=ZAP/11977=ZAP/2BASE CLARO=ZAP/3JESUS=SIP/201JUAN=SIP/202

Este tipo de esquema nos permite elaborar un dial plan en funciona a variables y si se produce alguna modificacin en el esquema, solo bastara con cambiar el valor de la variable y no ser necesario modificar todo nuestro dial plan.

Variable de canal, esta variable se asocia solamente con una llamada, y a diferencia de las variables globales, las variables de canal se definen solo para la duracin de la llamada actual, y solo estn disponibles para los canales que participan de esa llamada.

Existen varias variables de canal predefinidas y estn disponibles para ser utilizadas durante la marcacin.

p.e.

exten => 125,1,Set(MAGICNUMBER=42)

Las variables de entorno, son una forma de acceder a las variables del entorno unix desde asterisk, podemos hacer referencia a estas variables a travs de la funciona de marcacin env(), la sintaxis de esta variables es:

${ENV(var)} ; donde var es una variable del entorno de linux o unix a la cual queremos referenciar.

Este tipo de variables no son de uso comn en el dial plan pero estn disponibles si fuesen necesarias.

Patrones de Marcado y Variable ${EXTEN}

Los patrones de marcacin son comodines que nos permiten simplificar un grupo de extensiones, con este tipo de comodines podemos crear reglas que agrupen grandes conjuntos de nmeros en unas cuantas lneas.

X : equivale a un digito 0 9Z : equivale a un digito 1 9N : equivale a un digito 2 9[15-7] : equivale a los dgitos 1, 5, 6, 7.. : Este comodn equivale a un o mas dgitos sin importar el valor

Patrones de Marcado y Variable ${EXTEN}

La variable EXTEN, toma el mismo valor que el numero de la extensin.

exten => _XXXX,1,SayDigits(${EXTEN})

A partir de esta variable tambin podemos mutilar el numero marcado, por ejemplo si seguimos la siguiente sintaxis conseguiremos recortar los primeros dgitos del numero.

${EXTEN:x:y} ; X es la posicin donde comenzara el numero resultante y Y es la cantidad de dgitos que sern retornados

exten => _XXXX,1,SayDigits(${EXTEN:2})

Patrones de Marcado y Variable ${EXTEN}

Los siguientes ejemplos ayudaran a comprender mejor las opciones:

exten => _273443,1,SayDigits(${EXTEN:2}); ${EXTEN:2}=3443exten => _273443,1,SayDigits(${EXTEN:1}); ${EXTEN:1}=73443exten => _9388211,1,SayDigits(${EXTEN:3}); ${EXTEN:3}=8211exten => _9388211,1,SayDigits(${EXTEN:3:2}); ${EXTEN:3:2}=82exten => _9388211,1,SayDigits(${EXTEN:0:1}); ${EXTEN:0:1}=9exten => _9388211,1,SayDigits(${EXTEN:0:2}); ${EXTEN:0:2}=93exten => _9388211,1,SayDigits(${EXTEN:-4:2}); ${EXTEN:0:2}=82

exten => _XXXX,1,SayDigits(${EXTEN:2}), devolver los ltimos 3 dgitos que se hallan marcado

Patrones de Marcado y Variable ${EXTEN}

Un ejemplo mas practico seria el siguiente:

Si queremos que los usuarios marquen el nueve antes del numero que van a llamar como en la mayora de las centrales telefnicas el dial plan seria:

exten => _9.,1,SayDigits(${EXTEN:1}), de esa manera se devolver el numero que se halla marcado pero sin el 9, listo para salir a la red publica de telefona.

Patrones de Marcado y Variable ${EXTEN}

Habilitando una ruta saliente:OUTBOUNDTRUNK=ZAP/1[outbound-local]exten => _9NXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1})exten => _9NXXXXX,n,Congestion()exten => _9NXXXXX,n,Hangup()

Habilitando una llamada a Numero Fijo Local sin prefijo 9:OUTBOUNDTRUNK=ZAP/1[fijo-local]exten => _[2-8]XXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN})exten => _[2-8]XXXXXX,n,Congestion()exten => _[2-8]XXXXXX,n,Hangup()

Patrones de Marcado y Variable ${EXTEN}

Habilitando una ruta saliente a nmeros Fijos LDN:OUTBOUNDTRUNK=ZAP/1[outbound-local]exten => _0[4-8]X[2-8]XXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN})exten => _0[4-8]X[2-8]XXXXX,n,Congestion()exten => _0[4-8]X[2-8]XXXXX,n,Hangup()

Habilitando una llamada a Numero LDI:OUTBOUNDTRUNK=ZAP/1[fijo-local]exten => _00.,1,Dial(${OUTBOUNDTRUNK}/${EXTEN})exten => _00.,n,Congestion()exten => _00.,n,Hangup()

Includes

Es posible concatenar los contexto mediante el comando include, de echo lo mas comn es disear distintos contextos para diferentes funciones de la central y luego enlazarlos para formar unos pocos para asignar a los diferentes tipos de extensiones segn los privilegios o caractersticas que les queremos asignar a cada uno.

Sintaxis:[contextoA]include => contextB

Funciones:

Las funciones nos premitiran aumentar el potencial de nuestro dial plan, exiten varias funciones disponibles y trataremos de explicar las mas utilizadas.

Sintaxis:FUNCTION_NAME(argument)

Al igual que muchas funciones podemos referenciar a la funcion tal como esta escrito en la sintaxis, sin embargo tambien podemos hacer referencia del valor de dicha funcion de la siguiente manera:

${FUNCTION_NAME(argument)}

Funciones:

Una funcin puede encapsular otra funcin:

${FUNCTION_NAME(${FUNCTION_NAME(argument)})}

Ejemplo:

exten => 123,1,Set(TEST=example)exten => 123,n,SayNumber(${LEN(${TEST})})

La funcin Set(), asigna un valor a una variable.La funcin SayNumber(), reproduce el valor de un numeroLa funcin LEN(), devuelve el valor de la longitud de una cadena de letras.

Funciones:

Otra funcin muy utilizada es la funcin TIMEOUT(), la cual puederecibir tres tipos de argumentos, solo uno a la vez:

Absolute; asigna el tiempo absoluto mximo de duracin de la llamada

Digit; asigna el mximo de tiempo entre dgitos que puede tomarse un usuario.

Response; es el tiempo mximo de espera cuando el usuario no ingresa ningn digito.

DIAL PLAN CONDICIONALES

La aplicacin Gotoif()

La clave para lograr una ramificacin condicional entre los contextos de nuestro dial plan es la funcin gotoif(). Gotoif() evala los argumentos ingresados y reenva al llamante a un destino especifico dependiendo si la evaluacin resulto verdadera o falsa.

Sintaxis

GotoIf(expression?destination1:destination2)

Si la expresin resulta verdadera, entonces la llamada saltara hacia el destino 1 si resulta falsa ira hacia el destino 2.

El valor verdadero es representado por el numero 1 y el falso por el numero 0

Los destinos posibles pueden ser los siguientes:

1.- Una prioridad etiquetada dentro de la misma extensin.

2.- Un prioridad etiquetada de otra extensin dentro del mismo contexto.

3.- Una prioridad etiquetada de otra extensin en otro contexto.

Cualquiera de los dos destinos puede ser omitido pero nunca se puede omitir los dos destinos al mismo tiempo.

En caso de que la condicional resulte hacia uno de los destinos omitidos simplemente se proseguir hacia la siguiente lnea o prioridad.

Ejemplo:

exten => 345,1,Set(TEST=1)exten => 345,n,GotoIf($[${TEST} = 1]?uno:dos)exten => 345,n(uno),Saydigits(12)exten => 345,n,Hangup()exten => 345,n(dos),Saydigits(34)exten => 345,n,Hangup()

DIAL PLAN VOICEMAIL

Una de las caractersticas mas populares de los telfonos modernos es el sistema de buzn de voz, y naturalmente asterisk tenia que contar con un sistema de voz muy flexible, algunas de las principales caractersticas del buzn de voz que nos ofrece asterisk son las siguientes:

Contiene distintos flderes para organizar los mensajes en el buzn.Saludos distintos para los estados OcupadoSaludos por defecto, y personalizadosPosibilidad de asociar varios telfonos con un buzn y varios buzones con un telfonoIndicador de mensaje de espera, visual con luz intermitente, y audible con tren de tonos Directorio de la compaa, basado en el buzn de voz.

El archivo de configuracin se llama voicemail.conf

Creando un Buzn:Dentro de cada contexto del correo de voz, definiremos distintos buzones de voz, la sintaxis para definir un buzn de voz es la siguiente:

mailbox => password,name[,email[,pager_email[,options]]]

Pero que funcin cumple cada uno de estos parmetros?

Mailbox: es el numero del buzn de voz, usualmente lleva el mismo numero que la extensin a la que esta asociado.

Password: es la contrasea numrica que el propietario del buzn de voz utilizara para ingresar a su buzn. Si el propietario cambia su contrasea el sistema la actualizara en este archivo (voicemail.conf)

Name: Es el nombre del propietario del buzn de voz, el directorio de la compaa utiliza este campo para realizar la bsqueda del usuario.

Email: Aqu va la direccin de correo electrnico del propietario del buzn de voz, Asterisk puede enviar mensaje al correo, incluyendo el mismo audio del mensaje.

Pager email: direccin de correo del localizador o celular del propietario donde se enviara un mensaje corto.

Options: en esta campo pueden ir una lista de opciones que permitirn afinar la configuracin del buzn de voz del propietario del buzn y prevalecen sobre la configuracin global. Hay nueve opciones validas: adjuntar, servermail, tz, saycid, review, operator, callback, dialout, y exitcontext.

Estas opciones deber ingresarse respetando el formato opcin=valor y separadas por el signo pipe |, la opcin tz permite definir la zona horaria, a las zonas previamente definidas en la seccin [zonemessages] en el mismo archivo (voicemail.conf),

Una definicin tpica para un buzn de voz es la siguiente:

101 => 1234,Joe Public,[email protected],[email protected],tz=central|attach=yes

El buzn de voz utiliza la aplicacin voicemail(), esta aplicacin enva al llamante a una especifico buzn de voz para que pueda dejar el mensaje, el buzn de voz debe ser especificado como mailbox@context donde context es el nombre del contexto del correo de voz, opcionalmente se puede agregar las letra b y u, para diferencias los tipos de saludo (ocupado y no disponible).

Vamos a poner algunos ejemplos de cmo configurar el buzn de voz en nuestro dial plan

exten => 201,1,Dial(${JOHN})

; esta extensin permite llamar a la extensin de Jhon.

exten => 201,1,Dial(${JOHN},10)exten => 201,n,VoiceMail(101@default,u)

; con esta otra podemos hacer que la extensin de jhon timbre durante 10 segundos y si no contesta derivar la llamada al buzn de jhon, y la u indica que Jhon no esta disponible.

Ahora vamos a combinarlo con la aplicacin gotoif()

exten => 201,1,Dial(${JOHN},10)exten => 201,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)exten => 201,n(unavail),Voicemail(101@default,u)exten => 201,n,Hangup()exten => 201,n(busy),VoiceMail(101@default,b)exten => 201,n,Hangup()

Ingresando al buzn de voz:

Para acceder al buzn de voz utilizaremos la aplicacin, VoiceMailMain()

exten => 700,1,VoiceMailMain(); esto nos preemitir ingresar al buzn de voz por medio de la extensin 700.

Otra manera tambin interesante de ingresar al buzn de voz es la siguiente:

exten => _*982XX,1,VoiceMailMain(${EXTEN:3}@default)exten => _*982XX,1,Hangup

Aplicacin Directorio: directory()

Esta aplicacin puede aceptar hasta 3 argumentos, el primero el es contexto dentro del archivo voicemail.conf, donde buscara a los usuarios, el segundo es el contexto en extensions.conf, desde donde intentara llamar a los usuarios, y el tercero (es opcional), puede ser la letra f, por defecto el directorio realiza la bsqueda por el apellido, pero con la letra f se puede configurar el directorio para que realice la bsqueda por nombre.

Por ejemplo:exten => 8,1,Directory(default,from-internal,f)exten => 9,1,Directory(default,from-internal)

DIAL PLAN MACROS

Las macros resultan de mucha ayuda a la hora de elaborar el dial plan, ya que nos permiten simplificar aun mas la elaboracin de nuestro dial plan, es como crear nuestras propias funciones personalizadas para el dial plan, a continuacin vamos a utilizar como ejemplo la creacin de una macros para el buzn de voz.

Observemos el siguiente dial plan:

exten => 201,1,Dial(${JOHN},10)exten => 201,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)exten => 201,n(unavail),Voicemail(101@default,u)exten => 201,n,Hangup()exten => 201,n(busy),VoiceMail(101@default,b)exten => 201,n,Hangup()

En el hemos automatizado la forma como las llamadas ingresaran directamente al buzn de voz dependiendo del estado de la extensin utilizando la variable ${STATUS}, sin embargo as como esta tendramos que agregar estas lneas por cada extensin en la central ya que esta extensin estar siempre ligada hacia el usuario Jhon o sea la extensin 201.

Utilizaremos las macros para mostrar cual es la mejor manera de configurar una buzn de voz para varias extensiones.

Definiendo la macrosLa macros se definen de una manera muy similar a los contextos,debemos definir una macros entre corchetes y anteponiendo la palabramacro- antes del nombre de la macro que vamos a crear.

Ejemplos:

[macro-prueba]

[macro-voicemail]

De esta manera el sistema podr diferenciar una macro de un contextonormal

Definiendo la macros

Veamos un ejemplo con el buzn de Jhon pero ahora dentro de unamacros

[macro-voicemail]exten => s,1,Dial(${JOHN},10)exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)exten => s,n(unavail),Voicemail(101@default,u)exten => s,n,Hangup()exten => s,n(busy),VoiceMail(101@default,b)exten => s,n,Hangup()

Uno punto importante es mencionar que las macros solo soportan laextensin STodo va bien solo que aun seguimos amarrados al buzn de Jhon.

Definiendo la macros

Sin embargo las macros tienen propiedades importantes a comparacinde un contexto comn corriente. Y es que permiten trabajar con algunasvariables adicionales e incluso soportan el envi de argumentos

Incorporando una macros al Dial Plan:

exten => 201,1,Macro(voicemail)

Las aplicacin macro define variables especiales, para su utilizacin:

${MACRO_CONTEXT}, contiene el contexto original desde donde fue ejecutada la macro

${MACRO_EXTEN}, contiene el valor de la extensin original donde fue ejecutada la macro

${MACRO_PRIORITY}, contiene la prioridad original desde donde fue ejecutada la macro

${ARGn}, contiene el n mismo argumento ingresado a travs de la macro, por ejemplo, el primer argumento ser ${ARG1}, el segundo argumento ser {ARG2} y as sucesivamente.

En el siguiente ejemplo trataremos de explicar como se pueden utilizar esta variables especiales:

[macro-voicemail]exten => s,1,Dial(${JOHN},10)exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)exten => s,n(unavail),Voicemail(${MACRO_EXTEN}@default,u)exten => s,n,Hangup()exten => s,n(busy),VoiceMail(${MACRO_EXTEN}@default,b)exten => s,n,Hangup()

Usando argumentos en las macros

Ahora vamos a prepara una macros genrica gracias a los argumentos, observemos el siguiente ejemplo donde por fin separamos la macros del numero de la extensin, para poder utilizarla desde cualquier extensin.

[macro-voicemail]exten => s,1,Dial(${ARG1},10)exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)exten => s,n(unavail),Voicemail(${MACRO_EXTEN}@default,u)exten => s,n,Hangup()exten => s,n(busy),VoiceMail(${MACRO_EXTEN}@default,b)exten => s,n,Hangup()

De esta manera podemos llamar a la macros desde el dial plan

[macro-voicemail]exten => s,1,Dial(${ARG1},10)exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)exten => s,n(unavail),Voicemail(${MACRO_EXTEN}@default,u)exten => s,n,Hangup()exten => s,n(busy),VoiceMail(${MACRO_EXTEN}@default,b)exten => s,n,Hangup()

[from-internal]exten => 101,1, Macro(voicemail,${JOHN})exten => 102,1,Macro(voicemail,${JANE})exten => 103,1,Macro(voicemail,${JACK})

Incluso podemos simplificar una vez mas utilizando la variable ${EXTEN}

[macro-voicemail]exten => s,1,Dial(SIP/${ARG1},10)exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)exten => s,n(unavail),Voicemail(${MACRO_EXTEN}@default,u)exten => s,n,Hangup()exten => s,n(busy),VoiceMail(${MACRO_EXTEN}@default,b)exten => s,n,Hangup()

[from-internal]exten => 1XX,1,Macro(voicemail,${EXTEN})

Solo debemos tomar en cuenta que en esta ocasin estamos amarrados al protocolo SIP, en el ej. Anterior no importaba el tipo de canal utilizado ya que este se declaraba como variables globales.

Un ejemplo mas avanzado he interesante de analizar es el siguiente:

[macro-voicemail]exten => s,1,Dial(${ARG1},20)exten => s,n,Goto(s-${DIALSTATUS},1)exten => s-NOANSWER,1,Voicemail(${MACRO_EXTEN},u)exten => s-NOANSWER,n,Goto(incoming,s,1)exten => s-BUSY,1,Voicemail(${MACRO_EXTEN},b)exten => s-BUSY,n,Goto(incoming,s,1)exten => _s-.,1,Goto(s-NOANSWER,1)

En esta ocasin estamos incluyendo el comando Goto y esto nos puede servir para reenviar la llamada hacia un men por ejemplo donde el usuario llamante tenga mas de una opcin.

ASTERISK: FEATURES

Podemos configurar algunas caractersticas adicionales en el archivo features.conf.

Las caractersticas principales son las siguientes:

Transferencia desatendida (blind transfer)Parqueo de llamadas (parking lot)Grupo para jalar llamadas (pickup group)Sala de conferencias (meetme)

Para ello ser necesario que editemos el archivo features.conf ubicado en la carpeta de asterisk.

TRANSFERENCIAS DESATENDIDA

Normalmente por defecto la transferencia desatendida se realiza presionado el boton #

Este tipo de transferencia consiste en derivar la llamada hacia otro anexo sin habernos cerciorado antes si la persona en la extensin destino se encuentra disponible para recibir la llamada.

Vamos a editar el archivo de la ruta /etc/asterisk/features.confDonde buscaremos el parmetro blind transfer y cambiaremos el varo # por ##, con esto conseguiremos evitar problemas con las llamadas hacia nmeros que comiencen con la tecla # como los mviles RPM por ejemplo.

El siguiente grafico ilustrara mejor el proceso de comunicacin

Realizar una transferencia atendida, consiste en llamar al destino para confirmar la transferencia, antes de realizarla.Este tipo de transferencia suele ser necesario para trabajadores que no acostumbran contestar ni llamar directamente de su extensin, tales como funcionarios, gerentes, ejecutivos, etc.

El siguiente grafico nos ilustrara el proceso de comunicacin.

Se puede habilitar una combinacin para la transferencia atendida, por ejemplo *2 para simular la tecla flash

PARQUEO DE LLAMADAS

En algunas ocasiones durante una conversacin telefnica es necesario movilizarnos ( para ir a conseguir un archivo, documento, o realizar alguna consulta), pero lamentablemente no es posible ni practico que todos los usuario cuenten con un anexo inalmbrico, en estos casos es ideal contar con la funcin de parqueo de llamadas.

Esta funcin consiste en aparcar una llamada en una extensin virtual dentro de nuestra central telefnica, de esta manera podremos recuperar esa llamada simplemente llamando a la extensin virtual creada en el momento que aparcamos la llamada

Esta funcin se habilita en la seccin [general]

Y cuenta con los siguientes parmetros:

Parkext => 700 donde 700 es el numero de la extensin de entrada al estacionamiento

Parkpos => 701-720, aqu definimos el rango de posiciones apra nuestro estacionamiento

Context => parkedcalls, aqu definimos el nombre del contexto en para nuestro estacionamiento, no olvidar que este contexto debe estar incluido (include) en el contexto de las extensiones que queramos que puedan recuperar llamadas desde el estacionamiento.

Parkingtime => 180, este ser el tiempo mximo en segundos que una llamada se mantendr en el estacionamiento.

PICKUP GROUP

Un Pick up group es un grupo conformado por extensiones con autorizacin para jalarse las llamadas, es decir; estas extensiones podrn contestar llamadas dirigidas hacia cualquier anexo de su grupo, pero marcando previamente un cdigo.

Por ejemplo si tenemos dos extensiones en un mismo grupo, y llaman a una de ellas pero justo no se encuentra la persona en su extensin, entonces otra persona podr contestar la llamadas desde su extensin (siempre que este dentro del mismo pickup group) con solo presionar: *8

Esta opcin tambin se encuentra en la seccin general y podemos definir o modificar el cdigo por defecto *8 en el parmetro:

Pickupexten = *8

Pero ser necesario tambin que asignemos los grupos a cada extensin en el archivo sip.conf.

El grupo puede asignarse mediante los parmetros:Callgroup=1, donde 1 es el nmero del grupo de llamadaPickupgroup=1, donde 1 es el nmero del grupo para pickup

PUBLICADO PORWILLIAM VALVERDEEN21:09ETIQUETAS:BASIC DP SIMPLE,CONDICIONALES,DIAL PLAN,DP INTERACTIVO,FUNCIONES,MACROS,VARIABLES,VOICEMAIL0 COMENTARIOS:

PUBLICAR UN COMENTARIO EN LA ENTRADA

Entrada ms reciente

HYPERLINK "http://curso--de-asterisk.blogspot.com/2009/03/configuracion-de-equipos-terminales.html" \o "Entrada antigua" Entrada antigua

HYPERLINK "http://curso--de-asterisk.blogspot.com/" Pgina principalSuscribirse a:Enviar comentarios (Atom)ARCHIVO DEL BLOG

HYPERLINK "http://curso--de-asterisk.blogspot.com/search?updated-min=2009-01-01T00:00:00-08:00&updated-max=2010-01-01T00:00:00-08:00&max-results=6" 2009(6)

HYPERLINK "http://curso--de-asterisk.blogspot.com/2009_03_01_archive.html" marzo(6)

ASTERISK GUI DIAL PLAN & FEATURES CONFIGURACION DE EQUIPOS TERMINALES LINEAS Y ANEXOS: CANALES ZAP - SIP IAX INSTALACION Y SERVIDOR BASE CURSO DE ASTERISK