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.
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 :
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: 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.
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 |
[Moviles] ;Inicio del contexto de llamadas a móvil exten => _[67]XXXXXXXX,1,Noop(Llamadas a Moviles) same => n,Dial(SIP/Trunkmoviles/${EXTEN},20,r) same => n,Hangup() ;Fin del contexto Moviles [Fijos] ;Inicio del contexto Llamadas a Fijos exten => _[89]ZXXXXXXX,1,Noop(Llamadas a Fijos) same => n,Dial(SIP/Trunkfijos/${EXTEN},20,r) same => n,Hangup() ;Fin del contexto Fijos [Internacionales] ;Inicio del contexto Llamadas a Internacionales exten => _00.,1,Noop(Llamadas Internacionales) same => n,Dial(SIP/Trunkinternacional/${EXTEN},20,r) same => n,Hangup() ;Fin del contexto Internacionales
Explicación del ejemplo