Funciones

De Asterisk Wiki
Ir a la navegación Ir a la búsqueda
Alert.png 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.

Logo Asterisk

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

CLI> core show function <nombre>


Ejemplo:

CLI> core show function TIMEOUT
-= 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/

CLI> module show like func


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:

# sudo aptitude search libcurl


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:

Archivo: /etc/asterisk/extensions.conf
exten => 100,1,NoOp()
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

  1. Ejemplo mostrar Dirección IP, Leif Madsen (2010)

Véase también

Enlaces Externos