https://doi.org/10.35290/ro.v4n1.2023.690
Aplicación AGI-PHP en centrales telefónicas vozIP
interactivas Elastix para consulta de información de
estudiantes
AGI-PHP application in Elastix interactive VoIP telephone
exchanges for consultation of student information
Fecha de recepción: 2022-08-19 Fecha de aceptación: 2023-01-03 Fecha de publicación: 2023-02-10
Resumen
Victor Alfonso Cusco Vinueza
Universidad Técnica de Cotopaxi, Ecuador
victor.cusco7756@utc.edu.ec
https://orcid.org/0000-0003-2373-2995
El presente estudio consiste en el diseño e implementación de un sistema IVR,
utilizando Elastix implementado en la Dirección de Tecnologías de Información y
Comunicación para los estudiantes de la Universidad Técnica de Ambato. Para el
desarrollo de este proyecto se utilizan herramientas de software libre como Elastix,
MySQL, PHP; mismas que permiten mediante la programación de un script generado
en PHP que se puedan realizar consultas y acceder a una base de datos para obtener la
información deseada por los estudiantes. También se usó la librería php-agi, la cual
posee varias funciones que son muy útiles a la hora de utilizar PHP como lenguaje de
programación en el servidor Elastix. El proyecto de investigación permite que los
estudiantes mediante una llamada puedan acceder a su información personal dentro de
la universidad, ingresando su número de cédula, además de información relacionada a la
parte académica.
Palabras Clave: Elastix, MySQL, php-agi, base de datos, telecomunicación,
información sobre comunicación
Abstract
The present study consists of the design and implementation of an IVR system
implemented in Elastix in the Department of Information and Communication
Technologies for the students of the Technical University of Ambato. For the
development of this project free software tools such as Elastix, MySQL, PHP are used;
same that allow by programming a script generated in PHP to make queries and access a
database to obtain the information desired by the students. The php-agi library was also
used, which has several functions that are very useful when using PHP as a
programming language on the Elastix server. The research project allows students
through a call to access their personal information within the university, entering their
ID number, as well as information related to the academic part.
Keywords: Elastix, MySQL, php-agi, database, telecommunication, communication
information
Introducción
Las tecnologías avanzan a una velocidad muy acelerada y cambian constantemente, se
puede evidenciar el cambio que están teniendo actualmente los sistemas analógicos a
sistemas digitales, tomando como tema particular las centrales telefónicas y una de las
tecnologías emergentes como Voz sobre IP, sobre la cual se pueden adaptar todos los
servicios de las centrales telefónicas analógicas (Gómez e Iza, 2015, pág. 11).
El siguiente estudio de investigación es una de muchas soluciones dirigida a los
usuarios de una institución comercial o educativa que permite consultar información de
sus movimientos, en este caso consulta de información personal y académica de un
estudiante, de una forma ágil, rápida y sencilla con una llamada telefónica y usando un
campo clave para identificarse que será la cédula de identidad (Pineda et al., 2011, pág.
2).
De acuerdo a investigaciones realizadas, se denota que hay una notable ventaja al
utilizar como campo de autenticación la cédula del estudiante, al momento de realizar
una consulta (Pineda et al., 2011, pág. 15).
Cuando un estudiante realice una llamada a la central telefónica este escuchará un menú
y tendrá que ingresar su identificador, de acuerdo a lo que presione se pueden dar varios
casos, los cuales se explican en casos del sistema.
Esta es una solución a muy bajo costo para la universidad, ya que en su mayoría para
realizar la implementación se utiliza software libre. Para la implementación de esta
solución como central telefónica interactiva de Voz sobre IP en Elastix, se utiliza la
opción Interfaz de Enlace de Asterisk (AGI) de Asterisk que trabaja juntamente con el
lenguaje PHP; también se usa una librería de PHP “php-agi” que maneja todas las
opciones de Asterisk que pueden ser usadas en el lenguaje de programación PHP y para
almacenar los datos se utiliza el motor de base de datos MySQL.
Metodología
Para el desarrollo del proyecto se utilizaron los siguientes materiales y métodos
explicados en los apartados que se detallan a continuación.
2.1 Materiales
Elastix permite crear la central telefónica interactiva de VozIP, el usuario podrá
interactuar con la operadora para realizar consultas de información acerca de los
servicios de consulta que ofrece la universidad (Sanmartín, 2014, pág. 50).
MySQL es el sistema de gestión empleado para almacenar los datos de los estudiantes,
la información está almacenada en una base de datos con la opción de poder acceder a
ella en cualquier momento de una forma rápida y eficiente (Naranjo y Coronel, 2018,
pág. 17).
Asimismo, PHP es el lenguaje de código abierto usado para modificar el script, para
realizar cualquier tipo de consultas y acceder a una base de datos para obtener la
información solicitada (Boada y Tituaña, 2012, pág. 5).
Mediante la herramienta de SQL Server Microsoft Integration Services que es una
plataforma para la creación de soluciones empresariales de transformación e integración
de datos, se realiza el proceso ETL (Extracción Transformación y Carga) para obtener
información de la base de datos en SQL Server y especificar las vistas que se pasarán a
la base de datos MySQL del servidor Elastix (Contero, 2012, pág. 66).
2.2 Métodos
2.2.1 Investigación de campo
El presente proyecto es de investigación y desarrollo, para el efecto se realizará una
investigación de campo, esto es el estudio sistemático de los hechos en el lugar en que
se producen los acontecimientos. En esta modalidad se da el contacto en forma directa
con la realidad, para tener información de acuerdo con los objetivos de la investigación.
2.2.2 Información de los estudiantes a difundirse mediante la consulta
telefónica interactiva con AGI-PHP
La base de datos utamatico en el servidor Elastix consiste en 5 vistas, como:
vt_correo
vt_fechasmatricula
vt_historial
vt_matriculas
vt_problemas
Utilizando la base de datos utamatico se realizará la programación de las diferentes
consultas mediante AGI PHP y empleando el servidor Elastix el lenguaje de
programación PHP y MySQL.
La información definida para realizar las consultas telefónicas, está descrita en
diferentes secciones que se muestran a continuación:
Consultar correo institucional: el estudiante lo obtiene, dado que es
proporcionado por la Universidad.
Horario de matrículas: es la fecha en que el estudiante deberá ingresar al sistema
de matrículas por créditos y matricularse.
Historial académico: es la información académica del estudiante referente a los
créditos que tiene en su carrera.
Legalización de matrícula: es la información del estudiante, para que pueda
saber si su matrícula está legalizada correctamente o tiene algún problema.
Revisar problemas: el estudiante obtiene información de algún problema que se
haya presentado, dentro del sistema de matrículas por créditos.
2.2.3 Tipo de seguridad que se aplicará en la autenticación para el acceso a la
información
El cifrado es una de las principales medidas que se deben adoptar en una infraestructura
VozIP. El uso de Internet Protocol Security (IPsec) proporciona servicios de seguridad
para el tráfico IP, lo que permite configurar un canal IP seguro, los servicios
proporcionados por IPsec, se basan en dos subprotocolos: un subprotocolo de
Authentication Header (AH) y un combinado de cifrado con el subprotocolo de
autenticación Encapsulating Security Payload (Toscano, 2012, pág. 58).
Los teléfonos VozIP pueden cifrar el audio con el protocolo Secure Real-Time
Transport Protocol (SRTP) que es una réplica del (RTP), pero ofrece confidencialidad,
autenticación de mensajes y protección, evitando los ataques de interceptación e
inserción de audio entre otros y no afecta a la QoS, porque es evidente que el canal de
señalización también debe ir completamente cifrado.
Se debe utilizar VLAN, para priorizar y proteger el tráfico VozIP, separándolo en
canales lógicos de las redes de datos. Con esto se protege y se limita el acceso a la red
VozIP, sobre todo desde el exterior, limitar los volúmenes de datos y ráfagas de
paquetes, en puntos estratégicos de la red, para evitar gran cantidad de ataques (DoS)
(Calderón, 2015, pág. 51), (Biggs, 2007, pág. 10).
2.2.4 Compatibilidad del software y equipos para la implementación del
sistema telefónico.
- Hardware: el sistema telefónico cuenta con un servidor de pruebas. En este caso
se utiliza una computadora con las siguientes características, como se muestra en
la Tabla 1:
Tabla 1
Características Computadora
Procesador
Intel® Pentium® CPU2960 @ 2.20 GHz
Tarjeta de red
10/100 Mbps
RAM
6 GB
Disco duro
320 GB
- Software: para el desarrollo del proyecto se utilizan herramientas de software
como:
Servidor Elastix 4.
Sistema de gestión de bases de datos: MySQL.
Paquete de desarrollo: PHP-AGI.
Sistema operativo: CentOS 7.
Aplicación Softphone: Zoiper.
2.2.5. Configuración Elastix y AGI PHP
Ingresando a la consola del servidor Elastix con el usuario root, nos aparece el URL que
debemos digitar en el navegador para ingresar a la consola web, ahí se indica la
dirección IP del servidor (http://172.21.123.20), tal como se muestra en la Figura 1:
Figura 1
Consola Servidor Elastix
La central telefónica se configuró con la extensión “1800”, que funciona como ruta de
entrada y que contesta la llamada (Gómez, 2011, pág. 111). Por su parte, Elastix 4
presenta distintos protocolos para extensiones como; SIP, AIX2, Dandhi Device o un
tipo personalizado, para esta investigación se utiliza el protocolo SIP (Ramírez y
Noboa, 2011, pág. 12).
2.2.6 Descripción general del programa
La central telefónica recibe una llamada, si la extensión marcada es “1800” el archivo
extensions_custom.conf invoca al código “proyecto.php”, donde se almacena al
programa principal y se ejecuta el código. La central telefónica contesta la llamada y se
le indica al estudiante que ingrese su número de cédula o si quiere salir del sistema que
digite “0”. El sistema espera que el estudiante ingrese la cédula, captura el número
ingresado y ejecuta una consulta a la base de datos para verificar si el estudiante está
registrado en la base de datos de la universidad (ver Figura 2).
Una vez que la base de datos retorna los datos del estudiante, se reproducen grabaciones
que le indican al estudiante las diferentes opciones de consultas; por cada consulta se
reproduce una grabación indicándole la respectiva opción. Si el usuario desea salir del
sistema puede digitar “0” y con esto se reproduce un mensaje de despedida y se termina
la llamada (Gómez, 2011).
Figura 2
Diseño Lógico de una Llamada a la Central Telefónica Voz IP
2.2.7 Casos del sistema
Cuando llega una llamada a la central telefónica, se pueden producir tres diferentes
casos:
El estudiante no digita ningún número: la central telefónica esperará 7 segundos
para que el estudiante ingrese su cédula, caso contrario se vuelve a reproducir la
grabación inicial pidiéndole al estudiante su número de cédula.
El estudiante ingresa una cédula no registrada en la base de datos: el sistema
hará la consulta a la base de datos, pero al no estar registrada su cédula se
reproduce una grabación que indica al estudiante que no se encuentra registrado
en el sistema. Luego se reproduce la grabación inicial.
El estudiante ingresa su cédula que sí se encuentra registrada en la base de datos:
mediante una grabación, la central telefónica indica al estudiante las opciones
que tiene para consultar. Luego de realizar una consulta se reproduce la
grabación inicial.
2.2.8 Plan de marcado
En el plan de marcado, se configura el número con el que los estudiantes podrán llamar
a la central telefónica y realizar sus respectivas consultas (Cisco Asterisk TelefoniaIP,
2015).
Esta configuración se la realiza en el archivo extensions_custom.conf que se muestra a
continuación en la Figura 3:
Figura 3
Configuración Archivo proyecto.php.
2.2.9 Código fuente
A continuación, en la Figura 4 se muestra el código fuente realizado en el lenguaje de
programación PHP, el archivo es proyecto.php y está ubicado en la ruta
/var/lib/asterisk/agi-bin.
Figura 4
digo Fuente
2.2.10 Funciones sobre la base de datos
- mysql_connect (’direccionBD’, ’usuario’, ’clave’): función que permite realizar
una conexión a la base de datos.
- mysql_select_db(’utamatico’,$conn): función que selecciona la base de datos
con la que se va a trabajar:
- $res=mysql_query($sql,$conn): función que ejecuta una petición.
- $r1=mysql_fetch_array($res): función que devuelve un arreglo de claves de cada
una de las columnas de la base de datos la petición ejecutada, para poder utilizar
cada uno de los campos de la consulta según el requerimiento.
2.2.11 Funciones del plan de marcado
- error_reporting(E_ALL): crea un log con todos los errores ocurridos durante la
ejecución del código.
- $agi = new AGI(): crea una nueva instancia de la clase agi.
- require (’phpagi.php’): permite que las funciones en la librería phpagi sean
usadas en el código principal.
- $agi->answer(): contesta la llamada.
- $agi->exec(Playback,"ArchivodeAudio"): reproduce una grabación.
- $agi->get_data("ArchivodeAudio", tiempoEspera,MaxDigitos): captura la
extensión marcada luego de reproducirse un archivo de audio dentro de un
tiempo de espera, el tercer parámetro indica la cantidad máxima de dígitos que
se pueden ingresar.
- $agi->say_number($Numero): reproduce en audio el número que se le ha
enviado.
- agi->hangup(): termina la llamada.
2.2.12 Descripción de archivos de audio
Los archivos de audio fueron grabados con un software para realizar grabaciones de
audio, estos archivos para poder utilizarlos en la central telefónica deben estar en
formato .GSM, por lo que todos los archivos de audio utilizados tienen ese formato para
que se los pueda utilizar de la mejor manera. Los archivos de audio deben ser
almacenados en la ruta /var/lib/asterisk/sounds, a continuación, se muestran los archivos
de audio grabados (Vaca, 2021, pág. 53):
Saludo
Cédula
Cedulario
Menu
SuCorreoEs
SuFechaDeMatricula
Historial
UstedTiene
CreditosTotales
CreditosAprobados
CreditosPendientes
SuMatriculaEsta
CedulaNoRegistrada
ConsultarNuevamente
NoExistenDatos
Despedida
Otros archivos de audio que se emplean en este proyecto vienen pregrabados en
Asterisk, y los utiliza la librería “phpagi.php” junto con la función “text-to-sound” para
reproducir texto a audio.
Resultados
Las pruebas de funcionalidad fueron realizadas por medio del aplicativo Softphone
Zoiper, para lo cual se debe iniciar el servidor Elastix para verificar en la consola CLI
cuando el proceso del Softphone se registre. La aplicación “Festival” es la encargada de
transformar el texto creado y almacenado de la base de datos en audio.
Para verificar el funcionamiento de la central telefónica VozIP se han realizado varias
pruebas, las mismas que se describen a continuación:
3.1 Prueba de comunicación con el servidor Elastix 4
Figura 5
Conexión con el Servidor Elastix
Como se muestra en la Figura 5, realizando un ping a la dirección IP “172.21.123.20”,
se puede verificar que hay comunicación y el servidor está en funcionamiento.
En la siguiente Figura 6 se observa la prueba de una llamada a la central telefónica
Elastix.
Figura 6
Llamada a la Extensión “1800”
Mientras que en la Figura 7 se puede ver la prueba consulta de correo electrónico del
usuario.
Figura 7
Consulta de Correo Electrónico
Se puede observar la llamada realizada: el número de cédula marcado es “1804562039”,
la grabación “SuCorreoEs” que es parte de la consulta y el correo electrónico del
usuario edyto_1991@hotmail.com, que es transformado de texto a voz por Festival.
En la Figura 8 se puede observar la llamada realizada: el número de cédula marcado es
“1804562039”, la grabación “SuFechaDeMatricula” que es parte de la
consulta y la fecha de matrícula del usuario “2015-10-10 08:00:00”, que es
transformado de texto a voz por Festival.
Figura 8
Consultar Fecha de Matrícula
En la siguiente opción se pueden realizar tres consultas adicionales, las
mismas que se muestran a continuación:
Figura 9
Consultar Número de Créditos Aprobados
En la Figura 9 se puede observar la llamada realizada: el número de cédula marcado
es “1804562039”, la grabación “CreditosAprobados” que es parte de la consulta
y el número de créditos aprobados por el usuario “200”, que es transformado de
texto a voz por Festival.
En la Figura 10 se puede observar la llamada realizada: el número de cédula marcado es
“1804562039”, la grabación “CreditosTotales” que es parte de la consulta y el número
total de créditos del usuario “247”, que es transformado de texto a voz por Festival.
Figura 10
Consultar Número total de Créditos
En la Figura 11 se puede observar la llamada realizada: el número de cédula marcado es
“1804562039”, la grabación “SuFechaDeMatricula” que es parte de la consulta y la
fecha de matrícula del usuario 2015-10-10 08:00:00”, que es transformado de texto a
voz por Festival.
En la siguiente opción se puede realizar tres consultas adicionales, las mismas que se
muestran a continuación: Prueba: consulta de número de créditos aprobados.
Figura 11
Consultar Fecha de Matrícula
3.2 Discusión de resultados
Los resultados obtenidos mediante el desarrollo de esta investigación han permitido
entender el correcto funcionamiento del servidor Elastix y juntamente con la
herramienta Zoiper que permite realizar consultas de información.
El funcionamiento del servidor y las configuraciones realizadas son de vital importancia
para obtener un funcionamiento óptimo del Softphone, estas consultas se realizan
apuntando al servidor Elastix que es la central telefónica por tanto se pueden visualizar
dichas pruebas y su funcionamiento correcto en la herramienta CLI del servidor en
donde se pude visualizar que por cada consulta realizada se ejecuta un script mismo que
fue realizado utilizando el lenguaje de programación PHP.
Conclusiones
Realizando un análisis de los sistemas utilizados por la DITIC, se determinó la
información que cumpla los requerimientos necesarios para la realización de las
consultas telefónicas.
Con el presente proyecto se puede evidenciar como las tecnologías IVR se están
destacando en el mercado, debido a la facilidad de consulta y optimización que brinda el
intercambio de información, reduciendo costos de operación y mantenimiento, además
se ha logrado que exista una facilidad de uso y una respuesta inmediata para el usuario.
El protocolo SIP es el más usado en el mercado, está estandarizado por la IETF y es
ampliamente implementado por todos los fabricantes de equipos y software. Utilizando
herramientas de software se pueden implementar métodos y protocolos de seguridad,
que sirvan para brindar seguridad y protección de los datos en el sistema de consulta,
además se pueden construir sistemas confiables y de buen rendimiento; la utilización de
Elastix brinda un buen desempeño y fácil manejo de la central telefónica.
Con la ayuda de la librería AGI-PHP desarrollada bajo PHP se pudo establecer una
mejor interacción entre el script desarrollado bajo AGI y una comunicación satisfactoria
con la base de datos MySQL, todo en el servidor Elastix.
Referencias
Biggs, P. (2007). The status of voice over internet protocol (VoIP) worldvide, 2006.
ITU
Boada,B., y Tituaña, A. (2012). Desarrollo de una aplicación de business intelligence
(BI) para la empresa Empaqplast [Tesis de Grado, Escuela Politécnica del Ejército].
http://repositorio.espe.edu.ec/handle/21000/5819
Calderón, C. (2015). Implementación de protocolos de seguridad para la red VoIP del
hospital Isidro Ayora de Loja [Tesis de Grado, Universidad Nacional de Loja]
http://dspace.unl.edu.ec/jspui/handle/123456789/11708.
Cisco Asterisk TelefoniaIP. (25 de enero de 2015). Implementación de un IVR
(interactive voice response) utilizando MySQL Y PHPAGI.
http://ciscoasterisktelefoniaip.blogspot.com/2015/01/implementacion-de-un-ivr-
interactive.html
Contero, B. (2012). Estudio y diseño de una red de datos y voIP en la empresa
RINTECO CIA. LTDA. usando open source y construcción de IVRs de Asterisk para
mejoramiento en calidad de atención al cliente [Tesis de Grado, Escuela Politécnica
Nacional] http://bibdigital.epn.edu.ec/handle/15000/4972.
mez, E., e Iza, G. (2010). Implementación de un IVR (Interactive Voice Response)
utilizando un VoiceXML Browser [Tesis de Grado, Escuela Superior Politécnica del
Litoral] http://www.dspace.espol.edu.ec/handle/123456789/11606
Gómez, A. (2011). Telefonía IP basada en Software Libre para mejorar las
comunicaciones de voz en Maint Cía. Ltda. [Tesis de Grado, Universidad Técnica de
Ambato]. http://repositorio.uta.edu.ec/handle/123456789/443
Naranjo, C., y Coronel, J. (2018). Análisis, diseño y configuración de un sistema IVR
(interactive voice response) basado en centrales telefónicas telesynergy para redes de
servicio al cliente en el sector bancario del Ecuador [Tesis de Grado, Escuela
Politécnica Nacional] http://bibdigital.epn.edu.ec/handle/15000/1106
Pineda, S., Aguirre, Á., y Astudillo, G. (2011). Diseño e Implementación de un Sistema
Telefónico Interactivo que Permita Realizar Consultas de Calificaciones para la
Academia CISCO ESPOL. Artículos de Tesis de Grado FIEC
http://www.dspace.espol.edu.ec/handle/123456789/17046
Ramírez, E., y Noboa, F. (2011). Implementación de un IVR para Atencion Telefonica a
Estudiantes en la Carrera de Ingeniería en Sistemas Computacionales de la
Sanmartín, J. (2014). Implementación de un centro de llamadas de atención al cliente
en SOLINFO TECH Soluciones Informáticas IT [Tesis de Grado, Universidad Técnica
de Ambato] http://repositorio.uta.edu.ec/handle/123456789/8508
Universidad de Guayaquil [Tesis de Grado, Universidad de Guayaquil].
http://repositorio.ug.edu.ec/handle/redug/19819
Toscano, A. (2012). Análisis, diseño y desarrollo de un sistema IVR (Interactive Voice
Response) para el módulo de ventas: estado de petición de una nueva solicitud de
servicio para la Corporación Nacional de Telecomunicaciones E.P. [Tesis de Grado,
Escuela Politécnica del Ejército].
http://repositorio.espe.edu.ec/xmlui/handle/21000/5185.
Vaca, A. (2021). RobotCall mediante Asterisk para notificación del proceso de
prácticas preprofesionales en la facultad de Ingenierías de la Universidad Ecotec
[Tesis de Grado, Universidad Ecotec]
https://repositorio.ecotec.edu.ec/handle/123456789/266
Copyright (2023) © Victor Alfonso Cusco Vinueza
Este texto está protegido bajo una licencia internacional Creative Commons 4.0.
Usted es libre para Compartircopiar y redistribuir el material en cualquier medio o
formato y Adaptar el documento remezclar, transformar y crear a partir del
materialpara cualquier propósito, incluso para fines comerciales, siempre que cumpla
las condiciones de Atribución. Usted debe dar crédito a la obra original de manera
adecuada, proporcionar un enlace a la licencia, e indicar si se han realizado cambios.
Puede hacerlo en cualquier forma razonable, pero no de forma tal que sugiera que tiene
el apoyo del licenciante o lo recibe por el uso que hace de la obra.
Resumen de licencia Texto completo de la licencia