AGI Asterisk Gateway Interface

Samuel Vargas
Asterisk Tips 101
Published in
3 min readMar 21, 2021

--

AGI provee una interfaz entre el Plan de Marcación de Asterisk y un programa externo que busca manipular un Canal en el plan de marcación.

Para comprender el alcance a continuación mencionamos unos ejemplos:
- Registrar información recolectada en el plan de marcación en una base de datos local o externa. (Ej. Registrar las opciones seleccionadas en una interacción con una Operadora Automatica)
- Validar información recolectada en el plan de marcación contra una base de datos local o externa, archivo de texto. (Ej. Consultar si el número de documento de un persona esta dentro de una base de datos de clientes)
- Interactuar con información obtenida de un WebService o un API Rest.

Nota: La ejecución de un AGI es síncrona, por tanto hasta que se complete el AGI retorna el control de la llamada al Plan de Marcación.

A continuación detallaremos varios ejemplos de uso de AGI en el Plan de Marcación de Asterisk. El entorno de ejecución es el siguiente:
- Ubuntu 18
- Asterisk 16
- Libreria PHPAGI (http://phpagi.sourceforge.net/)

Ejemplo 1

Detalle: Este AGI leerá variables de canal de la llamada y posteriormente generará nuevas variables que se utilizarán en el plan de marcación.

  • Plan de Marcación
    Se define una variable “DOCUMENT” que se utilizará en el AGI, adicionalmente se retornan las variables “XCODE” y “XSTRING” creadas en la ejecución del AGI.
  • AGI PHP
  • Ejecución de AGI
    Al realizar la llamada se obtiene el siguiente resultado

Tip: Para ver en detalle la ejecución del AGI, activamos en el CLI “agi set debug on

Detalle de llamada con Agi Debug activo

Ejemplo 2

Detalle: Este AGI tomará una variable definida en el plan de marcación y la buscará en un listado de nombres de un archivo de texto.

  • Plan de Marcación
    Se define una variable “CODE” que se utilizará en el AGI, se buscará el código en un archivo de texto.

El contenido de ejemplo del archivo de texto:

1234,Tony Stark
5678,Steve Rogers
9876,Bruce Banner
0741,Stephen Strange
  • AGI PHP
  • Ejecución de AGI
    Al realizar la llamada se obtiene el siguiente resultado

Ejemplo 3

Detalle: Este AGI tomará una variable definida en el plan de marcación y la buscará consumiendo un servicio REST. De la información consultada se definen nuevas variables con datos de la consulta.

  • Plan de Marcación
    Se define una variable “CODE” que se utilizará en el AGI, se buscará el código en un API REST.
  • AGI PHP
  • Ejecución de AGI
    Al realizar la llamada se obtiene el siguiente resultado

Código

Código completo en el siguiente enlace:

https://github.com/savagz/asterisk-agi-sample

Tip: Para el uso de AGI existen diferentes Librerías o Framework en lenguajes de programación como Java, Php, Ruby, Python, NodeJS, C++ y .NET

--

--

Samuel Vargas
Asterisk Tips 101

A human being living in a great world with an insane society