meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
voip:asterisk:dialplan [2019/10/09 15:41] lcvoip:asterisk:dialplan [2023/01/18 14:37] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
 ===== Dialplan ===== ===== 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.   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 **-_**
  
-  * En asterisk para el dialplan se utilizan contextos, que se definen con un nombre entre corchetes [ejemplo] +Un contexto empieza con su nombre entre corchetes y no termina hasta que se encuentre con la definición del siguiente contexto
-  * 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 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** en el sitio de la prioridad.+
  
 +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 :
 +
 +<note tip> Podemos hacer comentarios dentro de un contexto colocando **;** al principio de la línea </note>
  
  
 ==== Patrones ==== ==== Patrones ====
-| X          | Cualquier dígito del  0 y 9                                                                   | +Como patrón de marcado, además de usar números podemos usar  
-| Z          | Cualquier dígito del 1 a 9                                                                    | +|** X**          | Cualquier dígito del  0 y 9                                                                   | 
-| N          | Cualquier dígito de 2 a 9                                                                     | +|** **         | Cualquier dígito del 1 a 9                                                                    | 
-| [12347-9]  | Los dígitos entre corchetes. Se puede utilizar también el - para indicar un rango de números  |+|** 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                                                        | | *          | El comodín equivale a cualquier número                                                        |
-| .          | Coincide con 1 o más carácteres                                                               | +****         | Coincide con 1 o más carácteres                                                               | 
-| !          | Coincide con 0 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. 
  
-==== Operadores ==== +==== Aplicación ==== 
-| ${variable}                                            | obtenemos el valor de la variable que previamente hemos definido              +Aplicación: son acciones de Asterisk. (Answer(), HungUp(),Dial()) 
-| AGI                                                    | Permite lanzar scripts o aplicaciones externas                                +| ${variable}                                            | obtenemos el valor de la variable que previamente hemos definido                                                 
-| Answer([delay,[nocdr]])                                | Responde a una llamada entrante                                               +| AGI                                                    | Permite lanzar scripts o aplicaciones externas                                                                   
-| Background                                             | Reproduce una locución                                                        +| Answer([delay,[nocdr]])                                | Responde a una llamada entrante                                                                                  
-| Busy                                                   | Indica que la extensión destino está ocupada                                  +| Background                                             | Reproduce una locución                                                                                           
-| Congestion                                             | congestión                                                                    +| Busy                                                   | Indica que la extensión destino está ocupada                                                                     
-| Dial(Tecnologia/Trunk/Destino,Timeout,opciones)        | Lanza una llamada                                                             +| Congestion                                             | congestión                                                                                                       
-| Gosub([context,[exten,]]priority[(arg1,[...][argN]]))  | Salta al punto del dialplan indicado y vuelve cuando encuentra un **return**  +| Dial(Tecnologia/Trunk/Destino,Timeout,opciones)        | Lanza una llamada                                                                                                
-| Goto([context,[extensions,]]priority)                  | Salta a un punto del dialplan                                                 +| Gosub([context,[exten,]]priority[(arg1,[...][argN]]))  | Salta al punto del dialplan indicado y vuelve cuando encuentra un **return**                                     
-| Hangup                                                 | Colgar                                                                        +| Goto([context,[extensions,]]priority)                  | Salta a un punto del dialplan                                                                                    
-| NoOp([text])                                           | no hace nada .                                                                +| Hangup                                                 | Colgar                                                                                                           
-| Queue                                                  |                                                                               +| NoOp([text])                                           | no hace nada .                                                                                                   | 
-| Read                                                   | lee un valor y lo almacena en una variable                                    +| Playback (archivo)                                     | permite escuchar un archivo de sonido, pero no se permite marcar una extensión, hasta que no acabe la locución.  
-| Record                                                 | graba en un fichero                                                           +| Queue                                                  |                                                                                                                  
-| Set(name=value)                                        | Asigna un valor a una variable                                                +| Read                                                   | lee un valor y lo almacena en una variable                                                                       
-| verbose                                                | enviar un mensaje a la salida **verbose**                                     +| Record                                                 | graba en un fichero                                                                                              
-| voicemail                                              |                                                                               +| Set(name=value)                                        | Asigna un valor a una variable                                                                                   
-| voicemailmain                                          |                                                                               +| verbose                                                | enviar un mensaje a la salida **verbose**                                                                        
-| wait                                                                                                                                 +| voicemail                                              |                                                                                                                  
-| waitexten                                              | espera un tiempo  a que el usuario introuzca una extensión                    |+| voicemailmain                                          |                                                                                                                  
 +| wait                                                                                                                                                                    
 +| waitexten                                              | espera un tiempo  a que el usuario introuzca una extensión                                                       |
  
 ==== Ejemplo ==== ==== Ejemplo ====
Línea 68: Línea 82:
 Explicación del 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    *** 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 _[64]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+  * **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 
 +<note>La lista completa de opciones de Dial puede ser vista poniendo **show application Dial** en la consola de Asterisk</note>
   * **same => n,Hangup()** Colgaremos la llamada   * **same => n,Hangup()** Colgaremos la llamada
  
 ===== Referencias ===== ===== 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   * https://www.minestron.it/asterisk-desconsolado/configuraciones-generales-general-settings
   * http://ipphonet.com/explicacion-de-dialplan-basico-en-asterisk-pbx/   * 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/