AGI

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.


Asterisk Gateway Interface (AGI), o Interfaz Pasarela de Asterisk, es una interfaz del sistema Asterisk, que permite la comunicación con sistemas terceros, pero a diferencia de AMI, lo hace de forma directa, dado que ejecuta un script a voluntad, tan pronto la aplicación AGI sea invocada.

Logo Asterisk

Funcionamiento

La interfaz AGI, fue diseñada originalmente, para servir de pasarela entre los distintos lenguajes de programación y Asterisk específicamente, los canales de comunicación especialmente.

El funcionamiento de AGI es relativamente sencillo:

  • Primero hay que establecer una pasarela, entre el canal en curso, y un script ejecutable a voluntad.
  • Cuando la conexión se establece, lanza una serie de variables al script ejecutado, que son accesibles desde el mismo. La mayoría de estas variables tienen algo que ver con el canal
  • El script puede ejecutar cualquier algoritmo, y entre sus secuencias, puede ejecutar comandos específicos de AGI para influenciar en el flujo de llamada en curso. Este script puede perdurar en ejecución incluso después de finalizar la llamada.

Pasarelas AGI

La pasarela AGI se establece directamente desde el Plan de Marcación, utilizando una de varias aplicaciones disponibles para efectuar esta gestión. Las disponibles actualmente son:

  • AGI: Sería la aplicación estándar. Ejecuta la aplicación en la misma máquina que asterisk, y se abre un flujo de entrada y salida clásico por la entrada y salida asociada correspondiente.
  • EAGI: Hace referencia a Enhanced AGI, es exactamente igual que AGI, pero además se incorpora a la entrada, el canal en curso, pero solo en modo "lectura".
  • Fast AGI: Se diferencia de AGI, dado que el proceso se establece a través de una conexión TCP/IP (el flujo de información), concretamente por el puerto 4573, y de esta forma es posible liberar el "peso" de la máquina Asterisk de forma bastante eficiente
  • Async AGI: Se establece una conexión con AMI, y el flujo se realizaría a través de dicha interfaz. Podría servir como una capa de abstracción de AMI dado que se considera de alguna forma un CTI y los problemas de estándares que acarrea.

Variables de Entrada

En el momento que se establece la conexión AGI con cualquiera de las Pasarelas, se lanzan todas las variables a la aplicación y estas son accesibles. Las variables tienen mucho que ver con el canal en curso, e incluso podemos mandar variables especificas de canal y otras posibilidades más concretas:

  • agi_request: Ese nombre de la aplicación externa AGI que va a ser ejectuada en caso de ser AGI/eAGI, para el caso de FastAGI, es la URL que ejecutara el proceso en la máquina remota
  • agi_channel: El nombre del canal que ha ejecutado AGI
  • agi_language: El idioma seleccionado en el canal que ejecuta AGI.
  • agi_type: El tipo de canal (SIP, IAX, etc)


agi_type SIP The channel type for agi_channel. agi_uniqueid 1284382003.9 The uniqueidof agi_channel. agi_version 1.8.0-beta4 The Asterisk version in use. agi_callerid 12565551212 The full caller ID string that is set on agi_channel. agi_callerid name Russell Bryant The caller ID name that is set on agi_channel. agi_callingpres 0 The caller presentation associated with the caller ID set on agi_channel. For more information, see the output of core show function CALLERPRESat the Asterisk CLI. agi_callingani2 0 The caller ANI2 associated with agi_channel. agi_callington 0 The caller ID TON (Type of Number) associated with agi_channel. agi_callingtns 0 The dialed number TNS (Transit Network Select) associated with agi_channel. agi_dnid 7010 The dialed number associated with agi_channel. agi_rdnis unknown The redirecting number associated with agi_channel. agi_context phones The context of the dialplan that agi_channelwas in when it executed the AGI()or EAGI()application. agi_extension 500 The extension in the dialplan that agi_channelwas exe-cuting when it ran the AGI()or EAGI()application. agi_priority 1 The priority of agi_extensionin agi_contextthat exe-cuted AGI()or EAGI(). agi_enhanced 0.0 An indication of whether AGI()or EAGI()was used from the dialplan. 0.0indicates that AGI()was used. 1.0indi-cates that EAGI()was used. agi_accountcode myaccount The accountcodeassociated with agi_channel. agi_threadid 140071216785168 The threadidof the thread in Asterisk that is running the AGI()or EAGI()application. This may be useful for associ-ating logs generated by the AGI application with logs generated by Asterisk, since the Asterisk logs contain thread IDs. agi_arg_<argu ment number> my argument These variables provide the contents of the additional argu-ments provided to the AGI()or EAGI()application

Referencias


Véase también

Enlaces Externos