Diferencia entre revisiones de «Introducción Dialplan»

De Asterisk Wiki
Ir a la navegación Ir a la búsqueda
Línea 71: Línea 71:
 
Por ejemplo, si tenemos una extensión con muchas prioridades:
 
Por ejemplo, si tenemos una extensión con muchas prioridades:
  
exten => 111,1,...
+
exten => 111,1,...<br>
exten => 111,n,...
+
exten => 111,n,...<br>
...
+
...<br>
exten => 111,n,...
+
exten => 111,n,...<br>
 
exten => 111,n,...
 
exten => 111,n,...
  
 
Y por cualquier circunstancia quisiéramos ir justamente a la penúltima prioridad de la extensión, añadiendo la etiqueta (penúltima) a esa prioridad, ya tendríamos esa referencia '''penúltima''' para darle el uso a conveniencia en un futuro. Esto es especialmente útil para los saltos condicionales que veremos más adelante.
 
Y por cualquier circunstancia quisiéramos ir justamente a la penúltima prioridad de la extensión, añadiendo la etiqueta (penúltima) a esa prioridad, ya tendríamos esa referencia '''penúltima''' para darle el uso a conveniencia en un futuro. Esto es especialmente útil para los saltos condicionales que veremos más adelante.
  
exten => 111,1,...
+
exten => 111,1,...<br>
exten => 111,n,...
+
exten => 111,n,...<br>
...
+
...<br>
exten => 111,n('''penultima'''),...
+
exten => 111,n('''penultima'''),...<br>
 
exten => 111,n,...
 
exten => 111,n,...
  
 
+
OK
  
 
== Titulo 2 ==
 
== Titulo 2 ==

Revisión del 15:30 13 may 2012

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.


El Plan de Marcación, llamando Dialplan en Asterisk, podría considerarse la columna vertebral del sistema. Como caracteristica principal, podriamos decir que es algo parecido a un lenguaje de script, en el que funciones, aplicacicones y recursos se van intercalando para formar algo parecido a "procedimientos" y "programas" dentro de lo que pudiera considerarse.

Este paradigma de programación orientado a los canales de telefonía es exclusivo en el mundo y aporta todo el potencial y flexibilidad, que las PBX tradicionales no pueden ofrecer, o lo hacen mediante mecanismos de licenciamiento y estructuras en ocasiones demasiado complejas.

Logo Asterisk

Algo tan sencillo como crear un calendario de disponibilidad, suele ser una función que las centrales más nuevas y sofisticadas del mercado solo consiguen aplicando estrategias que en la mayor parte de los casos quedan limitadas a una serie de plantillas que no cubren la totalidad de la posible intención que requiera el cliente. Por ejemplo cuando hablamos de horarios por departamentos, se considera un proceso clásico en Asterisk, que en cambio, en algunas PBX, puede convertirse en un mundo.

Conceptos Esenciales

Para empezar a desarrollar un posible Dialplan, vamos a ver algunos conceptos básicos en los que se fundamenta todo el potencial.

Concepto de Marcación

Cuando hablamos de Plan de Marcación, hacemos referencia literalmente a esto: La Marcación en un teléfono, o dispositivo de cualquier tipo (no tiene que ser necesariamente los clásicos 10 números, sino también empezamos a incluir el concepto de carácter alfanumérico). Una vez realizado el marcado, este, entraría como una "entrada" dentro de nuestro plan de marcación por el contexto que corresponda, en función de como hayamos definido nuestro el canal al que hace referencia nuestro dispositivo SIP, IAX, etc. Dentro de este contexto, la entrada (la marcación que hicimos), empieza a recorrer el script secuencialmente y a partir de ahí pueden surgir una serie de eventos asociados a esa entrada que en cualquier caso siempre suelen tener algo que ver con el mundo de la comunicación, aunque no necesariamente, ya que por ejemplo, podría darse un caso curioso de una aplicación concreta, como es la de al Marcar los números 1-1-1 en nuestro teléfono, y que se encendiera la luz de nuestro despacho.

A cada posibilidad concreta, de un conjunto de marcaciones o marcación individidual se le denomina extensión. Ejemplo, la marcación 1-1-1 sería la extensión 111.

Contextos

Los contextos son la forma de categorizar o englobar , una serie de procedimientos en función de la marcación a la que hacemos referencia desde el dispositivo que la hacemos. La sintaxis típica seria un nombre de contexto englobado entre corchetes, algo asi: [contexto].

Por ejemplo si nuestro dispositivo, que opera a traves del protocolo SIP, le indicamos que al realizar su Marcación, la envíe al contexto [general] dentro de nuestro Dialplan, definiremos que hace una posible marcación realizada en forma de extensión.

Hay que considerar que en caso que un dispositivo no tenga especificado un contexto en concreto, todas sus marcaciones se redirigiran directamente a un contexto genérico llamado [default]

Extensiones

Dentro de los contextos, se van definiendo las posibilidades concretas para un conjunto de marcaciones o como dijimos antes, extensiones.

Para definir una extensión se hace poniendo la palabra "exten =>" delante de la marcación a la que queremos hacer referencia (ejemplo exten => 111). Como comentabamos antes, hay que recordar que el concepto de marcación gracias a Asterisk no solo se limita a caracteres númericos, sino que se expande a los alfanumericos, por tanto la extensión, exten => doe también se podría considerar una extensión valida.

La sintaxis correcta sería: exten => <marcación_de_la_extensión>,<prioridad>,<aplicación>

Las Prioridades las veremos en adelante, las Aplicaciones se ven todo alrededor de este Wiki ya que realmente estas son el verdadero mundo de Asterisk.

Prioridades

Una Extensión, al ser de alguna forma como un lenguaje de script, puede tener varias funciones, o aplicaciones de forma secuencial. Al marcar la extensión 111, si la intención es que prepare la comida del horno, en primer lugar, podríamos requerir que programara la temperatura, en segundo lugar, que programara el tiempo de horneado, y en tercer lugar que lanzara la orden de calentado. Como queremos que este "algoritmo" siga un orden establecido, esto lo hacemos a través de las prioridades, que se conforman en orden secuencial numerico (el 1, el 2, el 3), aunque también podemos hacer una llamada recursiva a un contador interno para que vaya aumentando de forma "automática" (el 1, el 2, el n+1 (3), el n+1 (4) etc).

Siguiendo la sintaxis de las extensiones para ejecutar la orden de horneado seria algo así:

exten => 111,1,Programa_Temperatura()
exten => 111,2,Programa_Tiempo()
exten => 111,3,Encender_Horno()

Pero podemos mejorar esta estructura con si aplicamos el contador que hablábamos antes:

exten => 111,1,Programa_Temperatura()
exten => 111,n,Programa_Tiempo()
exten => 111,n,Encender_Horno()

Con la última versión de Asterisk, la 1.8, para no andar repitiendo constantemente lo de "exten => extension" se introduce una sintaxis nueva que simplifica mucho la vida, con same => (significa algo asi como, "lo mismo que antes").

exten => 111,1,Programa_Temperatura()
same => n,Programa_Tiempo()
same => n,Encender_Horno()

Esta última forma será la que seguiremos en todos los ejemplos al ser la más escueta y correcta a día de hoy.

Etiquetas

Dado que podemos empezar a utilizar los contadores en las prioridades, que ya no asignan un número especifico, puede ser difícil referenciarnos a una prioridad de una extensión en cuestión. Por esto surge el concepto de etiquetas, que junto a las prioridades, podemos darle un nombre a las mismas, y así poder hacer una referencia directa si nos surgiera la necesidad.

Por ejemplo, si tenemos una extensión con muchas prioridades:

exten => 111,1,...
exten => 111,n,...
...
exten => 111,n,...
exten => 111,n,...

Y por cualquier circunstancia quisiéramos ir justamente a la penúltima prioridad de la extensión, añadiendo la etiqueta (penúltima) a esa prioridad, ya tendríamos esa referencia penúltima para darle el uso a conveniencia en un futuro. Esto es especialmente útil para los saltos condicionales que veremos más adelante.

exten => 111,1,...
exten => 111,n,...
...
exten => 111,n(penultima),...
exten => 111,n,...

OK

Titulo 2

Info del Titulo 2

Subtitulo 2.1

Info del Subtitulo 2.1

Subitutlo 2.1.1

Info del Subtitulo 2.1.1 [1]

Subtitulo 2.2

Info del Subtitulo 2.2

Referencias

  1. 10000 Horas, Manuel Camargo (2010)

Véase también

Enlaces Externos