meta data de esta página

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.

  1. En la primera línea exten⇒ de un contexto debe de tener siempre la prioridad 1
  2. Para las siguientes prioridades y líneas si es para el mismo patrón podemos sustituir el patrón por la palabra same ⇒
  3. 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

[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

  • 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