meta data de esta página
  •  

¡Esta es una revisión vieja del documento!


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.

  • En asterisk para el dialplan se utilizan contextos, que se definen con un nombre entre corchetes [ejemplo]
  • Para hacer comentarios colocamos ; la principio de la línea
  • extensiones . Se indican como exten ⇒ Patrón de la extension a marcar,Prioriodad,Aplicación
  • 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.

Patrones

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

Operadores

${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