You are on page 1of 15

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

Centrales Asterisk

CONCEPTO

SERVIDOR

LINEAS Y ANEXOS

TERMINALES

DIAL PLAN

ASTERISK GUI

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 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.

1 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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+1
p.e. exten => 123,1,Answer()
exten => 123,n,do something
exten => 123,n,do something else
exten => 123,n,do one last thing
exten => 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:

2 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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.

3 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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
exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>
=>

123,1,Answer()
123,n,Background(main-menu)
123,n,WaitExten()
1,1,Playback(digits/1)
2,1,Playback(digits/2)
3,1,Playback(digits/3)
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()

4 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

123,n,Background(enter-ext-of-person)
123,n,WaitExten()
1,1,Playback(digits/1)
1,n,Goto(from-internal,123,1)
2,1,Playback(digits/2)
2,n,Goto(from-internal,123,1)
3,1,Playback(digits/3)
3,n,Goto(from-internal,123,1)
i,1,Playback(pbx-invalid)
i,n,Goto(from-internal,123,1)
t,1,Playback(vm-goodbye)
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 S
Cuando 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 extensiones
p.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.

5 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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/201
JESSICA=SIP/202
PABLO=SIP/208
exten => 123,1,Dial(${JESUS}&${JESSICA})
Ciertamente el tema de las variables resulta mas interesante cuando las asignamos a las troncales

6 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

[globals]
TELEFONICA=ZAP/1
1977=ZAP/2
BASE CLARO=ZAP/3
JESUS=SIP/201
JUAN=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 9
Z : equivale a un digito 1 9
N : 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
exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>
=>

_273443,1,SayDigits(${EXTEN:2}); ${EXTEN:2}=3443
_273443,1,SayDigits(${EXTEN:1}); ${EXTEN:1}=73443
_9388211,1,SayDigits(${EXTEN:3}); ${EXTEN:3}=8211
_9388211,1,SayDigits(${EXTEN:3:2}); ${EXTEN:3:2}=82
_9388211,1,SayDigits(${EXTEN:0:1}); ${EXTEN:0:1}=9
_9388211,1,SayDigits(${EXTEN:0:2}); ${EXTEN:0:2}=93
_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

7 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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:

8 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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 numero
La funcin LEN(), devuelve el valor de la longitud de una cadena de letras.
Funciones:
Otra funcin muy utilizada es la funcin TIMEOUT(), la cual puede
recibir 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
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>

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

DIAL PLAN VOICEMAIL

9 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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 Ocupado
Saludos por defecto, y personalizados
Posibilidad de asociar varios telfonos con un buzn y varios buzones con un telfono
Indicador 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,jpublic@somedomain.com,jpublic@pagergateway.net,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()

10 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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

=>
=>
=>
=>
=>
=>

201,1,Dial(${JOHN},10)
201,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)
201,n(unavail),Voicemail(101@default,u)
201,n,Hangup()
201,n(busy),VoiceMail(101@default,b)
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 macros
La macros se definen de una manera muy similar a los contextos,
debemos definir una macros entre corchetes y anteponiendo la palabra
macro- 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 contexto
normal

11 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

Definiendo la macros
Veamos un ejemplo con el buzn de Jhon pero ahora dentro de una
macros
[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 la
extensin S
Todo va bien solo que aun seguimos amarrados al buzn de Jhon.
Definiendo la macros
Sin embargo las macros tienen propiedades importantes a comparacin
de un contexto comn corriente. Y es que permiten trabajar con algunas
variables 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)

12 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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.conf
Donde 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

13 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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]

14 de 15

18/02/2015 13:23

Centrales Asterisk: DIAL PLAN & FEATURES

http://centralesasterisk.blogspot.com/2009/08/dial-plan-features.html

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 llamada
Pickupgroup=1, donde 1 es el nmero del grupo para pickup
|

Entrada ms reciente

Pgina principal

Entrada antigua

Copyright emeese 2008 Centrales Asterisk | Diseo de Arcsin Web Templates - Plantilla blogger por Blog and Web

15 de 15

18/02/2015 13:23

You might also like