Dialplan

El Dialplan se fundamenta principalmente en el archivo /etc/asterisk/extensions.conf , aunque se pueden incluir archivos auxiliares adicionales.

Es un fichero en el cual se define cómo se van a comportar las llamadas que entran y salen del asterisk. Está compuesto por: contextos, extensiones, prioridades y aplicaciones.

Contextos

Un contexto es una sección del dialplan y se definen usando un nombre entre corchetes [ejemplo]. Distingue entre mayúsculas y minúsculas y podemos usar como nombre las letras de la A-Z, los números de 0-9 y los guiones -_

Un contexto empieza con su nombre entre corchetes y no termina hasta que se encuentre con la definición del siguiente contexto.

Inmediatamente después del nombre del contexto definimos las instrucciones que forman parte de nuestra lógica de extensiones.

Cada línea generalmente comienza con la instrucción exten ⇒ Patrón de la extension a marcar,Prioriodad,Aplicación donde :

Podemos hacer comentarios dentro de un contexto colocando ; al principio de la línea

Patrones

Como patrón de marcado, además de usar números podemos usar

X	Cualquier dígito del 0 y 9
Z	Cualquier dígito del 1 a 9
N	Cualquier dígito de 2 a 9
[12347-9]	Los dígitos entre corchetes. Se puede utilizar también el - para indicar un rango de números
*	El comodín equivale a cualquier número
.	Coincide con 1 o más carácteres
!	Coincide con 0 o más carácteres

Prioridad

Prioridad: cada extensión puede tener varias instrucciones por lo que se tiene un número de prioridad que define el orden en el cual serán ejecutadas.

En la primera línea exten⇒ de un contexto debe de tener siempre la prioridad 1

Para las siguientes prioridades y líneas si es para el mismo patrón podemos sustituir el patrón por la palabra same ⇒

Para escribir la siguiente prioridad lo podemos hacer de modo numérico o simplemente poniendo una n de next en el sitio de la prioridad que le sumaría 1 a el número de la prioridad anterior.

Aplicación

Aplicación: son acciones de Asterisk. (Answer(), HungUp(),Dial())

${variable}	obtenemos el valor de la variable que previamente hemos definido
AGI	Permite lanzar scripts o aplicaciones externas
Answer([delay,[nocdr]])	Responde a una llamada entrante
Background	Reproduce una locución
Busy	Indica que la extensión destino está ocupada
Congestion	congestión
Dial(Tecnologia/Trunk/Destino,Timeout,opciones)	Lanza una llamada
Gosub([context,[exten,]]priority[(arg1,[…][argN]]))	Salta al punto del dialplan indicado y vuelve cuando encuentra un return
Goto([context,[extensions,]]priority)	Salta a un punto del dialplan
Hangup	Colgar
NoOp([text])	no hace nada .
Playback (archivo)	permite escuchar un archivo de sonido, pero no se permite marcar una extensión, hasta que no acabe la locución.
Queue
Read	lee un valor y lo almacena en una variable
Record	graba en un fichero
Set(name=value)	Asigna un valor a una variable
verbose	enviar un mensaje a la salida verbose
voicemail
voicemailmain
wait
waitexten	espera un tiempo a que el usuario introuzca una extensión

Ejemplo

Explicación del ejemplo

exten ⇒ _[67]XXXXXXXX,1,Noop(Llamadas a Moviles)
El número marcado empezará por 6 o por 7 seguido de 8 números del 0-9 con prioridad 1
Noop hace que aparezca en la consola de asterisk el texto que hemos puesto entre paréntesis. Sirve entre otras cosas para ir debugenado por donde va el dialplan

same ⇒ n,Dial(SIP/Trunkmoviles/${EXTEN},20,r)
same⇒n La n de next sería lo mismo que poner _[67]XXXXXXXX y prioridad 2
Dial(SIP/Trunkmoviles/${EXTEN},20,r) indica que usaremos SIP para la llamada. usando como salida el trunk llamado trunkmoviles hacia el número definido en la variable ${EXTEN}, durante 20sg y escucharemos un tono de llamada

La lista completa de opciones de Dial puede ser vista poniendo show application Dial en la consola de Asterisk

same ⇒ n,Hangup() Colgaremos la llamada

Referencias

https://proyectos.interior.edu.uy/projects/voip/wiki/DialPlan_o_Plan_de_marcaci%C3%B3n_(reglas_de_marcado_generales)

https://www.minestron.it/asterisk-desconsolado/configuraciones-generales-general-settings

http://ipphonet.com/explicacion-de-dialplan-basico-en-asterisk-pbx/

http://jimenezra.blogspot.com/2011/01/teoria-de-contextos-en-asterisk-parte-i.html

http://jimenezra.blogspot.com/2011/02/teoria-de-contextos-de-asterisk-parte.html

https://www.voztovoice.org/?q=node/50

http://telefonia.blog.tartanga.eus/2016/08/30/configuracion-practica-de-asterisk-1a-parte-la-aplicacion-dial/