Funciones
To Do Esta página necesita ser completada. Puedes revisar todas las páginas por completar en este enlace. |
Las funciones, son un tipo de módulos de Asterisk que sirven exclusivamente para aportar una mejoría de algún tipo a las aplicaciones principales. En si no son imprescindibles, pero es fundamental utilizarlas para alcanzar un perfeccionamiento general del sistema.
Sumario
Sintaxis
Las funciones utilizan exactamente la misma sintaxis que las variables, de hecho exactamente la misma sintaxis que las variables compartidas (SHARED).
- Para asignar un valor sería utilizando la Aplicación Set: Set(TIMEOUT(absolute)=1000)
- Para ver el valor que tiene la función, simplemente ${TIMEOUT(absolute)}
A priori pueden parecer funciones, pero tienen una estructura "funcional" y de procesamiento en su interior lo suficientemente compleja, dado que son modulos. Puede verse su metodo de operación desde la interfaz CLI utilizando el siguiente comando
Ejemplo:
-= Info about function 'TIMEOUT' =-
[Synopsis]
Gets or sets timeouts on the channel. Timeout values are in seconds.
Podemos ver todas las funciones disponibles si las buscamos como módulos dado que realmente son ficheros del tipo "func_timeout.so" dentro de /usr/lib/asterisk/modules/
Funciones Principales
Existen muchas funciones, pero las más comunes son las siguientes
TIMEOUT
Dentro del apartado Introducción Dialplan existe unos tipos de extensiones especiales llamadas "t" y "T" que se activan, cuando el valor fijado para esta función llega a 0. Existen distintos valores para asignar a la funcion TIMEOUT.
- TIMEOUT(absolute): afecta a la extensión "T" (timeout absoluto), se especifica en segundos, y cuando la cuenta llega a 0 se ejecuta esta extensión forzosamente en el contexto que nos encontremos.
- TIMEOUT(response): afecta al tiempo de "respuesta" del usuario, marcando teclas, cuando es solicitado a hacerlo. En caso que el tiempo cumpla, exactamente igual que absolute, pero se dirigiria a la extensión "t" (timeout relativo)
- TIMEOUT(digit): tiempo total disponible para marcar cada dígito antes que se considere una secuencia completa de digitos, y se haga la asociación dentro del dialplan. En caso que eventualmente cumpla este tiempo, y no hayamos pulsado la extensión deseada, es posible que la marcación hasta ese momento no sea asociable a ninguna extensión, asi que, al igual que al pulsar cualquier combinación inexistente, nos redirigiría a la extensión "i" (invalida).
CDR
Existe una función especifica, que almacena todos los posibles valores que puede tomar el Registro Llamadas y Eventos.
Los posibles valores que puede tomar por defecto son los siguientes:
- start
- clid
- dcontext
- channel
- dstchannel
- lastapp
- lastdata
- duration
- billsec
- disposition
- amaflags
- accountcode
- uniqueid
- userfield
- test
Aparte de considerar los posibles valores especificos que podría tomar si utilizaramos el sistema CDR Adaptativo.
CURL
Es considerada una de las funciones más sencillas para integrar un sistema IVR en nuestra máquina Asterisk.
Su esencia se basa en las librerías cURL, depende la versión que se encuentre, en el momento de escribir esto, la versión 4. Para más información sobre librerías cURL disponible (suelen tener un formato tipo libcurlX-openssl-dev siendo X la versión) aunque lo ideal sería ejecutar:
Su sintaxis es la siguiente: CURL(<url>), pasamos una dirección URL, y nos devuelve toda la salida en el formato que este definida por la web que conectemos en cuestión, sea código HTML, XML, etc..., pero en formato texto accesible por nuestra máquina Asterisk.
Por ejemplo [1] con este desarrollo en el Plan de Marcación podríamos escuchar nuestra dirección IP pública:
same => n,Answer()
same => n,Set(direccionip={CURL(http://wikiasterisk.com/ip.php)})
same => n,SayAlpha(${direccionip})
same => n,Hangup()
Funciones ODBC
Por completar en un futuro
Referencias
- ↑ Ejemplo mostrar Dirección IP, Leif Madsen (2010)
Véase también
Enlaces Externos
- Lista de Funciones en asterisk, en Ingles, ofrecido por VoipInfo, Tilghman Lesher (2005)