Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PRÁCTICA III
IMPLEMENTACIÓN DE SERVICIOS: AGI.
PRESENTADO A:
Ph.D. ING. CRISTHIAN FIGUEROA
PRESENTADO POR:
BRAYAM DAVID OTERO POMEO
NATALIA SOFÍA QUIÑONES
CONTENIDO
1.1. Introducción.
1.2. Marco conceptual:
1.2.1. AMI.
1.2.2. AGI.
1.2.3. ARI.
1.2.4. Servicios Web.
1.2.5. PHP.
1.3. Bitácora de configuración AGI.
1.4. Explicación del servicio a implementar.
1.5. Configuración del servicio implementado.
1.6. Experiencias de la práctica.
1.7. Conclusiones.
1.8. Referencias.
1.1. Introducción.
Cuando Asterisk se creó su diseño estuvo centrado en el desarrollo de PBX
privadas, las cuales son configuradas con los conocidos archivos .conf, mejor
agrupado con el término de plan de marcado. Es así que para todas las soluciones
requeridas era necesario hacer uso de la programación en C que aún se usa, para
llevar cabo funcionalidades. Sin embargo, no para todos los casos sólo con
Asterisk, son realizables ciertos proyectos, es por esto que se crearon AGI, ARI, y
AMI. Estas interfaces cumplen un importante papel a la hora de hacer de getway
entre Asterisk y programas externos, controlar el canal de transmisión, o ejecución
remota del plan de marcado. Brindando más funciones y facilidades para desarrollar
en otros entornos de desarrollo como PHP, Phyton, Java, y otros.
http.con
[general]
enabled = yes
bindaddr = 0.0.0.0
[general]
enabled = yes
pretty = yes
[asterisk]
type = user
read_only = no
password = asterisk
[default]
Ahora, por medio de curl, hacemos que en el softphone del usuario, se reproduzca
un audio que diga “hello world”, en el parte del id del canal en el comando de curl,
se debe colocar elidentificador que entrega el wscat, este identificador cambia para
cada llamada.
Utilizando curl se instala nvm desde la página de GitHb. nvm permite instalar
varias versiones independientes de Node.js para controlar el entorno fácilmente.
El servicio que se pensó para la práctica de laboratorio, fue un buzón de quejas por
medio de la interfaz AGI programando en el lenguaje de php. Este servicio se
permiten dos tipos de usuarios los cuales mediante el llamado de diferentes
extensiones puedes hacer que el sistema desempeñe dos diferentes opciones, para
la opción 1111 se tiene una contestadora que permite dejar quejas a múltiples
usuarios diferentes y en simultáneo si se quiere. Para la extensión *1111 el usuario
administrador mediante una contraseña accede a las quejas de los usuarios
anteriormente hechas.
1.5. Configuración del servicio implementado.
Nuestro servicio se va implementar por medio de la interfaz AGI, dado a que esta
interfaz se adecua mejor a los requerimientos de nuestro servicio a implementar.
AGI brinda una interfaz entre asterisk y el plan de marcado, como lo que se quiere
es grabar la queja del usuario cliente y que después un usuario administrador la
escuche, por lo tanto se va a modificar el plan de marcado de una extensión, donde
la interfaz AGI es perfecta para esta aplicación.
Instalación de la librería.
Se va programar con el lenguaje PHP, debido a que es el lenguaje que más
conocido para nosotros, además es un lenguaje de muy alto nivel que se hace más
manejable. No es necesario utilizar librerías de PHP para empezar a programar,
pero estas librerías hace más fácil la programación del servicio. Hay varias librerías
de PHP (PAGI, PHPAGI, AgiPhp5, PHP ASTLIB, entre otras), pero por facilidad de
instalación y de uso se escogió la librería PHPAGI.
Instalación de PHP:
Luego se instala el php se debe actualizar el sistema y después ingresar el siguiente
comando:
sudo apt update
sudo apt -y install php
Donde se instala la última versión de php, para comprobar se digita
Permisos necesarios:
Para el correcto funcionamiento del servicio es necesario dar unos permisos a la
carpeta de sonidos de asterisk, de la siguiente forma:
Configuración de extensions.conf:
La configuración del plan de marcado es sencilla dado a que todo el proceso lo hace
los programas php. Al marcar la extensión 1111 lo dirige a un menú para que el
usuario pueda grabar su queja, y al marcar la extensión *1111 un usuario
administrador que necesita una contraseña para autentificarse, escucha las quejas
de los demás usuarios.
Configuración encuesta.php
Es importante mencionar que en la primera línea del script creado, se debe insertar
la siguiente línea de código, con el fin de que asterisk lo corra como archivo tipo
.php:
#! /usr/bin/php -q
Por medio del objeto creado de tipo AGI, se llama a la función parse_callerid(), que
nos entrega un vector con información del usuario que llama, esto con el fin de darle
una bienvenida al usuario que llamó. El comando Verbose(), muestra el valor de la
variable $callerid en el cli, con el comando exec(), se puede ejecutar servicios o
funciones propias de Asterisk, como en este caso, Wait que da una pausa al
sistema de un determinado tiempo. El text2wav(), reproduce por medio del servicio
de asterisk de Festival y así darle la bienvenida al usuario por medio de voz.
Llegado el caso que el usuario haya digitado una tecla diferente al dos, el usuario
escuchará un audio diciendo que escoja una opción correcta. El usuario tendrá 3
intentos para marcar una opción correcta, después de tercero el sistema se despide.
Configuración escucharQueja.php
Este archivo hace posible la escucha de las quejas dejadas por otros usuarios
clientes, inicialmente se crea un cliente AGI, y se saluda al usuario mediante el
servicio de festival con $callerid posteriormente el saludo y $cid que permite
insertar el número del usuario para hacerlo más personalizado.
A continuación el código permite que el usuario administrador escuche las quejas
dejadas por otros usuarios clientes. De esta manera se procede con un if de
validación para el cual se tiene que una vez se haya digitado la contraseña correcta
123, el entre al ciclo que en primera instancia comunica al usuario que entró
exitosamente mediante $agi->text2wav(“you entered succesfully”);
posteriormente hace una espera de dos segundos $agi->exec(‘Wait’,’2’);
El contador $num=0; hará la función de contador para el número de quejas que se
disponga en el sistema, de manera que como se ve a través de los comandos antes
mencionados, se cuenta en voz el número de la queja y se repita la queja, pasando
a la siguiente hasta que se hayan terminado.
1.7. Referencias.
❏ https://www.lumenvox.com/knowledgebase/index.php?/article/AA-
01889/0/Building-Asterisk-Speech-Applications-with-AGI.html
❏ https://www.voip-info.org/asterisk-agi/
❏ http://www.aitelephony.com/uncategorized/connecting-asterisk-with-
google-speech-api/
❏ https://wiki.asterisk.org/wiki/display/AST/Getting+Started+with+ARI#Get
tingStartedwithARI-Example:ARIHelloWorld!
❏ https://www.digitalocean.com/community/tutorials/como-instalar-node-
js-en-ubuntu-16-04-es