Está en la página 1de 2

10.6 Bifurcaciones, variables locales y variables globales.

La aplicación Gotolf() permite hacer bifurcaciones en la ejecución del Dialplan en función del valor que
toma una variable. La sintaxis es:
Gotolf(expresión?destino1:destino2)

La aplicación Gotolf() evalúa la expresión indicada y si es cierta, la ejecución del Dialplan salta a un
punto determinado del mismo y, si es falsa, salta a otro punto. Estos saltos en la ejecución del Dialplan
son similares a los saltos de ejecución que existen en cualquier lenguaje de programación y el destino
puede ser una prioridad cualquiera dentro del contexto actual o puede ser una prioridad en otro contexto
diferente.
La expresión que se evalúa en la aplicación Gotolf() suele ser una variable local o una variable global, a
las que se puede asignar tanto un numero como una cadena alfanumérica. La asignación e un valor a
una variable se lleva a cabo mediante la aplicación Set():
-Para las variables locales Set(nombre-variable= valor) y solo son válidas en el contexto donde están
definidas.

-Para las variables globales Set(GLOBAL(nombre-variable)=valor), y son válidas en todo el Dialplan.


En el ejemplo del libro, la extensión de operadora activa su estado de no molestar marcando el número
60 y lo desactiva marcando el número 61, modificando en ambos casos el valor de una variable. En las
llamadas a esta extensión, la aplicación Dial() de llamada a la extensión de operadora o por otro punto
en donde está la aplicación Playback() que reproduce un mensaje de audio indicando el estado de no
molestar de la extensión. Este mensaje de audio puede ser uno de los disponibles en Asterisk, como do-
not-disturb, o puede ser un mensaje personalizado grabado con la aplicación Record().

La aplicación Hangu() tienen pleno sentido en las bifurcaciones finalizando cada una de las ramas de
ejecución. Si las ramas no están finalizadas con esta aplicación falla la lógica del Dialplan, ya que al
continuar la ejecución por la primera rama, también se ejecuta la segunda.

Cuando se produce un reinicio de Asterisk las variables locales y globales pierden el valor asignado, por
lo que se pierde también el estado de <<no molestar>> que tenía la extensión antes del reinicio.

Asterisk incorpora una base de datos que permite asignar valores a variables de forma permanente y
que permanecen incluso ante un reinicio del sistema. El uso de esta base de datos permite implementar
funciones que no es posible llevar a cabo solo con variables locales y globales.

10.7 Base de datos de Asterisk


Asterisk incluye en su núcleo una base de datos en la que puede almacenar y recuperar información. La
base de datos (SQlite3) almacena la información en unas variables denominadas claves, que están
agrupadas en familias.
La escritura en la base de datos se lleva a cabo asignando un valor a una clave de una determinada
familia mediante la aplicación Set().
Escritura: Set(DB(familia/clave)=valor)

La lectura se lleva a cabo asignando a una variable el contenido de una clave de una determinada
familia también mediante la aplicación Set().
Lectura: Set(variable=$(DB(familia/clave))

La base de datos de Asterisk permite implementar funciones como el desvío de llamadas, en la que
cada extensión puede guardar en la base de datos su número de extensión de desvío cuando está
desviada. Al llamar a una extensión, se consulta en la base de datos el número asignado y se llama a
ese número mediante la aplicación Dial(). En el siguiente diagrama las extensiones utilizan el código
40XXX para almacenar en la base de datos el número de extensión de desvío y el código 41 para
anularlo.

La variable de Asterisk$ (CALLERID)(num) contiene el número de la extensión que llama, y la variable $


(EXTEN:2) contiene los tres últimos dígitos marcados por el usuario al activar el desvío. El
funcionamiento es el siguiente:
-Cada extensión tiene asignada una clave en la base de datos identificada por el propio número de la
extensión.

Esta clave puede contener el número correspondiente a otra extensión (desvío activado) o el número
correspondiente a ella misma (desvío no activado).
-Una extensión activa el desvío marcando el número 40XXX. La aplicación Set() asigna a su clave en la
base de datos en valor XXX, que es el número de desvío. En la anulación del desvío se asigna el
verdadero número a la clave de extensión.

-En la llamada a una extensión se busca en la base de datos el valor asignado a su clave, que puede
ser el verdadero número o el de desvío, y se marca mediante la aplicación Dial().

También podría gustarte