Dialplan Avanzado

De Asterisk Wiki
Ir a la navegación Ir a la búsqueda
Format.png Formatear
Esta página necesita ser editada para cumplir los requisitos del wiki.
Puedes revisar todas las páginas sin suficiente formato en este enlace.
Alert.png To Do
Esta página necesita ser completada.
Puedes revisar todas las páginas por completar en este enlace.


Toda la parte que podríamos considerar como "Avanzada" del Plan de Marcación de Asterisk es aquella que no es imprescindible para poder realizar instalaciones de pequeña escala, pero se vuelve fundamental cuando empezamos a trabajar de forma intensiva con el sistema Asterisk. Todo lo básico y necesario para montar un sistema funcional podemos verlo en el apartado de Introducción, y profundizando aún mas en las Aplicaciones de uso más común. Con el uso de toda la batería de Módulos de Asterisk podemos diseñar y escalar un sistema de Telefonía totalmente hecho a medida.

Logo Asterisk

Macros

Como su nombre indica, los Macros sirven para simplificar la tarea repetitiva de insertar un conjunto de elementos del script del Plan de Marcación que son comunes para un número elevado de extensiones. Además como característica adicional, los Macros pueden tomar argumentos adicionales, lo que los convierte en una herramienta muy versátil

Sintaxis de Macros

Las macros se componen de dos niveles:

  • La Aplicación Macro que realiza la llamada a la Macro en cuestión
  • La Macro en si, que se forma como un tipo de "Contexto" dentro del Plan de Marcación.

En cuanto a la descripción de la Macro, la sintaxis es sencilla, se especifica como un contexto cualquiera con la siguiente pecularidad:

[macro-<nombre_de_macro>]

Por otro lado dentro de este contexto, se define una extensión por la cual empezará la ejecución del mismo, la extensión de inicio (s, start), y a partir de ahí ya la Macro se trata como si fuera una extensión cualquiera que sigue su curso natural.

En cuanto a la aplicación Macro la sintaxis es sencilla:

  • Macro(<nombre_de_macro>,<argumento_1>[,<argumento_N>])

Podemos especificar cualquier número de argumentos que pasaremos a la Macro en cuestión.

Además podríamos plantearnos el hecho de Anidar estas Macros dentro de otras Macros. Por regla general no se recomienda anidar muchas Macros dado que Asterisk podría sufrir serios problemas de rendimiento. Además considerar como veremos a continuación acerca de las Varibles de Canal y de Macro, que podrían verse afectadas y complicar bastante el concepto. Comentar que el anidamiento esta limitado por el sistema a un máximo de 7 niveles. [1]

Variables Generales de Macros

Si utilizáramos las Variables generales de Asterisk, dentro de una Macro, obtendríamos valores que posiblemente no sean los que buscamos, dado que serían los específicos a la misma. Este caso se da por ejemplo con las variables ${CONTEXT} (que tendríamos el nombre del contexto de la macro, macro-...), ${PRIORITY} la prioridad dentro de la macro, y ${EXTEN}, que será regularmente la s como comentábamos en el apartado anterior.

Por eso surgen variables de Macros especificas para tratar estas situaciones, simplemente con el prefijo MACRO_ delante.

  • ${MACRO_CONTEXT}, si haría referencia al Contexto de donde viene la Macro originalmente
  • ${MACRO_EXTEN}, haría referencia al número de extensión de donde viene la Macro, este es una de las variables más interesantes si queremos asociar extensiones a posiblemente otros aspectos del sistema (como nombres de dispositivo SIP, o nombres de Buzones de Voz.
  • ${MACRO_PRIORIRY}, sería la misma historía que las dos anteriores, prioridad concreta en la que se encuentra antes de saltar al "contexto especifico" de la Macro.

Variables de Argumentos

Como veíamos en la sintaxis de la Aplicación Macro, es posible pasar varios argumentos a la misma. Para poder acceder a ellos dentro de la Macro utilizamos la sintaxis: ${ARG1}, ${ARG2}, ${ARGN}, siendo N el número posible de argumentos especificados en el uso de la aplicación.


Referencias

  1. Asterisk Macros, Digium Inc. (2012)

Véase también

Enlaces Externos