Asterisk Gateway Interface (AGI), o Interfaz Pasarela de Asterisk, es una interfaz del sistema Asterisk, que permite la comunicación con otros sistemas.
Este servicio agrega funcionalidad a Asterisk con muchos lenguajes de programación diferentes. Perl, PHP, C, Pascal, Bourne Shell, java entro otros. Asi, programas externos pueden controlar el dialplan de Asterisk. Usualmente, los scripts AGI son usados para desarrollar una lógica más avanzada de programación de dialplan, lograr comunicaciones con bases de datos relacionados, y acceder a recursos externos a Asterisk.
Desarrollo AGI
Para este caso, se desarrollara una aplicación de consulta telefónica a una base de datos, donde el usuario debe ingresar su número de cuenta y contraseña, para poder consultar su saldo.
Base de Datos
Lo primero en desarrollarse fue la base de datos,esta se creó en MySQL, esta contenía una tabla llamada usuario, que tenía los siguientes atributos:
Como se observa la mayoría de los atributos son varchar esto se hizo asi por comodidad y por facilidad.
IDE
Como lenguaje de programación se utilizo Java en el entorno de desarrollo NetBeans IDE 7.2
Es necesario agregar al proyecto las librerías que permitan la conexión con Asterisk (asterisk-java-1.0.0.M3.jar) y la conexión con la base de datos (mysql-connector-java-5.1.16-bin.jar), esta ultima dependiendo de la base de datos que se este usando (MySQL, PostgreSQL, Firebird, etc)
La libreria asterisk-java-1.0.0.M3.jar se descargó desde aquí.
Asi mismo para lograr la conexión se debe agregar la clase conectar al proyecto, esta se encuentra adjunta al proyecto, en esta se especifica la base de datos.
Properties
Se debe crear un archivo de nombre fastagi-mapping.properties, donde se especifica el nombre del agi en este caso bnvenido e igualarlo al nombre de la clase donde se conecta el servicio, este archivo debe ser agregado al proyecto.
Asterisk
En el archivo extensions.conf se debe especificar la extencion a la cual se debe marcar para acceder a la agi, la sentencia a utilizar es la siguiente:
extend = > extensión,prioridad,Agi(agi://ubicacion agi/nombre_agi.agi)
Donde la ubicación puede ser localhost, si el proyecto esta en la misma maquina que asterisk o la direccion IP en donde se encuentre el proyecto.
Proyecto
Al final de la pagina se encuentra el proyecto completo, donde se detalla su funcionamiento:
Referencias