Proyecto de Redes de Datos
Proyecto de Redes de Datos
Proyecto de Redes de Datos
TESIS DE GRADO
LA PAZ – BOLIVIA
2013
UNIVERSIDAD MAYOR DE SAN ANDRÉS
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
LICENCIA DE USO
A Dios nuestro Señor, sin tu ayuda Padre Amado nunca lo hubiese logrado… gracias.
A mi novia, que con tremenda paciencia logró soportar mi mal humor e irritabilidad.
A mi Tutora M.Sc. Rosa Flores Morales, por sus aportes, sugerencias y observaciones
que apoyaron a la conclusión de este trabajo.
ÍNDICE
ÍNDICE DE CONTENIDOS I
ÍNDICE DE FIGURAS V
ÍNDICE DE TABLAS VII
RESUMEN VIII
ÍNDICE DE TABLAS
Para tal fin, se creó un sistema interactivo de respuesta de voz (IVR) basado en Asterisk,
que permite al usuario acceder, por medio de las redes de telefonía, a la información de
productos registrados en la base de datos de un sistema web, por medio de scripts
programados en lenguaje PHP y la utilización de la interfaz pasarela de Asterisk. Para el
sistema de alertas se utilizó, como herramienta fundamental, el demonio Cron, con el
que se verifica cada dos minutos las cantidades existentes de los productos en almacén,
si se halla algún desabastecimiento, se ejecuta un programa encargado de utilizar la
funcionalidad outgoing de Asterisk, el cual permite realizar llamadas automáticamente.
Los resultados obtenidos una vez concluido el proyecto, demostraron que la información
requerida es proporcionada por el sistema IVR en tiempo real. Las alertas respecto al
desabastecimiento de productos fueron oportunas, permitiendo realizar una correcta
toma de decisiones y un mejor control del almacenamiento de los productos.
Palabras clave: Consultas remotas, base de datos, redes de telefonía, respuesta de voz
interactiva (IVR), Asterisk.
Abstract
The requirement of real-time information has become a necessity for several companies
in our environment. Looking for an alternative means of connecting to alternate database
to the internet, it was opted by the use telephone networks. Through the experimentation
with the web system of control and management of Inova Network‟s stores and the
telecommunications exchange Asterisk, was verified that the company had the necessity
to access the information of product stored on their web system. Also it is verified the
necessity for an alert system that automatically reports the shortages of any of its
products.
To reach this objective, it was created an interactive voice response (IVR) based on
Asterisk , which allows users to access , through telephone networks , information
products registered in the database of a web system, programmed through scripts in PHP
and using the Asterisk gateway interface. To alert system was used as a fundamental
tool, the Cron daemon, with which checks every two minutes existing quantities of
products in stock, if a shortage is, runs a program in charge of using the functionality
outgoing of Asterisk, which allows automatic call.
The results obtained after the completed project, showed that the information required is
provided by the IVR system in real time. Regarding alerts the shortages of products were
timely; it allows a correct decision-making and better control of the storage of the
products.
It is concluded that the use of technology IVR, as mediator to access information stored
in a remote database, is feasible and functional, even more if tools and software are
licensed in the public domain.
1.1 Introducción
Actualmente la cobertura de telefonía móvil va creciendo vertiginosamente,
convirtiéndolo en un gran candidato para solventar las necesidades de conectividad. Una
de las aplicaciones más utilizadas en base a este medio es el sistema IVR (Intereactive
Voice Responce, Respuesta Interactiva de Voz) el mismo que puede ser considerado
como una tecnología CTI1 (Computer Telephone Integration) que permite la
interactividad entre los usuarios y computadoras por medio de aplicaciones escritas en
un determinado lenguaje de programación.
1
Las tecnologías CTI son un conjunto de componentes tanto de hardware como de software capaz de
traducir señales entre sistemas telefónicos y computadores con el objetivo de manipular llamadas para
integrarlas a servicios especiales por medio de procesos computacionales.
1
También se vio la necesidad de contar con un sistema automático que informe sobre el
desabastecimiento de productos oportunamente.
Una vez procesado los resultados que se obtuvieron por medio de formularios de
evaluación a fin de observar el comportamiento de la aplicación en determinados casos
de estudio, se verificó el correcto funcionamiento del sistema, siempre y cuando este
sea utilizado fuera de las zonas de riesgo identificados en el proceso de realización de
pruebas, verificación y validación de resultados.
2
Red Telefónica Conmutada, estas son redes de telecomunicación basados en la conmutación de
circuitos
2
1.2 Antecedentes
Las áreas en las que se desenvuelve esta empresa de telecomunicaciones, abarca desde
las capitales de departamentos hasta poblados ubicados en las fronteras del territorio
boliviano. Su oficina principal está ubicado en la avenida ComercioN°210, edificio
Ismar, piso 5, en la ciudad de La Paz.
Actualmente esta entidad cuenta con una PBX-IP virtual basado en el software de
Asterisk, el cual es utilizado primordialmente como contestadora automática dando el
saludo de bienvenida y agradecimientos por la llamada, verificando también el horario
en que se realiza dicha llamada para efectuar ciertas acciones, programando de esta
forma la atención a clientes por horarios de oficina, en caso de no estar disponibles se
graba un mensaje y es enviada al buzón de voz de esta entidad.
3
También cuentan con un sistema web de control de almacenes alojado en un servidor de
aplicaciones propio, dicho sistema utiliza el gestor de base de datos MySQL y PHP
como gestor de lógica de negocios.
El sistema emite reportes sobre los movimientos de los productos en almacén, así como
reportes globales sobre la cantidad física existente de cada ítem, además de varias otras
funciones relacionadas con el control efectivo del almacén e inventarios.
Estos sistemas, los IVR, permiten esencialmente automatizar la interacción entre una
llamada entrante y un sistema informático que realice la recepción de dicha llamada e
interactúe con la misma, además ofrece varias ventajas vanguardistas que parten
4
inicialmente como contestador automático de llamadas hasta funciones completamente
complejas de integración con sistemas externos. (Lopez, 2008, págs. 133,134)
El software libre para soluciones de respuesta interactiva por voz, como el API de
Asterisk, el cual es una aplicación para controlar y gestionar comunicaciones de
cualquier tipo, ya sean analógicas, digitales, móviles o VoIP, es implementada en una
gran variedad de empresas e incluso pymes, con las funcionalidades de: operador
automático, interacción con base de datos, interacción con sistemas externos, voz mail,
entre otros.
5
El Call Center de COTEL es un centro de llamadas en el que se reciben todo tipo de
consultas vía teléfono, los servicios ofrecidos son: 104 información de números
telefónicos, 113 reclamos técnicos, 2315353 atención al cliente, 2372323 central
telefónica de COTEL y marcando al 102 información de deuda telefónica.
El uso del sistema IVR embebido en Asterisk, ha sido aceptado primordialmente por el
bajo costo que conlleva para ser implementado, es por esta razón que instituciones como
las anteriormente citadas optan por el uso de esta solución, también se tienen
identificadas a empresas internacionales como Google, Yahoo, IBM, e incluso el
Ejército de EE.UU (Quarea, 2010) que utilizan dicha solución como sistema de
implementación libre de una central telefónica.
6
boletos del ferrocarril de Cuzco para el viaje desde la estación de San Pedro hasta la
ciudadela Machu – Picchu (Aguas Calientes).
7
1.3 Planteamiento del problema
Según la comparativa de precios y velocidad de transmisión de datos de internet
realizada en el anexo A, se evidencia que la conexión a internet en Bolivia se sitúa entre
los más caros y lentos de la región latinoamericana, razón por la que los requisitos
mínimos y los montos económicos para acceder a una conexión a internet se convierten
en barreras tecnológicas y económicas que limitan el acceso a la información. Además
se ha evidenciado que la conectividad a internet no está disponible en varias regiones del
territorio boliviano (ver Anexo B). Debido a estas situaciones la empresa Inova
Networks se ve imposibilitada de contar con una tecnología de conexión a internet móvil
con una velocidad de transferencia de datos aceptable a corto plazo, a fin de lograr
obtener la información necesaria del sistema web de almacenes en tiempo real y de
forma remota, la cual es imprescindible para lograr concretar negocios o ventas serias en
el menor tiempo posible, así como también el poder realizar planificaciones correctas
para el emprendimiento de proyectos referentes a los servicios prestados por la empresa
o para una correcta adquisición de nueva mercancía.
8
1.3.1 Formulación del problema
¿Cómo posibilitar una conectividad móvil continua con un sistema web de control y
gestión de almacenes para obtener información específica del mismo de forma remota
prescindiendo del internet como medio de interconexión?
1.4 Objetivos
3
Dialplan o plan de marcados, se refiere a la asignación de una determinada extensión a un determinado
usuario o a una secuencia de pasos a realizarse en base a la marcación que realice la llamada entrante al
PBX. En Asterisk el dialplan es configurable en el archivo extensions.conf
9
Realizar pruebas de conectividad entre cualquier dispositivo telefónico conectado a
una red de telecomunicaciones dentro de la RTC o a una red de telefonía móvil, con
el sistema web de almacenes.
1.5 Justificación
Así también se considera que al proveer a la entidad Inova Networks una herramienta
tecnológicamente avanzada, para un correcto y oportuno control de la información que
emite el sistema web de almacenes en forma remota y continua, se posibilita una mejor y
rápida toma de decisiones que afectara positivamente a la economía de la empresa.
10
Al disponer la empresa Inova Networks de tecnologías de telecomunicación, como ser:
la central telefónica Asterisk, acceso a líneas troncales de la RTC, el software y
hardware necesarios, se hace factible la implementación de soluciones vanguardistas.
1.6.2 Metodología
Para el logro de los objetivos propuestos en el presente trabajo se realizó la recopilación
de información por medio de historias de usuario de la metodología de desarrollo Scrum
y se especificaron los requerimientos utilizando la norma IEEE 830, seguidamente se
adecuó el servidor de telecomunicaciones Asterisk a fin de lograr una correcta
integración con el producto desarrollado. El diseño del sistema IVR con los subsistemas:
consultas a almacén y alertas ante desabastecimiento, está basado en las historias de
usuario recopiladas y enmarcadas en la especificación realizada con la norma IEEE 830,
para dicho desarrollo fue necesario la creación de tres archivos en lenguaje PHP, que
cumplen la función de recepción de la llamada entrante y el procesamiento de la misma
para su correcto enrutamiento respecto a la obtención de información necesaria para el
usuario. Se realizó la instalación de una librería PHP con el propósito de posibilitar la
11
conexión remota al DBMS MySQL y así permitir realizar consultas a la base de datos
remota, seguidamente se realizó la instalación un servidor de sintetización de voz (TTS,
Text To Speach) el cual fue configurado de tal manera que pueda ser utilizado por los
módulos de aplicaciones y funciones de Asterisk, el objetivo principal del TTS instalado
es el de comunicar audiblemente la información obtenida desde la base de datos a
consultar. Finalmente se configuró el enlace de comunicaciones entre el lenguaje PHP y
Asterisk por medio de comandos AGI4.
Una vez concluido el diseño y desarrollo del sistema IVR para consultas a almacén y
alertas ante desabastecimientos se realizaron pruebas en base a un estudio de casos, la
información recopilada para dichas pruebas fueron registradas utilizando como
herramientas, formularios de evaluación para el subsistema de consultas a almacén y
subsistema de alertas ante desabastecimientos.
1.7.1 Alcances
La tesis contempla el logro de la obtención de información en tiempo real y de forma
remota desde una base de datos a través de las redes de telefonía, por medio de un
sistema interactivo de respuesta de voz, en el caso concreto, instalado en la central
telefónica Asterisk perteneciente a la empresa Inova Networks, permitiendo la
realización de consultas a la base de datos de dicho sistema desde un dispositivo
telefónico móvil o fijo no conectado a internet.
Para tal fin y acorde a los requerimientos de la empresa Inova Networks, el sistema IVR
estará compuesto por dos subsistemas, esto son:
4
AGI (Asterisk Gateway Interface), es una interfaz de software y el protocolo de comunicaciones para
Asterisk.
12
Subsistema de alertas automáticas ante desabastecimiento de productos, permitirá
conocer que productos se encuentran con un stock mínimo, para ello se dispone de
dos modos de acceso a dicha información, la primera, realizando una llamada al
número de interno asignado al subsistema, el segundo, mediante llamadas
automáticas a la línea telefónica del usuario autorizado.
1.7.2 Límites
El sistema IVR propuesto deberá ser accedido desde las redes de telefonía móvil,
fija, o redes de telefonía IP.
Los dispositivos telefónicos móviles o fijos que son funcionales o compatibles con
la solución propuesta en el presente trabajo, deberán estar conectados a alguna red
perteneciente a la RTC o red de telefonía móvil y estar dentro del área de cobertura
para esa red de telecomunicaciones.
El sistema IVR dependerá totalmente de la disponibilidad y funcionamiento continuo
de los servidores, servicios y aplicaciones que influyen en el correcto desempeño del
sistema IVR, sin ser esto responsabilidad del desarrollador del sistema IVR después
de realizadas las pruebas respectivas.
Las marcaciones numéricas en el teclado del dispositivo telefónico serán el único
método de ingreso de datos u órdenes para la navegabilidad en el menú de opciones
del IVR.
El castellano es el único idioma con el cual se expondrá el árbol de opciones y la
información de productos emitidos por los subsistemas de consultas y alertas.
13
Los formatos de entrega de la información por parte del sistema IVR serán:
información audible para la consulta de datos de un determinado producto, e informe
escrito para el caso de los productos desabastecidos.
La gestión de los usuarios autorizados para el acceso a la información registrada en
la base de datos, será gestionada por la empresa Inova Netwoks e independiente del
sistema IVR.
La empresa Inova Networks cuenta solamente con un canal de comunicación, es
decir que tiene una única línea troncal instalada en su central de telecomunicaciones
Asterisk, por lo que las llamadas concurrentes al sistema IVR no serán posibles.
El stock mínimo de productos está definido por el reglamento interno de la empresa
Inova Networks, el cual puede ser visto en el anexo E.
Según los estudios de George Miller (Miller, 1956) y complementados por los
estudios de Gordon Parker (Parker, 2011), ha determinado que el número de ítems
máximos creados en los arboles de opciones en el IVR no sobre pasen la cantidad de
5 opciones por grupo de menú. Por lo que el menú principal del subsistema de
consultas a almacén tendrá cuatro opciones, el menú secundario dedicado a la
gestión de las consultas tendrá cuatro opciones y el menú principal del subsistema de
alertas tendrá tres opciones para la adquisición de información de productos
desabastecidos.
1.7.3 Aportes
La culminación del presente trabajo es pasible a ser utilizado como una guía para la
implementación de tecnologías CTI y sistemas IVR en diversos ámbitos, así también
sirve como base fundamental para posteriores investigaciones y trabajos en el área de las
telecomunicaciones.
14
2 MARCO TEÓRICO
2.1 Introducción
En el presente capítulo se expondrá los conceptos y teorías que permitirán entender de
forma clara el ámbito y el área de investigación, los cuales también se podrá enmarcar
las herramientas y tecnologías que serán utilizadas en el desarrollo del presente proyecto
de grado.
CENTRO DE CONMUTACION
E1 / T1 / PRI
EMPRESA
15
2.2.1 Sistemas analógicos
Los sistemas analógicos tuvieron sus inicios a mediados del siglo IXX, están
conformados básicamente por la red telefónica básica (RTB) que en definitiva son
circuitos analógicos comúnmente formados por pares de cobre que llegan a los abonados
del servicio telefónico y por el cual se transmite la señal eléctrica de la voz de manera
analógica.
La RDSI permite que en una línea coexistan múltiples canales, pudiendo contener cada
uno de ellos, datos (canales B) o señalización (canales D) y cada canal con un ancho de
banda de 64Kpbs. La RDSI básica o también conocida como línea BRI (Basic Rate
Interface) pose tres canales (dos canales B y un canal D), de forma que pueden realizarse
dos llamadas telefónicas de forma simultánea en una única BRI.
2.2.2.2 E1/T1
Un T1 es un acceso digital que dispone de 24 canales, pudiéndose realizar en veintitrés
canales una llamada individual, esta tecnología es común en Estados Unidos y Japón, en
Europa se emplea con mayor frecuencia el E1. A diferencia del T1, el E1 dispone de 32
canales.
2.2.3.1 GSM
GSM (Global System lor Mobile communications, proveniente en un principio de
Groupe Special Mobile) es el estándar más popular y extendido para teléfonos móviles
16
mundialmente. En 1991 la primera red GSM fue lanzada comercialmente,
concretamente en Finlandia. Su promotor, la Asociación GSM, estima que el 82% del
mercado global de teléfonos móviles emplea este estándar (Lopez, 2008, pág. 25).
GSM, a diferencia de la RTB, digitaliza tanto los datos de voz y los datos de
señalización., por lo cual se considera a GSM como un sistema de telefonía móvil de
segunda generación (2G) y gracias a esta ventaja, este estándar posibilita con mucha más
facilidad el poder establecer comunicaciones de datos.
GSM a fin de lograr una comunicación entre sus usuarios emplea varios codecs5 de
audio para comprimir el sonido transmitido a través de los terminales móviles. Al
principio, fueron empleados dos codecs, Half Rafe y Full Rate, que se llamaban así
debido a la relación que éstos guardaban con la forma en la que usaban el canal de
transferencia, de forma parcial o de forma completa, respectivamente. A partir de 1997
comenzó a emplearse el codec Enhanced Full Rate (EFR), que mejoró el estándar y
usaba el canal de transferencia completamente, en el mismo año el estándar añadió
capacidad para transportar paquetes de datos a través del servicio General Packet Radio
Service (GPRS), incluyendo entre otras cosas mensajes multimedia (Multimedia
Messaging Servíce o MMS) o aplicaciones de Internet a través del Wireless Application
Protocol (WAP). GPRS es comúnmente conocido como 2.5G, debido a que es una
especificación que se encuentra entre la segunda y la tercera generación de telefonía
móvil.
2.2.3.2 UMTS
UMTS (Universal Mobile Telecommunications System) es una tecnología de tercera
generación (3G) para telefonía móvil. Está estandarizado por 3GPP (3rd Generation
Partnership Program), una colaboración entre grupos de telecomunicaciones de varios
lugares del mundo para desarrollar una especificación de un sistema de telefonía
aplicable globalmente y que cumpla las exigencias de ITU IMT-2000. Ese sistema está
5
Codec, abreviatura de codificación y decodificación. Su uso se refiere a la capacidad de codificar y
decodificar una señal de audio en un sistema.
17
basado en una evolución de las especificaciones de OSM. 3GPP fue creado a finales de
1998, pero no sería hasta principios de 2000 cuando surgiría la especificación de la
primera red UMTS de uso comercial.
UMTS proporciona una gran mejora en la transferencia de datos con respecto a sus
predecesores, pudiendo alcanzar de forma teórica hasta 14 Mbps. En la práctica se han
llegado a alcanzar tasas de transferencia de bajada de 7.2 Mbps, una velocidad muy
superior a los 9.6 Kbps que ofrecían los primeros canales de datos empleados en GSM.
2.2.3.3 4G
Esta tecnología es la sucesora de las tecnologías de telecomunicación 2G y 3G
anteriormente expuestos, está basada en completamente en el protocolo IP gracias a la
convergencia de las tecnologías existentes.
4G provee una mayor velocidad de acceso a internet, siendo este factor la principal
diferencia con las anteriores tecnologías, esta velocidad de acceso es mayor a los 100
Mbps en movimiento, vale decir que el dispositivo conectado con esta tecnología se
encuentra desplazándose físicamente y en reposo llega en teoría a los 1 Gbps.
18
centralitas telefónicas, manteniendo el bucle local analógico, esta medida dio lugar a lo
que se conoce como RDI (Red Digital Integrada).
2.3 VoIP
Esta tecnología tuvo sus inicios en los años noventa, comenzando en esta gestión las
investigaciones y experimentaciones sobre el transporte de voz y video sobre redes IP.
En 1999 VoIP inicio su uso comercial, registrándose en el año 2000 un crecimiento del
tráfico de voz por red IP alcanzando el tres por ciento del tráfico total de voz en Estados
Unidos.
19
Figura 2.2: Arquitectura general de VoIP
Fuente: (Simionovich, AsteriskNow, 2008, pág. 24), (Lopez, 2008, pág. 39)
20
Common Channel Signalling (CCS) Aquí la información correspondiente a la
señalización se transmite en un canal independiente al de los datos (voz). Protocolos
de señalización pertenecientes a esta categoría es, por ejemplo, SS76.
Este protocolo de modo similar al protocolo SS7, transporta los datos y las
señalizaciones por canales distintos, enviando las transacciones y peticiones de registro
y autentificación al proxy SIP por un canal y enviando los datos por medio del Real
Time Protocol. (Ver figura 2.3)
Figura 2.3: Proceso de registro entre clientes y el servidor proxy. La señalización (SIP) y
las conversaciones de voz (RTP) viajan por caminos diferentes.
Fuente: (Pascual, 2006, pág. 9)
6
SS7 es un grupo de estándares desarrollados originalmente por la AT&T y la Unión Internacional de las
Telecomunicaciones (UIT), que se encarga de la gestión del establecimiento de llamadas y su
encaminamiento entre centrales telefónicas en la RTB.
21
2.3.2.2 H323
El protocolo H.323 fue diseñado por ITU en 1996. Fue diseñado para ser un estándar en
la transmisión de audio, video y datos a través de las redes IP, este protocolo es rápido,
en comparación al protocolo SIP, la cual utiliza paquetes de gran tamaño. Esto es debido
a que el formato de los mensajes en H.323 es binario, mientras que en los mensajes SIP
el formato es texto plano. El diseño de H.323 está muy arraigado a la filosofía seguida
en el diseño de la PSTN: simplicidad y alta disponibilidad.
2.4 Asterisk
Asterisk es una implementación de software libre de una centralita telefónica. El
programa permite tanto que los teléfonos analógicos o digitales conectados a la
centralita puedan hacer llamadas entre ellos como servir de pasarela a la red telefónica
tradicional. Al ser una PBX virtual, es decir un software en su totalidad, los
requerimientos de hardware para poderlo implementar son mínimos, ver tabla 2.1.
Tabla 2.1: Requerimientos mínimos según los propósitos
Fuente: (Meggelen, 2007, pág. 12)
Propósito Número de canales Mínimo recomendado
Hobby system No más de 5 400 Mhz x86, 256 MB RAM
SOHO system 5 a 10 1 GHz x86, 512 MB RAM
Small business system Arriba de 25 3 GHz x86, 1GB RAM
Medium to large system Mucho más 30 En lo posible servidores
distribuidos con doble
procesador
7
Traductor de Direcciones de Red, Network Address Translator, es la técnica que se utiliza para permitir
que varios ordenadores compartan una misma IP pública a través de IP’s privadas.
22
2.4.1 Arquitectura
Asterisk fue desarrollado de manera modular con el objetivo de hacer de este software
escalable y extensible, permitiendo al usuario final seleccionar los módulos que este
requiera. El esquema general de la arquitectura modular de Asterisk es conformado por
siete categorías principales (ver figura 2.4)
23
Figura 2.4: Arquitectura de Asterisk
Fuente: (Lopez, 2008, pág. 63)
AMI tiene un modelo del tipo cliente servidor basado en TCP, que generalmente por
medio del puerto 5038 se posibilita la interacción entre la central telefónica y una
determinada aplicación o sistema externo, a este puerto se puede acceder por medio de
24
Telnet o mediante una aplicación con sockets y es configurable modificando los valores
predeterminados escritos en el archivo manager.conf.
AMI recibe comandos llamados acciones, estos generan respuestas que contienen
información respecto al comportamiento que tuvo Asterisk en base a las acciones.
25
A diferencia de AMI, AGI ejecuta las aplicaciones en forma directa tan pronto sea
invocada dicha aplicación o función desde el dialplan. El comportamiento avanzado del
dialplan es derivado a un programa externo, permitiendo a Asterisk fácilmente contar
con tareas de complejidad avanzada, que de otro modo serian dificultosos de realizar con
las herramientas nativas de Asterisk.
El modo en que funciona el AGI es por medio del uso de los canales de comunicación
STDIN, STDOUT y STDERR, que sirven para lograr la interacción entre la central
telefónica Asterisk y programas externos a fin de enviar y recibir información.
Finalmente el script AGI puede hacer también el uso del STDERR o error estándar que
es en el que se pueden escribir los mensajes de error que se imprimirán en la consola de
Asterisk para su posterior depuración.
Los principales lenguajes en los que son escritos los programas como AGI scripts son:
Perl, PHP, Pyton, y cualquier otro lenguaje que soporte la utilización de los canales de
comunicación antes descritos. Por lo cual para cada lenguaje de programación existen
librerías especializadas para el manejo de los canales de comunicación para cada
lenguaje en específico.
Existen cuatro formas generales de utilizar AGI, una distinta de la otra, estos son: el AGI
estándar, el dead AGI, fast AGI y el EAGI.
26
El AGI estándar es el más utilizado en el ámbito del desarrollo de aplicativos y el cual
permite el uso de todos los comandos existentes para esta librería, ésta se ejecuta de
manera local en el servidor de Asterisk y se comunica con Asterisk por medio de los
canales de comunicación estándar anteriormente mencionados, con lo cual puede ser
manipulado el plan de discados desde el archivos extensions.conf y por consiguiente el
flujo de la llamada.
El dead AGI es una forma simplificada de AGI, este permite la realización de tareas y el
control de la lógica de programación una vez concluida el flujo de la llamada o cuando
el canal pasa al estado de espera, esta aplicación no puede ser utilizada si el canal en el
que se desea ejecutarla tiene un flujo de llamada.
EAGI, hace referencia a enhanced AGI, permite la utilización de todos los comandos
AGI y además agrega a la entrada estándar el acceso directo a los canales de audio del
flujo de la llamada en proceso, permitiendo de esta forma realizar un análisis de datos de
audio en bruto.
Por defecto Asterisk encuentra las aplicaciones que leerá el AGI en el directorio
/var/lib/asterisk/agi-bin/
27
permite ejecutar comandos AGI dentro de la aplicación PHP como si esos comandos
estuvieran escritos en el dialplan. (Simionovich, pág. 103)
El dialplan está constituido por cuatro principales conceptos, estos son: contextos,
extensiones, prioridades y aplicaciones.
2.5.1 Contextos
El dialplan está dividido en varias secciones las cuales son conocidas como contextos,
estos contextos son agrupaciones de extensiones que cumplen un determinado propósito
en el flujo de la llamada en base a las extensiones en interacción entre el usuario
llamante y la central telefónica.
Los contextos tienen la función principal de ordenar y agrupar las extensiones por los
comportamientos en común que estos tienen y de esta forma posibilitar e incluso el
28
compartir una misma central telefónica para diversos objetivos. De forma indirecta al
utilizar los contextos en un dialplan, se provee una capa de seguridad a las extensiones
que estén definidas en los contextos, al ser estas extensiones configuradas para un
determinado acceso de llamadas entrantes y salientes a la misma, o habilitación de
determinadas características para los mismos.
Un contexto está definido por un nombre, pudiendo ser este nombre formado por letras
de la A a la Z, números 0 al 9, guion y la barra baja. Este nombre debe de estar
encerrado entre corchetes ([]) para ser reconocido en el tiempo de ejecución por el
compilador.
2.5.2 Extensiones
El termino extensión en el ámbito de las telecomunicaciones generalmente hace
referencia a un identificador numérico de un dispositivo telefónico en particular,
dotándole de un tono para permitir la comunicación entre otros dispositivos, sin embargo
las extensiones definidas dentro de Asterisk, tiene muchas más funcionalidades ya que
es posible definir en el plan de marcado, una serie de pasos y ejecución de aplicaciones
en el proceso de interacción entre extensiones. Estas extensiones también pueden ser
definidas con comportamientos de telefonía tradicional para algunos usos específicos.
La sintaxis para la definición de una extensión comienza con la palabra “exten” seguida
del signo igual y mayor que, luego de esta sintaxis viene el nombre o número de
extensión.
Una completa definición de extensión, en Asterisk, está formada por tres componentes,
estos son:
29
Estos tres componentes son separados por comas en su sintaxis de la siguiente forma:
exten => nombre/número de la extensión, prioridad, aplicación/acción
2.5.3 Prioridades
Cada extensión puede poseer múltiples pasos, llamados prioridades. Cada prioridad esta
enumerada secuencialmente, empezando en uno, el cual ejecuta una específica
aplicación.
30
2.5.4 Aplicaciones y funciones
Se denominan aplicaciones a aquellos módulos que realizan algún tipo de acción sobre
algún canal u extensión, y funciones a aquellos que realizan otro tipo de procesamiento
que no afecte directamente a un canal u extensión.
Las aplicaciones son potentes herramientas que proveen complejidad al dialplan, siendo
que cada aplicación realiza una determinada acción a un específico canal, entre estas
acciones se puede mencionar: reproducción de música en espera, aceptación de entrada
de datos por códigos DTMF, finalización de llamada, etc.
Como se pudo ver en las anteriores figuras, se hicieron uso de las aplicaciones Answer(),
Hangup() las cuales tiene la función de aceptar la llamada y finalizarla respectivamente.
Estas aplicaciones no necesitan de información adicional para su correcto
funcionamiento, esta información adicional es conocida como argumento y pueden ser
pasadas a las aplicaciones o funciones para modificar el comportamiento de las mismas
y obtener ciertos resultados.
8
ASR, Automatic Speech Recognition, reconocimiento automático del habla, permite al usuario enviar
comandos por medio de la voz humana a un sistema informático.
31
Debido al uso de esta tecnología, las empresas han ido disminuyendo el capital humano
que se encargaba en la realización de esas tareas, aumentando la satisfacción del cliente
respecto a la velocidad de obtención de respuestas en tiempo real. La aplicación de una
solución IVR permite atender a múltiples clientes de forma simultánea 24 horas al día,
365 días al año, gestionar un gran volumen de consultas usuales veloz y eficazmente,
rentabilizar los recursos humanos y materiales dedicados a la atención telefónica,
aumentando la productividad de los departamentos de atención al cliente.
El IVR en Asterisk hace uso de AMI y/o de AGI para lograr la interacción con sistemas
externos o permitir la conectividad a distintas base de datos, para de esta forma contar
con un complejo plan de marcados, el cual no solo se limitaría a una contestadora
automática.
Para la configuración y creación de un IVR básico, serán necesarios son los sonidos que
se van a reproducir al ingreso de una llamada. Estos sonidos deben encontrarse en el
directorio de sonidos de Asterisk (normalmente /var/lib/asterisk/sounds/) y tener un
formato reconocido por éste. Junto con Asterisk se distribuye un juego de sonidos
estándar en inglés, pero además existen juegos de voces de gran calidad en castellano,
pero normalmente se requerirán de algunos sonidos personalizados ('gracias por llamar a
la empresa, 'pulse 1 para hablar con el departamento de ventas... ').
32
Para una programación básica de IVR se dispone de algunas aplicaciones básicas para el
dialplan:
33
Según el avance tecnológico, los sistemas TTS fueron evolucionando respecto a la
fluidez y claridad con la que se sintetizaban las oraciones. En un inicio estos sistemas
eran propietarios y de código cerrado y por lo tanto de altos costos, por lo cual los
usuarios que podían acceder a esta tecnología eran escasos, siendo el sector bancario el
principal consumidor.
34
captadas por medio de reglas de flexión, derivación y composición.
Alternativamente, se construye un léxico que contiene las distintas formas.
La pronunciación de las palabras que no están en el léxico, se determina por medio
de reglas de entonación.
En la solución basada en reglas se generan reglas de pronunciación, a partir de la
información fonológica de los diccionarios. Sólo aquellas palabras que en su
pronunciación constituyen la excepción a las reglas, son integradas al diccionario de
excepciones.
Este proceso tiene un nivel alto de complejidad, pues dependiendo de los algoritmos que
se utilicen para la concatenación de los fonemas audibles, puede resultar en un audio de
baja calidad que tener un tono robótico o inhumano. El algoritmo utilizado por el TTS
Festival se llama Residual Excited Linear Prediction (RELP), con el cual se puede
obtener una voz sintética muy parecida al habla humano.
2.6.4 Festival
Festival es un sistema de síntesis de voz de propósito general para múltiples lenguajes,
desarrollado originalmente por el Centro de Investigación de Tecnologías del Lenguaje
de la Universidad de Edimburgo. La Universidad Carnegie Mellon así como otros
centros de enseñanza han ido realizando contribuciones substanciales al proyecto.
Este TTS se distribuye como software libre con licencia similar a la licencia BSD9.
Festival y las herramientas de síntesis de voz se distribuyen bajo licencia tipo MIT-
9
BSD, es una licencia de software libre permisiva con menos restricciones que una licencia del tipo GLP,
esta licencia permite utilizar el código fuente en software no libre estando muy cercana al dominio
público.
35
X1110 permitiendo uso comercial y no comercial sin restricción, este está escrito en
lenguaje C++ y está implementado como un intérprete de comandos el cual puede
conectarse con diversos módulos y aplicaciones.
10
Licencia originada en el instituto de Massachusetts (MIT, Massachusetts Institute of Technology), Esta
licencia permite reutilizar el software así licenciado tanto para ser software libre como software
propietario permitiendo no liberar los cambios realizados al programa original.
36
En contraposición a las metodologías convencionales, las metodologías ágiles son
apropiadas cuando los requisitos son emergentes y cambian rápidamente. De este modo,
presentan diversas ventajas en el contexto actual:
2.7.1 Scrum
Scrum es el término que describe una forma para desarrollar productos iniciada en
Japón, este un proceso para la gestión y control del producto que trata de eliminar la
complejidad en estas áreas para centrarse en la construcción de software que satisfaga
las necesidades del negocio. Se concentra, principalmente, a nivel de las personas y
equipo de desarrollo que construye el producto. Su objetivo es que los miembros del
equipo trabajen juntos y de forma eficiente obteniendo productos complejos y
sofisticados.
37
Roles.- Scrum distingue distintos actores con diferentes papeles dentro del proceso. De
forma general, podemos distinguir:
Product Backlog.- Es un listado de tareas representadas por historias de usuario, que son
el elemento base que utiliza SCRUM para describir las características que el usuario
espera que tenga el software que se va a desarrollar. Por lo tanto, pueden incorporar
tanto cuestiones relacionadas con las funciones del sistema como con cualquier otro
aspecto del mismo (restricciones, rendimiento, etc.). Las historias de usuario se
presentan desde la perspectiva del usuario. Así, no se describen utilizando una
terminología técnica sino que se escriben utilizando un lenguaje cercano al dominio de
la aplicación que se está desarrollando de forma que sea comprensible por los clientes y
por los desarrolladores. Las historias de usuario se construyen bajo un mismo esqueleto
que centra el foco de las características del producto.
38
necesario un esfuerzo mínimo para que el producto esté disponible para ser utilizado.
Para este fin el sprint se compone de:
La figura 2.9 se muestra los elementos anteriormente descritos y el ciclo de vida del
desarrollo que propone Scrum para un producto software.
39
2.8 Norma IEEE 830
El análisis de requisitos es una de las tareas más importantes en el ciclo de vida del
desarrollo de software, puesto que en ella se determinan los “planos” de la nueva
aplicación.
En cualquier proyecto software los requisitos son las necesidades del producto que se
debe desarrollar. Por ello, en la fase de análisis de requisitos se deben identificar
claramente estas necesidades y documentarlas. Como resultado de esta fase se debe
producir un documento de especificación de requisitos en el que se describa lo que el
futuro sistema debe hacer. Por tanto, no se trata simplemente de una actividad de
análisis, sino también de síntesis.
El análisis de requisitos se puede definir como el proceso del estudio de las necesidades
de los usuarios para llegar a una definición de los requisitos del sistema, hardware o
software, así como el proceso de estudio y refinamiento de dichos requisitos, definición
proporcionada por el IEEE (Piattini, 1996). Asimismo, se define requisito como una
condición o capacidad que necesita el usuario para resolver un problema o conseguir un
objetivo determinado (Piattini, 1996).
40
Ámbito del sistema, en esta subsección se pondrá nombre al futuro sistema, se
explicará lo que el sistema hará y lo que no hará, se describirán los beneficios,
objetivos y metas que se espera alcanzar con el futuro sistema.
En definiciones, acrónimos y abreviaturas se definirán todos los términos, acrónimos
y abreviaturas utilizadas en el desarrollo de la ERS.
En referencias se presentará una lista completa de todos los documentos
referenciados en la ERS.
Visión General del Producto, en esta subsección describirá brevemente los
contenidos y la organización del resto de la ERS
Descripción general, en esta sección se describen todos aquellos factores que afectan
al producto y a sus requisitos.
Perspectiva del Producto, en esta subsección debe relacionar el futuro sistema con
otros productos.
Funciones del Producto, en esta subsección debe proporcionar un resumen de las
funciones principales que el software debe llevar a cabo.
Características de los usuarios, aquí se indica el tipo de usuario al que se dirige la
aplicación, así como su experiencia técnica, nivel de conocimientos, etc.
En restricciones se debe indicar cualquier tipo de limitación como pueden ser
políticas de la empresa, limitaciones hardware, seguridad, protocolos de
comunicación, estándares de la empresa en cuanto a interfaces, etc.
Requisitos Específicos, en esta sección de la especificación de requisitos software
contiene todos los requerimientos hasta un nivel de detalle suficiente para permitir a
los diseñadores diseñar un sistema que satisfaga dichos requisitos.
Interfaces Externas, en esta subsección se definirán los requisitos que afecten a la
interfaz de usuario, así como a interfaces de comunicaciones.
Requisitos de Rendimiento, en esta subsección se incluyen los requisitos
relacionados con la carga que se espera que tenga que soportar el sistema
41
Restricciones de Diseño, se incluyen aquí todas las restricciones que afecten al
diseño de la aplicación, como pueden ser estándares internos de la organización,
limitaciones hardware, etc.
42
3 MARCO APLICATIVO
3.1 Introducción
En este capítulo se aplicarán los conceptos descritos en el marco teórico (Capitulo 2),
con el fin de cumplir con los objetivos propuestos. Se desarrolló la aplicación utilizando
la metodología de desarrollo ágil Scrum y la especificación de los requerimientos
utilizando la norma IEEE 830.
Por medio del uso de esta metodología y la norma se hace posible la recopilación de los
requisitos, la asignación correcta de roles respecto a la participación del desarrollo del
sistema de respuesta de voz interactiva, la planificación de las tareas a realizar, la
gestión y control de los avances del desarrollo del sistema propuesto en el presente
documento.
El Scrum master estará conformado por la docente tutora y la docente asesora quienes se
encargan de eliminar los posibles obstáculos para la culminación de las tareas previstas
en un determinado sprint.
El equipo que estará conformado por el tesista, quien tiene la responsabilidad de diseñar
y desarrollar, conjuntamente con el Producto Owner y el Scrum master, el producto
requerido y de esta forma concretar la entrega del mismo.
43
3.3.1 Historias de usuario
En base a la información obtenida por el uso de los instrumentos de investigación
mencionados anteriormente, se puede realizar el análisis de dicha información. Este
análisis deriva en la tabulación de los requisitos identificados por el Product Owner
conocidos también como historias de usuario que además conformarán los
requerimientos funcionales, ver tabla 3.1. Las demás historias de usuario pueden ser
vistas en el anexo F en la sección de historias de usuario.
44
el dispositivo de telecomunicación, la contraseña que
lo identifica como usuario autorizado
HU-10 El cliente ingresa una Cliente En caso de que el cliente no digite una contraseña
contraseña de usuario valida, se escuchará un mensaje de error.
no valida El número de intentos deberá ser menor a tres.
Spr
ID Nombre Usuario Descripción Importancia
int
HU-1 Bienvenida Cliente Se escucha la bienvenida al cliente 100 2
Se escucha el menú principal con todas
HU-2 Menú principal Cliente las opciones que permitan brindar un 100 2
servicio al cliente
Elección de la primera El cliente presiona la tecla uno, con la
HU-3 opción del menú Cliente cual elige la primera opción, la cual es el 60 2
principal contactarse con el área de ventas
Contacto directo con La llamada es transferida a un agente
HU-4 Cliente 40 3
el área de ventas de ventas.
El cliente presiona la tecla dos, con la
Elección de la segunda
cual elige la segunda opción, la cual es
HU-5 opción del menú Cliente 60 2
el contactarse con el área
principal
administrativa.
La llamada es transferida al número de
Contacto directo con
HU-6 Cliente interno de recepción del área 40 3
el área administrativa
administrativa
El cliente presiona la tecla tres, con la
Elección de la tercera
cual elige la tercera opción del menú
HU-7 opción del menú Cliente 100 2
principal que es el consultar datos
principal
respecto a los productos en almacén.
Se hace audible la petición de la
contraseña que identifique la validez
Petición de
HU-8 Central del usuario para poder realizar esta 90 3
identificación
acción (consultar información referente
a los productos en almacén)
El cliente digita, por medio de las teclas
numerales en el dispositivo de
HU-9 Ingreso de contraseña Cliente 80 3
telecomunicación, la contraseña que lo
identifica como usuario autorizado
En caso de que el cliente no digite una
El cliente ingresa una contraseña valida, se escuchará un
HU-10 contraseña de usuario Cliente mensaje de error. 70 3
no valida El número de intentos deberá ser
menor a tres.
45
Ahora se definirán las fichas de historias de usuario en base a la pila de producto, a
continuación en la figura 3.1, se mostrarán las dos primeras fichas de historias de
usuario y el resto de las fichas pueden ser vistas en el anexo F en la sección de fichas de
historias de usuario.
46
Pruebas de conexión remota desde
HT-6 servidor local de aplicaciones web, a 1 Cesar Nilton Rojas Valero 1
servidor de base de datos exterior
Pruebas de efectividad de realización
HT-7 1 Cesar Nilton Rojas Valero 1
de tareas con Crontab
Una vez definidas las historias técnicas, se crearon las fichas técnicas, en las cuales de
describe a mayor detalle el modo de desarrollo de cada historia, a continuación en la
figura 3.2 se pueden ver las fichas de la primera y segunda historia técnica, el resto de
las fichas técnicas pueden ser vistas en el anexo F en la sección de fichas técnicas.
3.3.2.1 Introducción
A continuación se desarrollará los acápites propuestos por la norma IEEE 830 adecuados
al ámbito de estudio del presente trabajo.
3.3.2.1.1 Propósito
El propósito de la presente especificación es definir los requerimientos que deberá de
satisfacer el sistema IVR propuesto en el presente trabajo, el cual abordará la consulta de
información de los productos respecto a su almacenaje y la automatización de alertas
tempranas ante un posible desabastecimiento de productos en almacén.
47
HISTORIA TÉCNICA HISTORIA TÉCNICA
ID HT-1 ID HT-2
Nombre Nombre
Instalación y configuración de servidor de Instalación y configuración de TTS Festival
aplicaciones web en Centos
Descripción Descripción
Se instala y/o actualiza PHP en el sistema Se instala el sintetizador de voz Festival,
operativo Centos obteniéndolo desde la dirección: “apt-getinstall
Se modifican festival festvox-ellpc11k”, se modifican los archivos
de configuración etc/asterisk/festival.conf para
redireccionar el ejecutable de festival,
/usr/share/festival/festival.scm para permitir que
Asterisk utilice los servicios de festival,
/usr/share/festival/init.scm para acceso al log de
actividades durante la sintetización.
Usuario Usuario
Cliente Cliente
48
Realiza llamada a la
línea
telefonica2XXXXXX
Interfaz con el usuario
El dispositivo telefónico del usuario deberá contar con la emisión de tonos DTMF, los
cuales serán indispensables para el ingreso a las opciones del IVR e ingreso de los
parámetros de entrada tales como los códigos de productos y contraseña de usuario
requeridos por el sistema IVR.
49
INTERNET BD_ALMACEN
Servidor para el sistema almacenes
Telefono IP
Vo
IP
Interfaz de harware
Telefono IP
RTC, GSM,
UMTS, 4G
Asterisk
Softphone
Softphone
Se deberá contar con mínimo de 100Mb de espacio libre en disco duro para poder
guardar los archivos de configuración, líneas de código y los archivos de audio
necesarios para el funcionamiento del sistema IVR.
50
3.3.2.2.1.4 Interfaz de comunicación
Para el correcto funcionamiento y correcta interacción con el sistema IVR, el dispositivo
telefónico en caso de estar conectado a la red de telefonía conmuta deberá de contar con
tono de llamada y en caso de estar conectado a una red de telefonía móvil deberá de
estar dentro del rango de -50 dBm11 y -69 dBm que indica una intensidad de señal
celular aceptable (Winder, 2001, pág. 17).
3.3.2.2.1.5 Operaciones
Las operaciones descritas a continuación, se basan principalmente en la abstracción de
las tarjetas de historias técnicas y las historias de usuario, anteriormente identificadas.
Al ingresar al sistema IVR, los usuarios podrán acceder hasta un primer nivel de
opciones sin ninguna restricción y de manera libre, lo que favorecerá la aceptación por
parte del usuario para consultar algunos servicios. Para el ingreso al segundo nivel de
opciones de la opción tres del primer nivel se pedirá el ingreso de una contraseña al
usuario a fin de autentificarlo y verificar la autorización. Esta contraseña deberá de ser
ingresada por medio de los tonos DTMF. Seguidamente se le pedirá al usuario el ingreso
del código de producto del cual desea realizar consultas.
Servidor de telecomunicaciones local
Driver de
Servidor de aplicaciones remoto
conexión a Canales
TTS
DBMS AGI Sip, Iax, Servidor de aplicaciones web
Festival
Zap Servidor de
Interfaz de software
externo
Cron base de
datos
Servidor de correos
Servidor de
aplicaciones Asterisk
11
Unidad de medida utilizada principalmente en telecomunicaciones para expresar la potencia absoluta
mediante una relación logarítmica, se define como el nivel de potencia en decibelios en relación a un
nivel de referencia de 1 miliwatt
51
La descripción del flujo de la llamada y el árbol de opciones para los menús principal y
secundario del sistema IVR, para el subsistema de consultas a almacén, están detalladas
en el diagrama de flujo en la figura 3.7.
La descripción del flujo de la llamada y el árbol de opciones para el menú IVR del
subsistema de alerta temprana, están detalladas en el diagrama de flujo en la figura 3.8.
52
Alerta de
Menú principal
desabastecimiento
Area de Consultas a
Area de ventas
administración almacen
Procesamiento de
datos
Comunicación de
resultados
53
A
Se captura el tono
DTMF ingresado
por el usuario
Transferencia de
Mensaje de opción ¿Menor a tres
llamada al área de Opción 1 ¿Opción válida? No NO
no valida intentos?
ventas
HANGUP
HANGUP
Transferencia de Transferencia a
llamada al área Opción 2 Opción 3 gestor de consultas
administrativa a almacenes
Opcion 4
Mensaje de
petición de
Iconografía B contraseña de
Reproducción de un Transferencia de usuario
mensaje llamada a operador SI
Se capturan los
Listado de opciones tonos DTMF
en forma audible ingresados por el
usuario
Captura de datos
Mensaje de acción Mensaje de saludo ¿Usuario Mensaje de clave
NO
incorrecta a usuario valido? erronea
Control de acceso
NO
NO
Se capturan los
tonos DTMF A
ingresados por el
usuario
¿Código de
Mensaje de opción ¿Menor a tres
producto NO
no valida intentos?
NO B
valido?
Op. 4 SI
Mensaje de producto
seleccionado
(categoría y nombre )
54
Mensaje de Se capturan los
¿Menor a tres petición de tonos DTMF
SI
intentos? contraseña de ingresados por el
usuario usuario
NO
Mensaje de clave ¿Usuario
erronea valido?
Mensaje: usuario
no autorizado
Mensaje de
bienvenida
HANGUP
HANGUP Verifica la
existencia de
productos
desabastecidos
Mensaje que
Mensaje que indica ¿Cantidad de
comunica la
que los productos productos con
SI existencia de
tiene un stock stock mínimo
productos con
aceptable mayor a 0?
stock minimo
Iconografía
Reproducción de un
mensaje Mensaje de opción
NO ¿Opción Valida?
no valida
Listado de opciones
en forma audible
Op. 1 Op. 3
Consulta a base de
datos A
Envío de email
55
En base al flujo de la llamada y los bloques identificados, pueden definirse de mejor
manera las funciones globales que conforman el producto final y detallar las tareas
específicas de cada funcionalidad en forma de casos de uso. A continuación se describirá
extensamente el bloque de consultas a almacén. Los demás bloques vistos en la figura
3.6 serán descritos en el anexo G.
A continuación se describirá por medio de un diagrama de casos de uso, (ver figura 3.9)
el comportamiento general del subsistema de consultas a almacén.
En las tablas 3.4 al 3.9, se describirán las funciones que tendrán que cumplir los casos de
uso mostrados en la figura 3.9.
Recibir información
Ingresar información
requerida (contraseña de
usuario)
Usuario
Validar usuario
Ingresa código de
producto
Validar Codigo
producto
Gestor de consultas
Entregar
información consultada
56
Tabla 3.4: Caso de uso 3.1 - Recibir información
Fuente: Elaboración propia
CU – 3.1 Recibir información
Descripción Al ingreso del menú principal del sistema IVR, el cliente recibirá un
mensaje audible de bienvenida e información sobre el digito de
opción que permitirá realizar consultas respecto a la información de
productos en almacén. Posteriormente, con una pausa de al menos
2 segundos, se volverá a repetir las opciones del menú principal del
IVR
Actores Cliente
Precondiciones El cliente deberá de estar en línea para poder escuchar los mensajes
audibles del sistema IVR
Secuencia normal de eventos Paso Acción
1 El cliente recibirá un mensaje de bienvenida
2 El cliente escuchará como menú el digito de opción que le
dirigirá a la aplicación que gestionara las consultas
respecto a la información de productos en almacén
Postcondición No aplica, puesto el cliente solamente recibirá información y solo
escuchara las opciones de un menú
Excepciones Paso Acción
1 Si el cliente no elige alguna de las opciones indicadas en el
menú, se le informará que la opción seleccionada no es
válida.
2 Si existiesen tres intentos erróneos de elección de alguna
opción del menú, el cliente recibirá un mensaje de
despedida y se concluirá la llamada.
57
1 Si el cliente no digita ningún numero en su teclado de
dispositivo telefónico durante los próximos 1.5 segundos, ,
este recibirá un mensaje en el que se le informa que la
contraseña es errónea y se volverá a escuchar el mensaje de
requerimiento de contraseña
2 Si existiesen tres intentos erróneos de ingreso de contraseña
y se le remitirá al menú principal del sistema IVR.
58
2 El usuario ingresara el código de producto a consultar vía
tonos DTMF
Postcondición Los tonos DTMF ingresados por el usuario llamante, deberán de ser
capturados por el sistema DTMF y almacenados en una variable
para su posterior validación contra la base de datos.
Excepciones Paso Acción
1 Si el usuario no ingresa ningún código de producto, este
escuchará un mensaje de error de código de producto y
seguidamente se le pedirá al usuario ingresar el código de
producto nuevamente.
2 Si existiesen tres intentos erróneos de ingreso de código, el
cliente recibirá un mensaje de error de código y se le
pedirá al usuario ingresar nuevamente su contraseña de
usuario CU – 3.2.
59
Tabla 3.9: Caso de uso 3.6 – Entregar información consultada
Fuente: Elaboración propia
60
fin de que el sistema IVR y todos los módulos y servicios que ofrece funcionen
adecuadamente.
Tomar en cuenta que se tomó como semana de trabajo los días habilites laborales, es
decir los días lunes a viernes y cada una con 6 horas diarias de trabajo, adecuados a la
disponibilidad de tiempo por parte de la empresa Inova Networks.
sep. 2013 oct. 2013
Id. Nombre de tarea Comienzo Fin Duración
1/9 8/9 15/9 22/9 29/9 6/10
SPRINT 1 - Instalación y
1 configuración de dependencias y 30/08/2013 02/09/2013 3d
servicios
SPRINT 2 – Diseño y desarrollo de
2 03/09/2013 14/09/2013 11d
sistema IVR principal
SPRINT 3 - Verificación y validación
3 de ingreso de usuario a modulo 16/09/2013 21/09/2013 6d
gestor de consultas a almacén
SPRINT 4 - Diseño de modulo de
4 23/09/2013 27/09/2013 5d
consultas a almacén
SPRINT 5 - Diseño y desarrollo de
5 menú para modulo de alerta ante 30/09/2013 10/10/2013 10d
desabastecimiento
61
El esquema de presentación general de cada Sprint se basara en los siguientes puntos:
Dentro del desarrollo de los Sprint se consideran el cronograma que contiene las tareas
del sprint, el Backlog inicial, el Backlog final y el Burndown como referente al avance
de la culminación de las tareas del Sprint.
3.5.1 Sprint 1
3.5.1.1 Planificación
El objetivo del Sprint 1, es adecuar los servidores de Inova Networks a los
requerimientos del producto en desarrollo, para tal fin se realizarán las instalaciones de
distintos servicios, servidores y configuración de dependencias en los servidores ya
existentes pertenecientes a la empresa.
62
ago. 2013 sep. 2013
Id. Nombre de tarea Comienzo Fin Duración
30 31 1 2
63
3.5.1.2 Desarrollo
La instalación y configuración del software fue realizado en los servidores y equipos de
los que disponen en la empresa Inova Networks, siendo estos: un servidor de
telecomunicaciones Asterisk, un servidor de aplicaciones web alojado en un hosting
externo, un servidor de base de datos MySQL alojado en un hosting externo.
Se verificó que el servidor local Asterisk ya contaba con una versión de PHP instalada,
sin embargo dicha versión era ya obsoleta por lo cual utilizando la herramienta YUM12
se descarga, actualiza e instala el compilador e interprete para el lenguaje PHP en su
versión 5.1.6 para aun correcto funcionamiento respecto los programas a ser
desarrollados.
12
Herramienta libre de gestión de paquetes para sistemas Linux basados en Red HatPackage Manager
(RMP)
64
;(eval (list voice)) ;línea 1
;(provide 'init) ;línea 2
;; cambiar las dos líneas anteriores Por
(eval (list voice_el_diphone)) ;línea 3
(provide 'init) ;línea 4
Figura 3.14: comando para acceder al log de actividades en tiempo real de Asterisk
Fuente: Elaboración propia
Para configurar el DBMS MySQL y permitir conexiones remotas se realizó una petición
al administrador de base de datos del hosting externo, en el cual se aloja el servidor,
solicitándole la edición de privilegios para el usuario U a fin de que este usuario tenga
permitido realizar consultas remotas. El comando utilizado para la modificación de
privilegios de usuario y asignarle privilegios de acceso remoto puede ser visto en la
figura 3.16 sección A. También se agregaron permisos de acceso al servidor de
telecomunicaciones Asterisk, registrando la IP publica de dicho servidor en la lista de
host remotos en el sistema del hospedaje, dicha configuración puede ser vista en la
figura 3.16 sección B.
65
información, a la función conect() de la librería AdoDB, puede ser vista en la figura 3.17
en la sección A.
A continuación en la figura 3.17 sección B, se muestra una captura de pantalla
verificando el éxito de conexión remota a la base de datos.
//Sección A
ADONewConnection('mysql://U:P@XXX.XXX.XXX.XXX/xxxxxx_tienda')
//Sección B
Figura 3.17: Cadena de conexión a base de datos remota con AdoDB y éxito de conexión
Fuente: Elaboración propia
66
Las pruebas respecto a la efectividad de la realización de tareas con Crontab, son
realizadas en modo consola, agregando comandos cron al Crontab en Centos (ver figura
3.18), y configurándolo de tal forma que realice una tarea cada lapso de tiempo, la
verificación del correcto funcionamiento del comando puede ser visto en la figura 3.19,
en la cual se puede ver el log sobre las tareas realizadas por el demonio cron, este log fue
obtenido desde el directorio /var/log ingresando al archivo cron.log
En los siguientes gráficos se mostrarán el Backlog final y el burdown del Sprint uno, que
muestran las horas invertidas por día para la realización de las tareas del Sprint (ver
Figuras 3.20, 3.21)
Figura 3.19: Detalle del log de actividades y tareas ejecutadas por el comando Cron
Fuente: Elaboración propia
67
Sprint: Instalación y configuración de dependencias y servicios
30/08/2013
31/08/2013
02/09/2013
Sprint Inicio Num. días
Dias de
trabajo
1 30/08/2013 3
Tareas pendientes 7 6 5 0
Horas de trabajo pendientes 18 12 6 0
PILA DEL SPRINT Horas de
Esfuerzo
Backlog ID Tarea Tipo Estado Responsable diferencia
HT-1 Instalación y configuración de servidor de Instalación Finalizado Cesar Rojas Valero 2 2 0 0 0
aplicaciones
Instalación y web en Centosde TTS
configuración
HT-2 Instalación Finalizado Cesar Rojas Valero 6 4 2 0 0
Festival Cesar Rojas Valero
Configurar DBMS MySql para permitir
HT-3 Configuración Finalizado Administrador 6 0 4 2 0
conexiones remotas
hosting
HT-4 Instalación de librerías AdobDB Php Instalación Finalizado Cesar Rojas Valero 1 0 0 1 0
como manejador
Pruebas de conexiones
de conexión remota desdea DBMS
HT-5 Pruebas Finalizado Cesar Rojas Valero 1 0 0 1 0
servidor local de aplicaciones
Configuración de Crontab para web, a
HT-6 Configuración Finalizado Cesar Rojas Valero 1 0 0 1 0
realización
Pruebas de de tareas ende
efectividad segundo plano
realización de Pruebas
HT-7 Finalizado Cesar Rojas Valero 1 0 0 1 0
tareas con Crontab
Total de horas empleados por dia 6 6 6 0
68
3.5.2 Sprint 2
3.5.2.1 Planificación
El objetivo del Sprint 2 es el de crear el diseño general del sistema IVR, para lo cual se
utilizará la información recabada en el acápite de 3.3, una vez concluido el diseño
general se procederá a la programación de los requisitos identificados desarrollando el
menú principal del sistema IVR, en el cual se detallan inicialmente los servicios básicos
que son: contacto con el área de ventas, contacto en el área administrativa, contacto con
un operador y finalmente permitir la interacción con el sistema de consultas a almacén.
Para la verificación del correcto funcionamiento de las tareas presentadas anteriormente
se realizarán las pruebas necesarias las cuales serán documentadas para su presentación
en este capítulo.
A continuación se mostrarán las tareas definidas para el segundo sprint, en la figura 3.22
se muestra la agenda general con estimaciones sobre la culminación de trabajos en días y
en la figura 3.23 se muestran en detalle los trabajos a ser realizados con estimaciones en
horas.
sep. 2013
Id. Nombre de tarea Comienzo Fin Duración
3 4 5 6 7 8 9 10 11 12 13 14
69
Sprint 2 inicial: Diseño y desarrollo de sistema IVR principal
3.5.2.2 Desarrollo
Inicialmente basados en los requisitos obtenidos, se identifican las grabaciones que
formarán parte del menú principal del sistema IVR, estas grabaciones son presentadas al
Product Owner para su posterior aprobación en un formato de texto y posteriormente ser
grabadas por una voz humana o sintetizadas por el TTS Festival.
70
Tabla 3.10: Scripts de grabaciones para el sistema IVR
Fuente: Elaboración propia
71
para listar los nombres de los productos, presione tres para que
le enviemos a su correo electrónico un informe detallado
Listado de id’s de productos con stock Los id´s de los productos con stock mínimo son: id [id del
mínimo producto i] stock [stock del producto i], id [id del producto i+1]
stock [stock del producto i+1],… , id [id del producto n] stock
[stock del producto n]
Listado de nombres de productos con Los productos con stock mínimo son: [nombre del producto i]
stock mínimo stock [stock del producto i], [nombre del producto i+1] stock
[stock del producto i+1],… , [nombre del producto n] stock
[stock del producto n]
Envío de correo electrónico con Se le ha enviado a su correo electrónico un informe detallado de
informe los productos con stock mínimo.
Una vez que se cuente con los elementos necesarios para la grabación, esta se la realiza
utilizando el sistema de grabación disponible en el panel de administrador de la interfaz
web de gestión de Asterisk. El panel mencionado anteriormente puede ser visto en la
figura 3.24, en el cual puede observarse que inicialmente nos indica marcar *77 en el
teléfono configurado para utilizar este sistema, una vez que se realiza esta acción, el
sistema de grabación requiere que se inicie el dictado del mensaje que se desea grabar,
concluido el dictado se finaliza la llamada y se debe de ingresar un nombre para el
archivo grabado, el cual esta temporalmente almacenado en el directorio
/var/spool/asterisk/tmp/temp.wav hasta que es guardado en el directorio
/var/lib/asterisk/sounds con el nombre elegido.
Una vez recopilados los mensajes de audio que serán parte del sistema IVR, se crea el
diseño general de dicho sistema. Para esta tarea se utilizará como base de elaboración los
diagramas de flujo desarrollados en el acápite 3.3.2.2.2.
72
Figura 3.24: Sistema de grabación de mensajes
Fuente: Elaboración propia
73
opciones de consulta que son: consulta de stock actual, consulta de precios al menor y
mayor, descripción general y opción de consulta de otro producto.
Seguidamente se listan las opciones de consulta respecto a los productos con stock
mínimo, las opciones son: listado de los identificadores o id‟s de los productos con el
stock actual, listado de los nombres de los productos con sus respectivos stock y
finalmente un envío de correo electrónico el cual tiene adjunto un informe de los
productos desabastecidos. El usuario tiene un máximo de tres intentos para elegir una
opción correcta, en caso de sobrepasar este limite el usuario escuchara un mensaje de
despedida y se finalizará la llamada. Concluido el dictado de la información requerida se
listan nuevamente las opciones del menú de consultas.
74
A
¿Opción Valida?
HANGUP
HANGUP
Opción 1
Opción 2
Opción 3 Transferencia a
«Estimado usuario, se le
«Estimado gestor de consultas
está transfiriendo al
usuario, se le está a almacenes
área de ventas, espere
un momento por favor» transfiriendo al
área
administrativa,
«Ingrese su
espere un
momento por
B contraseña de
usuario»
Transferencia de favor»
llamada al área de
SI
ventas
Se capturan los
Transferencia de
tonos DTMF
llamada al área
ingresados por el
administrativa
usuario
Iconografía
(Buenos días/Buenas «La contraseña
Reproducción de un tardes/Buenas noches) ¿Usuario de usuario que ha
NO
mensaje (apellido paterno del valido? ingresado es
usuario) errónea»
Listado de opciones
en forma audible
«Ingrese el código del
producto que desea SI ¿Menor a tres
Captura de datos consultar» intentos?
Mensaje de acción NO
incorrecta Se capturan los NO
tonos DTMF
Control de acceso ingresados por el A
usuario
Consulta a base de
datos «El código de
¿Código de producto ¿Menor a tres
producto NO
ingresado es intentos?
NO B
valido?
erróneo»
SI
«La opción
¿Menor a tres
¿Opción Valida? NO elegida no es
intentos?
valida»
Figura 3.25: Flujo de llamada para el IVR principal, subsistema de consultas a almacén
Fuente: Elaboración propia
75
«Usuario no «Bienvenido al Se capturan los
autorizado, ¿Menor a tres sistema de alertas, tonos DTMF
NO SI
finalizando la intentos? por favor ingrese su ingresados por el
llamada» código de usuario.» usuario
«La contraseña de
usuario que ha ¿Usuario
ingresado es valido?
errónea »
«(Buenos días/
Buenas tardes/
Buenas noches)
(apellido paterno del
usuario)»
HANGUP
HANGUP Verifica la
existencia de
productos
desabastecidos
«Actualmente las
¿Cantidad de «Le informamos la
cantidades de los
productos con existencia de productos en
productos están SI
stock mínimo almacenes con stock
por encima del mayor a 0? mínimo»
stock mínimo. »
Reproducción de un
mensaje «La opción
elegida no es NO ¿Opción Valida?
Listado de opciones valida»
en forma audible
Op. 1 Op. 3
Op. 2
Captura de datos
Mensaje de acción «Los id´s de los productos con «Se le ha enviado a
«Los productos con stock
incorrecta stock mínimo son: id [id del su correo electrónico
mínimo son: [nombre del
producto i] stock [stock del un informe detallado
producto i] stock [stock del
producto i], id [id del producto
Control de acceso producto i], [nombre del de los productos con
i+1] stock [stock del producto stock mínimo»
producto i+1] stock [stock del
i+1],… , id [id del producto n]
Consulta a base de producto i+1],… , [nombre
stock [stock del producto n]»
datos del producto n] stock [stock
del producto n]»
Envío de email
A
Figura 3.26: Flujo de llamada para el IVR del subsistema de alertas ante desabastecimiento
Fuente: Elaboración propia
76
En base a los flujos de llamada descritos anteriormente y haciendo uso de las
grabaciones realizadas para la navegación en el sistema IVR, se procederá a la
programación de las tareas ya identificadas. Para la estructuración del menú principal,
inicialmente se utilizarán comandos AGI y el lenguaje PHP, la secuencia normal de
eventos será:
77
Figura 3.27: Log de sucesos internos en Asterisk durante el flujo de inicio llamada
Fuente: Elaboración propia
[agiinova]
exten => s,1,Answer
exten =>s,n,AGI(iverAgi.php)
exten =>s,n,Hangup
Figura 3.28: Contexto para enlace a sistema IVR principal, subsistema de consultas a almacén
Fuente: Elaboración propia
78
Figura 3.29: Comportamiento respecto a la elección de la primera opción del menú principal
Fuente: Elaboración propia
Figura 3.30: Comportamiento respecto a la elección de la segunda opción del menú principal
Fuente: Elaboración propia
79
Sprint: Diseño y desarrollo de sistema IVR principal
Sprint Inicio Num. días
2 03/09/2013 11
03/09/2013
04/09/2013
05/09/2013
06/09/2013
07/09/2013
09/09/2013
10/09/2013
11/09/2013
12/09/2013
13/09/2013
14/09/2013
Dias de
trabajo
Tareas pendientes 8 8 8 7 7 7 7 7 6 5 1 0
Horas de trabajo pendientes 62 56 52 44 38 33 26 20 14 10 4 0
PILA DEL SPRINT Horas de
Esfuerzo
Backlog ID Tarea Tipo Estado Responsable diferencia
80
3.5.3 Sprint 3
3.5.3.1 Planificación
El objetivo del sprint 3 es el de crear una plataforma de inicio de sesión de usuario, para
lo cual se utilizarán los tonos DTMF como método de ingreso de datos, conexión a base
de datos para validar los datos ingresados, TTS Festival para sintetizar una bienvenida al
usuario valido y grabaciones para los distintos escenarios durante el transcurso de la
llamada. A continuación en la figura 3.33 se mostrará la planificación del sprint 3, en la
que se enlista las tareas a ser desarrolladas, estimando su culminación en un rango de
días.
sep. 2013
Id. Nombre de tarea Comienzo Fin Duración
16 17 18 19 20 21
81
Sprint 3 inicial: Verificación y validación de ingreso de usuario a subsistema gestor de consultas a almacén
Sprint Inicio Núm. días
3 16/09/2013 6
Tareas pendientes 9
Horas de trabajo pendientes 33
PILA DEL SPRINT Esfuerzo
Backlog ID Tarea Tipo Estado Responsable horas
HU-7 Elección de la tercera opción del menú principal Pendiente Cesar Rojas
Crear y documentar la transferencia al subsistema
HT-15 Desarrollo Pendiente Cesar Rojas 2
de gestión de consultas a almacén
HU-8 Petición de identificación Desarrollo Pendiente Cesar Rojas 1
HT-17 Crear y documentar el ingreso y validación de datos
Desarrollo Pendiente Cesar Rojas 8
HU-9 para usuario
El cliente ingresa una contraseña de usuario no
HU-10 Desarrollo Pendiente Cesar Rojas 1
valida
HU-11
Crear y documentar saludo a usuario valido Desarrollo Pendiente Cesar Rojas 2
HT-18
HU-12
Crear y documentar el ingreso y validación de
HU-13 Desarrollo Pendiente Cesar Rojas 8
código de producto a consultar
HT-19
HU-14 El cliente ingresa un código de producto inexistente Desarrollo Pendiente Cesar Rojas 1
HU-15 Crear y documentar identificación del producto
Desarrollo Pendiente Cesar Rojas 4
HT-20 según el código ingresado
Pruebas de validación de usuario y productos en
HU-7A Pruebas Pendiente Cesar Rojas 6
modo de desarrollo (simulador de aplicación)
3.5.3.2 Desarrollo
En cuanto el usuario llamante disque la opción tres del menú principal del IVR, se
transfiere la llamada al sistema de gestión de consultas a almacén, esta tarea se realiza
por medio de la función AGI: exec("Dial", "Protocolo de señalización / #interno"), la
cual permite redireccionar el flujo de la llamada a un archivo PHP, que contiene la
lógica de negocio para la gestión de las consultas.
82
3.35 sección B, con la que se obtiene el título, que tiene el rango de valores (señor,
señora, señorita) y lastname que hace referencia al apellido paterno del usuario. Al ser
los valores de retorno de la consulta distintos de NULL, se afirma que el usuario que
ingreso la clave $clave, es un usuario valido, los datos obtenidos por la consulta servirán
para formar la cadena de saludo mostrada en la tabla 3.10 en el escenario: saludo a
usuario valido.
En caso de ser válido la clave de ingreso los resultados de la consulta serán distintos a
NULL, el usuario escuchará un mensaje de bienvenida con su apellido paterno. El
formato de este saludo es: (Buenos días/Buenas tardes/Buenas noches) (Apellido paterno
del usuario). El mensaje de bienvenida será sintetizado por el TTS Festival utilizando
la función AGI text2wav().
En caso de no ser válido la clave de ingreso los resultados de la consulta serán nulos, el
usuario escuchará un mensaje de invalidez y se le realizará la petición nuevamente, hasta
un máximo de tres veces.
83
Validado el usuario y verificado los permisos de acceso contra la base de datos, se hace
audible un mensaje de petición de código de producto siguiendo la misma lógica de la
petición de clave de usuario. Los datos introducidos por el usuario vía tonos DTMF son
capturados utilizando la función AGI get_data() y almacenados en la variable
$idproducto para posteriormente ser validados contra la base de datos según la consulta
mostrada en la figura 3.36 sección A. Las tablas de la base de datos involucradas en la
consulta son:
ps_product de cual se obtiene los datos generales como el identificador del producto,
precio por menor y precio por mayor.
ps_product_lang, de esta tabla se obtiene el nombre del producto
ps_stock_available, proporciona la cantidad de productos existentes y registradas en
el sistema web de almacenes de Inova.
ps_category_lang, contiene la columna categoría, la cual es utilizada en la opción de
consulta número tres.
El diagrama de entidad relación de las tablas anteriormente mencionadas puede ser visto
en la figura 3.36 sección B.
//Sección A – consulta a base de datos
select distinct a.id_product,b.name nombreProducto, reference, price, wholesale_price,
d.quantity as cantidad,(select c.name from ps_category_lang c where c.id_category =
a.id_category_default and length(c.description)>0) categoria from ps_product a left
join ps_product_lang b on a.id_product = b.id_product left join ps_stock_available d on
d.id_product = a.id_product where a.id_product = '".$idproducto."' and
length(b.description)>0
//Sección B – Tablas involucradas en la consulta
Figura 3.36: Consulta para obtención de datos respecto a los productos en almacén.
Fuente: Elaboración propia
84
En caso de ser válido el código de producto, se reproduce un audio en el que se
identifica al producto seleccionado y seguidamente de listan las opciones del menú de
consulta en forma audible.
En la figura 3.37, se puede ver el despliegue del mensaje audible en formato .wav, el
cual le indica al usuario ingresar su código de identificación y también el despliegue del
mensaje audible de clave invalida.
En la figura 3.38 puede observarse como, una vez ingresado una clave de usuario valida,
se inicia el mensaje de petición de código de producto y en caso de haber ingresado un
código de producto no valido como se despliega el mensaje de error.
En la figura 3.39 se puede apreciar las rutas de los archivos de audio temporal creados
por el TTS Festival para emitir el mensaje de saludo a un usuario validado y la
identificación de un producto seleccionado respectivamente. Estos archivos son
ejecutados y reproducidos a fin de que el usuario pueda oír los datos obtenidos a raíz de
la validación del usuario y la validación del producto.
85
Figura 3.38: Mensaje de petición de ingreso de código de producto y mensaje de código invalido
Fuente: Elaboración propia
Figura 3.39: Mensaje de petición de ingreso de código de producto y mensaje de código valido
Fuente: Elaboración propia
En el siguiente grafico se mostrará el Backlog final y el burndown del Sprint tres (ver
figuras 3.40, 3.41).
86
Sprint: Verificación y validación de ingreso de usuario a modulo gestor de consultas a almacén
Dias de trabajo
16/09/2013
17/09/2013
18/09/2013
19/09/2013
20/09/2013
21/09/2013
3 16/09/2013 6
Tareas pendientes 8 6 5 3 2 1 0
Horas de trabajo pendientes 33 27 22 16 11 6 0
PILA DEL SPRINT Horas de
Esfuerzo
Backlog ID Tarea Tipo Estado Responsable diferencia
Crear y documentar la transferencia al
HT-15 sistema de gestión de consultas a Diseño Finalizado Cesar Rojas Valero 2 2 0 0 0 0 0 0
almacén
HU-8 Petición de identificación Desarrollo Finalizado Cesar Rojas Valero 1 1 0 0 0 0 0 0
87
3.5.4 Sprint 4
3.5.4.1 Planificación
El objetivo del Sprint 4 es desarrollar la plataforma que permita la interactividad entre el
usuario validado y el subsistema de consultas a almacén, permitiéndole la navegabilidad
por las opciones del menú utilizando tonos DTMF. Una vez elegida una opción de
consulta, el usuario escuchará la información requerida, la cual será extraída desde la
base de datos remota y normalizada para su correcta sintetización por el TTS Festival.
En la figura 3.42, puede observarse el cronograma de tareas definidas, las cuales tienen
una estimación de tiempo en ser concluidas. En la figura 3.43 puede observarse el
Backlog inicial para el sprint 4, en dicho grafico puede evidenciarse la cantidad de
horas estimadas para cada elemento del sprint, así como también un listado de las tareas
a ser realizadas.
sep. 2013
Id. Nombre de tarea Comienzo Fin Duración
23 24 25 26 27
88
Sprint 4 inicial: Desarrollo del subsistema de consultas a almacén
3.5.4.2 Desarrollo
El desarrollo del subsistema de consultas el cual gestiona la petición de información de
productos del almacén, inicia con la grabación de los mensajes definidos en el sprint 2
con el mismo sistema mencionado en dicho sprint, estos mensajes tienen la finalidad de
orientar al usuario durante el transcurso de la llamada respecto a la navegabilidad de las
opciones, también el de informarle sobre el ingreso de datos validos o erróneos.
Una vez recopiladas las grabaciones necesarias se inicia con el desarrollo del menú
secundario del sistema IVR para el subsistema de gestión de consultas a almacén, para
89
este fin se utiliza como modelo de desarrollo los diagramas diseñados en el sprint 2,
también son utilizados las definiciones de las funciones descritas en el acápite
3.3.2.2.2.1.
La lógica de negocio para validar una opción introducida por medio de tonos DTMF, se
basa inicialmente con la petición de ingreso de dicha opción, una vez ingresada, se
captura el tono DTMF y verifica la validez del dato ingresado por medio de una
sentencia switch, siendo que la salida por default indicara el ingreso de una opción no
valida.
90
Respecto al desarrollo de las opciones, que permiten obtener información de un producto
en almacén, se optó por crear una consulta global, que incluya la información necesaria
para cada una de las opciones, a fin de minimizar tiempo de respuesta al usuario. La
primordial ventaja de realizar esta acción radica en que una vez obtenido los resultados
de la consulta, estos pueden ser almacenados en una variable en la memoria y de esta
forma acceder de forma más rápida a los demás datos, sin necesidad de consultar
nuevamente la base de datos remota.
Las columnas de las que dispone la consulta pueden ser vistas en la figura 3.45, con
estas seis columnas se pueden proveer la información necesaria para las opciones de
consultas disponibles en el menú del subsistema de consultas a almacén. También se
puede apreciar en dicha figura que el tiempo para el procesamiento de la consulta
general es de 0.156 segundos, asegurando de esta forma que el tiempo de respuesta al
usuario será considerablemente rápido.
En caso de elegirse la opción número dos, el usuario recibirá información audible del
precio unitario y precio por mayor del producto seleccionado, el formato de la
información entregada puede ser visto en la figura 3.46 sección B.
91
Figura 3.45: Resultados de una consulta a base de datos remota
Fuente: Elaboración propia
//Sección A
// "stock actual" + $cantidad + "unidades"
//Sección B
/*
"precio por cantidad, " +
$parteEnteraDelPrecioPorMayor +
"bolivianos con " +
$parteDecimalDelPrecioPorMayor +
"centavos, precio unitario " +
$parteEnteraDelPrecioPorMenor +
"bolivianos con " +
$parteDecimalDelPrecioPorMenor +
"centavos"
*/
//Sección C
// $categoria + $nombreProducto + $reference;
En caso de que el usuario digite una opción fuera del rango de opciones validas (del uno
al cuatro), este escuchará un mensaje en el que se le informe sobre el error cometido, el
número de intentos máximo para el ingreso de una opción válida es de tres, en caso de
exceder este limite el sistema emitirá un mensaje de despedida y se concluirá la llamada.
Para poder verificar la funcionabilidad del flujo de la llamada descrito en la figura 3.44
se visualizará el comportamiento del log de Asterisk, a continuación en la figura 3.47 se
puede observar la interacción del usuario con el subsistema de consultas a almacén,
eligiendo la opción uno del menú de consultas.
92
Archivos temporales creados a partir de la sintetización de las cadenas descritas en la figura 3.46
Dictado de las opciones del menú de consultas a almacén
Figura 3.47 Sintetización de información referente a stock actual y dictado de opciones de consulta
Fuente: Elaboración propia
En el siguiente grafico se mostrará el Backlog final y el burndown del Sprint tres (ver
Figuras 3.49, 3.50).
93
Sprint 4:Desarrollo del subsistema de consultas a almacén
Dias de trabajo
23/09/2013
24/09/2013
25/09/2013
26/09/2013
27/09/2013
4 23/09/2013 5
Tareas pendientes 8 7 6 4 1 0
Horas de trabajo pendientes 27 22 16 11 6 0
PILA DEL SPRINT Horas de
Esfuerzo
Backlog ID Tarea Tipo Estado Responsable diferencia
Crear y documentar las grabaciones para
HT-21 el menú secundario (gestor de consultas Desarrollo Finalizado Cesar Rojas Valero 5 5 0 0 0 0 0
a almacén)
Crear y documentar el menú secundario
HT-22 Desarrollo Finalizado Cesar Rojas Valero 6 0 6 0 0 0 0
del sistema IVR (consulta a almacén)
HU-18 Dictado del stock actual en almacén Desarrollo Finalizado Cesar Rojas Valero 3 0 0 3 0 0 0
Dictado del precio por mayor y menor del
HU-20 Desarrollo Finalizado Cesar Rojas Valero 2 0 0 2 0 0 0
producto
Dictado de la información general del
HU-22 Desarrollo Finalizado Cesar Rojas Valero 2 0 0 0 2 0 0
producto
Elección de la cuarta opción del menú
HU-23 Desarrollo Finalizado Cesar Rojas Valero 2 0 0 0 2 0 0
secundario (retorno a menú secundario)
El cliente digita una opción inexistente
HU-14 Desarrollo Finalizado Cesar Rojas Valero 1 0 0 0 1 0 0
en el menú secundario
Pruebas de IVR secundario en modo de
HT-24 Pruebas Finalizado Cesar Rojas Valero 6 0 0 0 0 6 0
desarrollo (simulador de aplicación)
Total de horas empleados por dia 5 6 5 5 6 0
94
3.5.5 Sprint 5
3.5.5.1 Planificación
El objetivo del Sprint 5 es el de desarrollar el subsistema de alertas tempranas ante
desabastecimiento de los productos en almacén, el cual automáticamente realiza una
llamada telefónica al usuario autorizado a conocer dicha información. Así también el
usuario podrá acceder a la información de desabastecimiento llamando al número
telefónico que está configurado como línea troncal en Inova Networks, por medio del
cual el usuario podrá conocer en detalle los productos que tengan un stock mínimo. Las
opciones permitidas para conocer qué productos se encuentran desabastecidos son las
siguientes: listado de los identificadores de los productos, listado de los nombres de los
productos, envío de correo electrónico con el informe detallado de los productos. Para
tal fin se utilizará la información recopilada hasta el momento, tales como las fichas
historias de usuario, fichas técnicas y mensajes para ser gravados acordes a los
escenarios del subsistema de alertas. En la figura 3.51, puede observarse el cronograma
de tareas definidas para el logro del objetivo del sprint 5.
oct. 2013
Id. Nombre de tarea Comienzo Fin Duración
30 1 2 3 4 5 6 7 8 9 10
95
En base al cronograma de tareas mostrado anteriormente, las fichas de historias de
usuario y fichas técnicas se elabora el Backlog inicial para el sprint 5 definiendo las
horas que serán invertidas en el desarrollo de cada elemento del sprint, el Backlog puede
ser visto en la figura 3.52.
96
3.5.5.2 Desarrollo
El subsistema de alertas se desarrolla siguiendo el flujo de llamada definido en el sprint
2, el cual puede ser visto en la figura 3,26. Inicialmente se realiza las grabaciones
audibles de los mensajes definidos en el sprint 2 utilizando el método de grabación
descrito en dicho sprint.
Una vez establecidas las grabaciones necesarias, se creó un archivo PHP con el nombre
llamada.php, dentro de este se tiene un script que permite verificar las cantidades de
productos existentes en almacén según el sistema web de control y gestión de almacenes
de Inova Networks, para tal fin fue necesario realizar una conexión remota al servidor de
base de datos de dicho sistema, seguidamente se realiza una consulta respecto al stock
actual de todos los productos, se filtra los productos con un stock por debajo del mínimo
permitido (este parámetro de desabastecimiento está definido por las normas internas de
la empresa, ver anexo E) y se almacena el conteo de los productos coincidentes con el
filtro. La consulta para lograr lo mencionado anteriormente puede ser vista en la figura
3.53 sección A y en la sección B se puede observar las tablas involucradas en la
consulta.
97
En caso de que el conteo de productos desabastecidos sea mayor o igual a uno, el
sistema recupera los datos del usuario autorizado a recibir la alerta por medio de la
consulta mostrada en la figura 3.54, la tabla desde la cual se extraen los datos puede ser
vista en la figura 3.35 sección B. Seguidamente se realiza una llamada automática al
número de usuario registrado. Para este fin se utilizó la funcionalidad outgoing de
Asterisk, creando dinámicamente un archivo temporal con la extensión .call y guardada
en la dirección /var/spool/asterisk/outgoing para que sea ejecutada automáticamente.
El contenido del archivo temporal permite entablar una comunicación entre una línea
troncal gestionada por Asterisk y un número externo registrado en la base de datos, este
último vendría a ser el número del usuario autorizado. La línea troncal está asociada a un
sistema IVR con el cual se permite al usuario navegar por las opciones de consulta de
productos desabastecidos, esta asociación es lograda por la configuración de la línea
troncal y registro de la misma en un contexto que permita redirigir el flujo de la llamada
a un archivo PHP que contendrá la lógica de negocios, en la figura 3.55 puede verse el
contexto mencionado, la ejecución de la llamada automática puede ser vista en la figura
3.56, mostrando en la sección A el registro de actividades del demonio al ejecutar el
archivo PHP la cual realizará la llamada automática y en la sección B el log de
actividades de Asterisk al entablarse la comunicación, verificando de esta forma el
correcto funcionamiento.
select titulo,lastname,allamar
from ps_employee
where reporteAlmacen = 's'
Figura 3.54: Consulta para obtención de datos de usuario autorizado.
Fuente: Elaboración propia
[autoAlmacen]
exten => s,1,Answer
exten =>s,n,AGI(autoAlmacenAgi.php)
exten =>s,n,Hangup
Figura 3.55: Contexto para enlace a sistema IVR – subsistema de alertas
Fuente: Elaboración propia
98
En caso de que el número de productos desabastecidos sea menor a uno, se informa al
usuario que las cantidades de productos actualmente se encuentran con un stock por
encima del mínimo permitido, esto es realizado por medio de la reproducción de un
mensaje grabado y la utilización de la función AGI en PHP: exec();
Se creó también un script dentro del archivo almacenAgi.php, el cual valida a un usuario
que llame al subsistema de alertas, siendo esta una opción para que el usuario acceda a la
información de desabastecimiento el momento en que este lo requiera, para esta tarea se
capturó la contraseña ingresada por el usuario por medio del comando AGI: get_data (),
almacenándolo en una variable y seguidamente realizando una consulta a la base de
datos para verificar la validez de la contraseña, los usuarios autorizados son definidos
por la empresa Inova Networks los cuales están registrados en la tabla de usuario en la
base de datos del sistema web de control y gestión de almacenes.
En caso de ser válido el usuario este escuchará un mensaje un saludo sintetizado con el
formato: (Buenos días/Buenas tardes/Buenas noches) + (apellido paterno del usuario),
esta sintetización es lograda por el uso de la función text2wav(). Si el usuario no es
válido este escuchará un mensaje de no autorización el cual fue anteriormente grabado,
la reproducción de dicho mensaje se la realiza utilizando la función exec().
//Sección A
//Sección B
99
Una vez que se entable la comunicación con el usuario autorizado, se reproduce el
listado de opciones para conocer los productos que se encuentran desabastecidos, se
espera a que el usuario digite una opción, la opción elegida es evaluada y validada, en
caso de que el usuario ingrese una opción no valida se reproduce un mensaje que le
indique el error cometido y se enlista nuevamente las opciones de consulta de productos
desabastecidos. En la figura 3.57 puede observarse el registro de los sucesos
anteriormente descritos.
Se optó por crear una consulta general que permita obtener la información necesaria para
las opciones uno y dos del menú de alertas, esta consulta devuelve los resultados
mostrados en la figura 3.58, lo cuales serán utilizados para ser sintetizados y expuestos
según sea la elección de usuario, estos datos son obtenidos en base a la consulta
mostrada en la figura 3.59 sección A y en la sección B de la misma figura puede verse
las tablas involucradas en dicha consulta.
Figura 3.57: Registro del flujo de llamada inicial para el subsistema de alertas ante desabastecimiento
Fuente: Elaboración propia
100
//Sección A – consulta a base de datos
select a.id_product, b.name nombreProducto,reference, price, wholesale_price, d.quantity
as cantidad, (select c.name from ps_category_lang c where c.id_category =
a.id_category_default and length(c.description)>0) categoria, numllamada from
ps_product a left join ps_product_lang b on a.id_product = b.id_product left join
ps_stock_available d on d.id_product = a.id_product where d.quantity < 3 and
length(b.description)>0 order by categoria
//Sección B – Tablas involucradas en la consulta
La primera opción del menú de alertas dicta los identificadores de los productos con
stock mínimo seguido de la cantidad existente actualmente registrada en la base de
datos, el formato que seguirá la cadena a ser sintetizada por Festival puede ser visto en la
figura 3.60 sección A.
La segunda opción del menú de alerta dicta los nombres de los productos seguidos del
stock registrado hasta el momento de la llamada, el formato de la cadena a ser
sintetizada por Festival puede ser visto en la figura 3.60 sección B.
La tercera opción del menú de alertas envía un correo electrónico, en el cual se adjunta
un informe detallado de los productos desabastecidos, para tal fin se crea una cuenta de
correo como remitente del informe, el correo al cual es enviado dicha información será
el que este asociado al usuario autorizado. En la figura 3.61 se puede ver el éxito del
envío de correo electrónico, en la sección A de dicha figura se observa el registro de
101
actividades del log de Asterisk evidenciando la reproducción del mensaje de envío del
correo electrónico, en la sección B se puede ver la captura de pantalla de la bandeja de
entra de correos electrónicos con el correo recibido.
//Sección A
/*
"id " + $idProducto[1] + " stock "+ $stockProducto[1]+ ", "+
"id " + $idProducto[2] + " stock "+ $stockProducto[2]+ ", "+
...
"id " + $idProducto[i] + " stock "+ $stockProducto[i]
*/
//Sección B
/*
"id " + $nombreProducto[1] + " stock "+ $stockProducto[1]+ ", "+
"id " + $nombreProducto[2] + " stock "+ $stockProducto[2]+ ", "+
...
"id " + $nombreProducto[i] + " stock "+ $stockProducto[i]
*/
//Sección A
//Sección B
102
3.5.5.3 Finalización del Sprint 5
Realizada la revisión de las tareas efectuadas en el Sprint 5 se verifica que no se tiene
ninguna observación sobre el desarrollo de las mismas, el tiempo estimado del sprint fue
de 58 horas en el Backlog inicial. En el siguiente grafico se mostrará el Backlog final y
el burndown del Sprint 5 (ver Figuras 3.62, 3.63)
Dias de trabajo
30/09/2013
01/10/2013
02/10/2013
03/10/2013
04/10/2013
05/10/2013
07/10/2013
08/10/2013
09/10/2013
10/10/2013
11/10/2013
11 23/09/2013 11
Tareas pendientes 11 10 9 9 9 7 6 5 3 2 1 0
Horas de trabajo pendientes 58 52 46 40 36 34 28 22 16 10 6 0
PILA DEL SPRINT Horas de
Esfuerzo
Backlog ID Tarea Tipo Estado Responsable diferencia
Crear y documentar las grabaciones para
el menú de IVR de alertas tempranas
HT-25 Desarrollo Finalizado Cesar Rojas Valero 6 6 0 0 0 0 0 0 0 0 0 0 0
(gestor de alertas ante
desabastecimientos)
Crear y documentar la validación y
HT-28 verificación de productos Desarrollo Finalizado Cesar Rojas Valero 6 0 6 0 0 0 0 0 0 0 0 0 0
desabastecidos
HT-29 Crear y documentar llamada automática
Desarrollo Finalizado Cesar Rojas Valero 12 0 0 6 4 2 0 0 0 0 0 0 0
HT-27 y saludo a usuario valido
Crear y documentar el menú de alertas
HT-26 Desarrollo Finalizado Cesar Rojas Valero 6 0 0 0 0 0 6 0 0 0 0 0 0
tempranas
Crear y documentar la consulta a base de
HT-31 datos respecto a los productos Desarrollo Finalizado Cesar Rojas Valero 6 0 0 0 0 0 0 6 0 0 0 0 0
desabastecidos
Listado de los identificadores de
HU-33 Desarrollo Finalizado Cesar Rojas Valero 3 0 0 0 0 0 0 0 3 0 0 0 0
productos desabastecidos
Listado de los nombres de productos
HU-35 Desarrollo Finalizado Cesar Rojas Valero 3 0 0 0 0 0 0 0 3 0 0 0 0
desabastecidos
Crear y documentar envió de informe de
HU-32 productos desabastecidos a un correo Desarrollo Finalizado Cesar Rojas Valero 8 0 0 0 0 0 0 0 0 6 2 0 0
electrónico
El cliente digita una opción inexistente
HU-38 Desarrollo Finalizado Cesar Rojas Valero 2 0 0 0 0 0 0 0 0 0 2 0 0
en el menú de stock mínimo
HT-30
Pruebas del subsistema de alertas Pruebas Finalizado Cesar Rojas Valero 6 0 0 0 0 0 0 0 0 0 0 6 0
HT-33
Total de horas empleados por dia 6 6 6 4 2 6 6 6 6 4 6 0
103
Figura 3.63: Burdown Final – Sprint 5
Fuente: Elaboración propia
104
4% 0%
8%
1er intento
2do intento
3er intento
88%
4to intento
Figura 3.64: Intentos de validación de usuario para acceso a los subsistemas de consultas y alertas
Fuente: Elaboración propia
105
Las zonas de riesgo identificadas, descritas a continuación en la tabla 3.11, representan
los lugares físicos en los que no se logró concretar una interacción con el sistema IVR,
siendo la principal razón la baja intensidad de señal celular ofrecida por los operadores
de telefonía en dichas zonas, este aspecto pudo evidenciarse en base al procesamiento de
datos proporcionados por los formularios de evaluación de los cuales se tomaron en
cuenta los casos en que la causa de incomunicación con el sistema IVR fueron: sin señal
de dispositivo y fuera de cobertura.
En base a los resultados emitidos por el formulario de evaluación se constató que el diez
por ciento de las llamadas realizadas evidencio la indisponibilidad del sistema IVR, ver
figura 3.66, de este total el sesenta y dos por ciento fue debido a la inexistencia de señal
telefónica, el veinticinco por ciento debido a que la línea troncal de la empresa se
encontraba ocupado y el trece por ciento por la falta de cobertura de la red celular del
operador. La gráfica estadística de lo mencionado anteriormente se puede ver en la
figura 3.67.
106
10%
Disponible
No Disponible
90%
0% Sin señal
13%
Linea ocupada
25%
62%
Sin cobertura
Se pudo evidenciar que el cien por ciento de las personas encuestadas, que contaban con
una señal celular aceptable, lograron acceder e interactuar con el sistema IVR y realizar
consultas respecto a la información de los productos en almacén de forma exitosa, sin
presentar ninguna dificultad respecto a la navegabilidad de las opciones en el menú
primario y secundario del subsistema de consultas a almacén. Sin embargo del total de
las pruebas realizadas durante la evaluación, un dieciséis por ciento de los usuarios no
lograron interactuar con el sistema IVR (ver figura 3.68) debido a las razones expuestas
en la figura 3.67, pero el ochenta y cuatro por ciento de los usuarios si lograron obtener
información de los productos.
107
16%
Éxito
84% Fallido
0% 4%
Exelente
22% 30%
Muy buena
Buena
44% Regular
Mala
Figura 3.69: Claridad de la voz emitida por el sistema IVR para la entrega de información de productos
Fuente: Elaboración propia
108
El criterio de evaluación de la velocidad de respuesta, está condicionado por la
velocidad en la que se obtienen los datos por medio de las consultas a la base de datos
externa, las pruebas de velocidad realizadas durante el desarrollo del sprint 4, vistos en
el acápite 3.5.4 y 3.5.5 indican que dichas consultas emiten las respuestas en un tiempo
menor a dos segundos, gracias a esta alta velocidad de respuesta, durante la evaluación
del desempeño de los subsistemas se observó que el inicio para las interacciones entre
el usuario y los subsistemas, duró en promedio 2.5 segundos como máximo.
Si
0% 4%
No
Ocasionalmente
96%
109
4 CONCLUSIONES Y RECOMENDACIONES
4.1 Conclusiones
En el presente trabajo de tesis se realizó el desarrollo e implementación de un sistema
interactivo de respuesta de voz o IVR, con el que se logró posibilitar la obtención de
información de un sistema web a través de las redes de telefonía como alternativa al
acceso por medio del internet.
110
propuesta, además de instalar las dependencias: sintetizador de voz TTS festival,
servidor de aplicaciones web, compilador e intérprete de PHP. Con los anteriores
elementos, software y hardware mencionados se logró concluir el sistema propuesto
en la tesis. Cabe señalar que las dependencias instaladas son de licencia GLP GNU,
por que los costos en los que se incurrieron para su instalación fueron nulos.
Se pudo evidenciar en base a los resultados obtenidos por el estudio de casos, que el
correcto funcionamiento del sistema durante la interacción del IVR con el usuario,
es independiente del dispositivo telefónico utilizado en esa acción, pero que si está
condicionado por la calidad de la señal celular en el caso de los dispositivos móviles,
siendo que estos deben de encontrarse en el rango de señal de -50 dBm y -69 dBm,
en el caso de las líneas telefónicas estas deben de tener el tono de llamada.
El sistema IVR concluido permitió realizar consultas a un sistema web de almacenes
por medio de las distintas redes de telefonía, accediendo de esta forma a la
información en tiempo real independientemente del lugar en que se realice dicha
consulta. Contrastando el acceso tradicional a la base de datos por medio del sistema
web de almacenes con conexión a internet, el producto finalizado es más factible,
respecto a los costos de conectividad, portabilidad, rapidez de acceso a la
información
Con el producto se logró automatizar las alertas de desabastecimiento, con lo cual la
empresa Inova Netwoks tiene un mayor control de las cantidades existentes de los
productos en almacén, logrando de esta forma gestionar de mejor manera y de forma
más ágil los recursos de la empresa.
Concluido el desarrollo de los subsistemas de consultas a almacén y alertas de
desabastecimiento, se logró implementar un sistema IVR disponible continuamente,
que permite al usuario interactuar con él y obtener información referente a los
productos registrados en el sistema web de control y gestión de almacenes de Inova
Networks, utilizando como medio de comunicación principal las redes de telefonía,
tanto móviles (redes de telefonía celular) como fijas (red de telefonía conmutada,
RTC).
111
4.2 Recomendaciones
Es recomendable que al realizar las llamadas necesarias para el acceso a la
información de los productos en almacén y la información sobre el
desabastecimiento, el dispositivo telefónico cuente con una intensidad de señal
celular aceptable en el caso de ser un teléfono móvil.
Se recomienda el uso de mensajes de texto, funcionalidad disponible en el módulo
GNU desarrollado por Iberoxarxa13 que se instala en Asterisk, como alternativa a la
sintetización de voz, principalmente para el subsistema de alertas ante
desabastecimiento respecto al listado de los productos con stock mínimo, también
permitiría la utilización del sistema IVR a personas con discapacidad auditiva.
Para mejorar la experiencia respecto a la interactividad con el sistema IVR, es
aconsejable el uso de dispositivos conocidos como manos libres, para de esta forma
permitir al usuario manipular con mayor facilidad el teclado del teléfono para el
ingreso de datos vía tonos DTMF.
Se recomienda el uso de sistemas de reconocimiento de voz ASR (Automatic Speech
Recognition) para una mayor satisfacción y mejor experiencia del usuario durante la
interactividad con el sistema IVR.
Para lograr un número mayor de llamadas concurrentes al sistema de consultas a
almacén, se recomienda incrementar el número líneas troncales conectadas a la PBX
Asterisk y configurarlos de tal forma que el flujo de la llamada de las mismas este
direccionado al sistema IVR de consultas a almacén.
En un futuro, en el cual el acceso al internet sea rápida y fluida, además de que los
costos al acceso sean menores, la utilización de teléfonos inteligentes sea mayor y el
precio de los mismos sea menor, es recomendable cambiar el medio de conexión
propuesto en el presente trabajo por el medio de comunicación VoIP, el cual en
países tecnológicamente más desarrollados se demostró que los costos de
comunicaciones son mucho menores.
13
Empresa española de desarrollo de soluciones de software libre, fundada en 2009.
112
BIBLIOGRAFÍA
AGI, A. G. (2012). Interactive Voice Responce systems, complet report. New York.
Asterisk. (2013). Comunidad Asterisk. Retrieved Abril 10, 2013, from http://comunidad.asteris-
es.org
IEEE. (1998). IEEE Recommended Practice for Software Requirements Specifications. New York:
The Institute of Electrical and Electronics Engineers, Inc.
Landivar, E. (2009). Comunicaciones unificadas con Elastix. Los Angeles, EEUU: Elastix.
Mitchlacey. (2008, 1 1). Mitch Lacey & Associates, Inc. Retrieved 10 15, 2013, from
http://www.mitchlacey.com/intro-to-agile
Simionovich, N. (2004). Asterisk Gateway Interface 1.4 and 1.6 Programming. Birmingham:
Packt publishing.
Torralba, F. (2002). Dilemes étics de les TIC a la societat global. Facultat Blanquerna.
Velocidad
Empresa Costo en
de País Sitio de consulta
proveedora/Plan bolivianos
conexión
Entel (Súper
http://www.entel.bo/informa/?m=
banda ancha) 1024 kbps 230 Bs Bolivia
201301
ADSL
http://www.antel.com.uy/antel/pe
rsonas-y-
Antel (Plano 1) 1024 kbps 182 Bs Uruguay hogares/internet/planes/internet/i
nternet-tarifa-plana/internet-
plano-1
http://vtr.com/hogar/banda-
VRT (MEGA 10) 10 Mbps 154 Bs Chile
ancha/
http://www.claro.com.pe/portal/p
Claro (Internet
1000 kbps 200 Bs Perú e/pc/hogar/internet/internet-
1000 Kbps)
banda-ancha/
*Datos consultados a la fecha 18 de abril de 2013, con cambios de moneda oficiales para esta
fecha
La conexión a internet en Bolivia se sitúa entre los más caros de la región latinoamericana,
llegando a costar doscientos treinta bolivianos la mensualidad de conexión por ADSL de 1024
kbps a una computadora estacionaria y para conectividad móvil hasta trescientos ochenta
bolivianos por cada 100Mb de tráfico realizado con conectividad GPRS. En cuanto a la
conectividad de cuarta generación 4G se presentan las barreras tecnologías, puesto que esta
conexión requiere teléfonos inteligentes de última generación compatibles con dicha
tecnológica o caso contrario contar una computadora portátil que cuente mínimamente con un
puerto USB apartado para un modem que posibilite la conexión a internet.
Situación actual de la cobertura de internet móvil en Bolivia ANEXO B
El gobierno boliviano, para poder solucionar esta escasa cobertura de acceso a internet, se ha
propuesto ampliar la cobertura de internet en los próximos años y de esta forma democratizar
el servicio. Para tal fin se ha promulgado la ampliación e instalación de redes de fibra óptica en
la ley de telecomunicaciones, tecnologías de información y comunicación. Este
emprendimiento por parte del gobierno boliviano se lo hace paralelamente al proyecto de
puesta en órbita de un satélite propietario del estado boliviano denominado satélite Tupac
Katari que pretende lograr una cobertura al 100% de conectividad a la red mundial.
14
http://www.cambio.bo/noticia.php?fecha=2011-05-24&idn=45947 , sitio web visitado en fecha cinco
de mayo de 2013
15
Sitio web visitado en fecha 03 de mayo de 2013
Canales de comunicación estándar ANEXO C
STDIN, STDOUT, STDERR
En todas las variantes de UNIX existen tres flujos estándar que actúan como canales de
comunicación que permiten enviar y recoger los datos que surgen de la ejecución de un script,
comando o aplicación., conectan la entrada y salida (I/O) de un comando o aplicación con la
terminal cuando esta es ejecutada, estos canales son:
Standard input (stdin)
Standard output (stdout)
Standard error (stderr)
Standard input
STDIN, o standard input representa los datos que son enviados al programa para ser
procesados, por lo general este canal no es utilizado frecuentemente ya que lo normal suele
ser interpretar los datos que el programa o comando envía, y no al revés. Normalmente STDIN
es texto enviado por el usuario al programa o aplicación. En un script en perl, se puede solicitar
la interacción del usuario mediante STDIN, por ejemplo en este caso se recoge mediante STDIN
el valor de dos variables que el usuario escribe, ver figura A1.
#!/usr/bin/perl
print "Introduce tu nombre:\n";
my $nombre = <STDIN>;
print "Introduce tu apellido:\n";
my $apellido = <STDIN>;
Standard output
A través de la salida estándar, “STDOUT” se reciben los datos que vuelca el comando o
programa durante su ejecución, un uso básico del STDOUT se refleja en los resultados emitidos
por el uso de los comandos “ls”,”cat” o cualquier otro comando de terminal. En cambio, hay
otros comandos o programas que no muestran salida (a no ser que se especifique), como por
ejemplo mover o copiar ficheros. Cualquiera de estos flujos de datos se puede manipular de
forma tal que el resultado que emita un comando, programa o aplicación pueda ser enviado al
STDIN del mismo, a continuación se mostrará el uso del STDOUT sobre el comando ls, enviando
sus resultados a un archivo en específico.
$ ls
backups cpq games local log opt spool www
cache crash lib lock mail run tmp
$ cat fichero.txt
backups cpq games local log opt spool www
cache crash lib lock mail run tmp
En el siguiente ejemplo se ejecutará el comando “ls” con parámetros incorrectos, por defecto la
salida de errores se volcará en pantalla (terminal)
$ ls -7
ls: opción incorrecta -- '7'
Pruebe `ls --help' para más información.
Para almacenar los errores de la ejecución del comando, estos pueden ser volcarlos usando en
lugar del símbolo “>” el número 2 seguido de “>”, “2>”:
$ ls -7 2> errores.log
Como se puede ver los errores ya no aparecen por pantalla pues estos son almacenados en el
fichero de log
$ cat errores.log
ls: opción incorrecta -- '7'
Pruebe `ls --help' para más información.
Datos técnicos del dispositivo telefónico con el que cuenta el usuario final
Tipo de dispositivo :: Móvil/táctil Móvil/teclado Teléf. Fijo OTRO
Marca ::
Modelo ::
Empresa operadora :: Tigo Viva Entel OTRO
¿Le fue fácil navegar por las opciones del menú del subsistema de consultas a almacén?
Si No
¿Qué nivel de claridad de voz pudo captar en los mensajes emitidos por el subsistema de
consultas?
Excelente Muy buena Buena Regular Mala
¿La información registrada en el sistema web de control y gestión de almacenes, coincidió con
la información entregada por el subsistema de consultas a almacén?
Si No
¿En algún momento, usted advirtió la inexistencia del servicio ofrecido por el sistema?
Si No
En caso de ser afirmativa la respuesta a la anterior pregunta, por favor indique la hora y lugar
donde se advirtió la indisponibilidad del servicio.
Hora ::
Lugar exacto ::
:: Fuera Línea Línea de destino
OTRO
Posible causa Sin señal
de cobertura ocupada sin servicio
Métricas de eficiencia
Indique el número de intentos para lograr interactuar con el sistema IVR ::
Indique la cantidad de intentos, ingresando su código de usuario, necesarios
::
para acceder al gestor de consultas a almacén
Indique la duración total en segundos requeridos para obtener el stock
::
actual de algún producto
Indique la duración total en segundos necesarios para conocer los precios
::
por mayor y menor de algún producto
Indique la duración total en segundos necesarios para conocer la
::
descripción general de algún producto
Basándose en la reciente experiencia que tuvo con el sistema, ¿lo volvería a usar regularmente
como un medio alterno para la consulta de datos en el almacén?
Si No Ocasionalmente
FORMULARIO DE EVALUACIÓN – SUBSISTEMA DE ALERTAS
Datos técnicos del dispositivo telefónico con el que cuenta el usuario final
Tipo de dispositivo :: Móvil/táctil Móvil/teclado Teléf. Fijo OTRO
Marca ::
Número de línea telefónica ::
Empresa operadora :: Tigo Viva Entel OTRO
En caso de ser negativa la respuesta anterior, por favor escriba el número de la línea telefónica
y el nombre del operador de dicha línea desde el cual realizó la llamada
Número de linea telefónica ::
Empresa operadora :: Tigo Viva Entel OTRO
Indique la cantidad de veces que fue alertado por el sistema ante algún desabastecimiento de
producto
Conociendo la hora y fecha en que se produjo algún desabastecimiento de productos, ¿Cuál fue
el tiempo de retraso máximo en minutos de la alerta del sistema ante tal suceso?
¿Sintió algún grado de molestia ante las insistencias del subsistema de alertas?
Ninguna Poca Mucha
Por favor responda las siguientes preguntas independientemente de si usted realizo la llamada
o la recibió
¿Le fue fácil navegar por las opciones del menú del IVR?
Si No
¿Qué nivel de claridad de voz pudo captar en los mensajes emitidos por el sistema IVR?
Excelente Muy buena Buena Regular Mala
¿La información registrada en el sistema web de control y gestión de almacenes coincidió con
la información entregada por el subsistema de alertas de productos desabastecidos?
Si No
¿En algún momento, usted advirtió la inexistencia del servicio ofrecido por el sistema?
Si No
En caso de ser afirmativa la respuesta a la anterior pregunta, por favor indique la hora y lugar
donde se advirtió la indisponibilidad del servicio.
Hora ::
Lugar exacto ::
:: Fuera Línea Línea de destino
OTRO
Posible causa Sin señal
de cobertura ocupada sin servicio
Métricas de eficiencia
Indique el número de intentos para lograr interactuar con el sistema IVR ::
Indique la cantidad de intentos necesarios para interactuar con el
::
subsistema de alertas
Reglamento de almacén – Experts Inova Networks Srl. ANEXO E
CAPITULO I
DISPOSICIONES GENERALES
ARTICULO 1o.- El jefe del Departamento del almacén tendrá las llaves del almacén, no podrán
ser prestadas a personal ajeno.
ARTICULO 2o.- Cuando se requiera de encender instrumentos eléctricos y/o electrónicos como
cafeteras, ventiladores, taladros, computadoras, etc. se cuidará que se desconecten una vez
terminados de usar, a fin de evitar chispas que ocasionen incendios.
ARTICULO 4o.- Por seguridad personal y limpieza del almacén, se deberá de colocar el material
en las áreas y anaqueles que les correspondan, como se señala en el manual de Almacenes.
CAPITULO II
CONTROL DE ALMACENAJE
ARTICULO 5o.- El jefe del almacén tendrá la función de revisar periódicamente las cantidades
de productos existentes en el almacén para evitar desabastecimientos.
ARTICULO 6o.- El jefe del almacén deberá de verificar que todos los productos en el almacén
tengan una cantidad mayor a diez unidades.
Fragmentos extraídos del reglamento interno del almacén de la empresa Inova Networks
Requerimientos del sistema IVR según la metodología Scrum ANEXO F
Historias de usuario
ID Nombre Usuario Descripción
HU-11 Saludo a usuario autorizado Central Se hace audible un saludo al usuario autorizado
según el horario en que se realiza el proceso de
la llamada
(Buenos días/Buenas tardes/Buenas noches)
(apellido paterno del usuario)
HU-12 Petición de código numérico de Central Se hace audible la petición del ingreso de código
producto numérico del producto a consultar
HU-13 Ingreso de código numérico de Cliente El cliente ingresa el código numérico del
producto producto a ser consultado
HU-14 El cliente ingresa un código de Cliente En caso de que el cliente no digite un código de
producto inexistente producto valido, se escuchará un mensaje de
error.
El número de intentos deberá ser menor a tres.
HU-15 Dictado del nombre del Central Se escucha el nombre del producto
producto seleccionado seleccionado
HU-16 Menú secundario (menú IVR Cliente Se escucha el listado de opciones del menú
para consultas a almacén) secundario respecto a las posibilidades de
obtención de información de los productos.
HU-17 Elección de la primera opción Cliente El cliente presiona la tecla uno, con la cual elige
del menú secundario la primera opción del menú secundario que es
el consultar la información de existencia física
en el almacén del producto anteriormente
seleccionado.
HU-18 Dictado del stock actual en Central Se escucha el número total de productos
almacén existentes en el almacén en tiempo real
HU-19 Elección de la segunda opción Cliente El cliente presiona la tecla dos, con la cual elige
del menú secundario la segunda opción del menú secundario que es
el consultar la información respecto a los
precios por menor y mayor del producto
seleccionado.
HU-20 Dictado del precio por mayor y Central Se escucha el precio por mayor y menor del
menor del producto producto seleccionado
HU-21 Elección de la tercera opción Cliente El cliente presiona la tecla tres, con la cual elige
del menú secundario la segunda opción del menú secundario que es
el consultar la información general, conformada
por la categoría del producto y el nombre del
producto anteriormente seleccionado.
HU-22 Dictado de la información Central Se escucha el dictado de la categoría del
general del producto producto y el nombre del mismo
HU-23 Elección de la cuarta opción del Cliente El cliente presiona la tecla cuatro, con la cual
menú secundario elige la cuarta opción del menú secundario que
es el retornar a HU-12.
HU-24 El cliente digita una opción Cliente En caso de que el cliente no digite una opción
inexistente en el menú válida se escucha un mensaje de error.
secundario El número de intentos deberá ser menor a tres.
HU-25 Elección de la cuarta opción del Cliente El cliente presiona la tecla cero, con la cual elige
menú principal la cuarta opción del menú principal
HU-26 Contacto directo con un Cliente La llamada es transferida a un operador.
operador
HU-27 El cliente digita una opción Cliente En caso de que el cliente no digite una opción
inexistente en el menú válida se escucha un mensaje de error.
principal El número de intentos deberá ser menor a tres.
HU-28 Verificación de stock mínimo Central Se verifica automáticamente la existencia de
productos con stock mínimo
HU-29 Alerta automática de stock Central Se realiza hasta tres llamadas para informar
mínimo sobre el desabastecimiento de productos
HU-30 Usuario contesta la llamada Central (Buenos días/Buenas tardes/Buenas noches)
(saludo al usuario) (apellido paterno del usuario)
HU-31 Menú IVR de stock mínimo Cliente Se escucha el listado de opciones del menú del
subsistema de alertas automáticas respecto al
desabastecimiento de productos.
HU-32 Elección de la primera opción Cliente El cliente presiona la tecla uno, con la cual elige
del menú de stock mínimo la primera opción del menú de stock mínimo
que es el listado de los identificadores de los
productos con un stock mínimo
HU-33 Listado de los identificadores de Cliente Se escucha el listado de los identificadores de
productos desabastecidos los productos en base al siguiente formato:
Los id´s de los productos con stock mínimo son:
id [id del producto i] stock [stock del producto
i], id [id del producto i+1] stock [stock del
producto i+1],… , id [id del producto n] stock
[stock del producto n]
HU-34 Elección de la segunda opción Cliente El cliente presiona la tecla dos, con la cual elige
del menú de stock mínimo la segunda opción del menú de stock mínimo
que es el listado de los nombres de los
productos con un stock mínimo
HU-35 Listado de los nombres de Cliente Se escucha el listado de los productos en base
productos desabastecidos al siguiente formato:
Los productos con stock mínimo son: [nombre
del producto i] stock [stock del producto i],
[nombre del producto i+1] stock [stock del
producto i+1],… , [nombre del producto n] stock
[stock del producto n]
HU-36 Elección de la tercera opción Cliente El cliente presiona la tecla tres, con la cual elige
del menú de stock mínimo la tercera opción del menú de stock mínimo que
es el envío de un informe detallado de los
productos con un stock mínimo al correo
asociado del usuario autorizado.
HU-37 Listado de los nombres de Cliente Se escucha el listado de los productos en base
productos desabastecidos al siguiente formato:
Los productos con stock mínimo son: [nombre
del producto i] stock [stock del producto i],
[nombre del producto i+1] stock [stock del
producto i+1],… , [nombre del producto n] stock
[stock del producto n]
HU-38 El cliente digita una opción Cliente En caso de que el cliente no digite una opción
inexistente en el menú de válida se escucha un mensaje de error.
stock mínimo El número de intentos deberá ser menor a tres.
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Cliente
HISTORIA DE USUARIO HISTORIA DE USUARIO
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Cliente
HISTORIA DE USUARIO HISTORIA DE USUARIO
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Cliente
HISTORIA DE USUARIO HISTORIA DE USUARIO
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Central
Usuario Usuario
Cliente Cliente
HISTORIA DE USUARIO HISTORIA DE USUARIO
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Central
Usuario Usuario
Central Cliente, Central
HISTORIA DE USUARIO HISTORIA DE USUARIO
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Cliente
Usuario Usuario
Cliente Cliente
HISTORIA DE USUARIO HISTORIA DE USUARIO
Usuario Usuario
Cliente Cliente
Actividades de ingeniería - Historias técnicas
Estimación
ID Nombre horas
Responsable Sprint
Descripción Descripción
Contactarse con el administrador de hosting que Conectarse vía ftp al servidor Asterisk y agregar la
aloja a el DBMS y pedirle conceda privilegios de librería AdoDB PHP a los directorios:
acceso remoto al usuario XXX /var/lib/asterisk/agi-bin y
/var/www/html/conexionRemortaMysql
Usuario Usuario
Cliente Cliente
Descripción Descripción
Se verifica con un cronometro y registro de las Levantamiento de requisitos, creación de diagrama
tareas realizadas a partir de los comandos cron de flujo y definición del flujo de las llamadas.
creados en el Crontab de Centos.
Usuario Usuario
Cliente Cliente
Descripción Descripción
Se realiza grabaciones en base a los escenarios Se desarrolla el inicio de la llamada para el sistema
identificados para el menú principal del sistema IVR, emitiendo un saludo al cliente si se entabla el
IVR. enlace de comunicación.
Usuario Usuario
Cliente Cliente
Descripción Descripción
Mediante Scripts en el lenguaje PHP y el uso de Se crea un número interno dedicado al área de
comandos AGI, desarrollar las opciones de ventas en el sistema Asterisk con el objetivo de
navegabilidad del sistema IVR para el menú recepcionar las llamadas transferidas.
principal. Se desarrolla la transferencia de la llamada a un
Utilizar las grabaciones de HT-9 y siguiendo la número de interno perteneciente al área de ventas,
lógica de negocio definida en HT-8. esta transferencia es realizada por medio de
comandos AGI.
Usuario Usuario
Cliente Cliente
Descripción Descripción
Se desarrolla la transferencia de la llamada a una Se ejecuta el sistema IVR, realizando llamadas
aplicación en lenguaje PHP, el flujo de la llamada desde números internos dentro de la red de Inova
es controlado por comandos AGI. Networks y se depura posibles errores.
Usuario Usuario
Cliente Cliente
Descripción Descripción
Por medio de comandos AGI se obtiene los tonos Se desarrolla el flujo de la llamada que permita
DTMF enviados por el usuario a raíz de la escuchar un saludo con el formato: “(Buenos
petición realizada por el sistema IVR (HT-9 días/Buenas tardes/Buenas noches) Señor (Apellido
[Petición de contraseña de usuario]). paterno del usuario)”.
Se desarrolla la validación de los datos obtenidos
contra los registro en la base de datos.
Usuario Usuario
Cliente Cliente
Descripción Descripción
Por medio de comandos AGI se obtiene los tonos Se desarrolla el flujo de la llamada que permita
DTMF enviados por el usuario a raíz de la escuchar la identificación del producto con el
petición realizada por el sistema IVR (HT-9 código capturado y validado en HT-19.
[Código de producto]). El formato de la identificación será: “Producto
Se desarrolla la validación de los datos obtenidos seleccionado [categoría del producto] [nombre
contra los registro en la base de datos para el producto]”
código del producto ingresado.
Usuario Usuario
Cliente Cliente
Descripción Descripción
Se desarrolla las consultas a la base de datos Se ejecuta el sistema IVR, realizando llamadas
remota en base a los parámetros obtenidos en desde números internos dentro de la red de Inova
HT-19 y las elecciones de las opciones de Networks, se ingresa al menú secundario que es el
consultas. Se normaliza los datos obtenidos para gestor de consultas a almacén y se depura posibles
la sintetización de los mismos utilizando Festival errores.
para hacer audible los resultados.
Usuario Usuario
Cliente Cliente
Descripción Descripción
Se desarrolla la validación de la contraseña Se desarrolla un controlador automático de las
ingresada del llamante obteniendo este cantidades de stock en almacén de todos los
parámetro por medio del uso de comandos AGI. productos ahí registrados, esta tarea se realiza por
Se verifica la existencia de esta variable en la medio del uso de comandos cron y la modificación
base de datos para su aceptación. del Crontab.
Se obtiene la cantidad total de productos
desabastecidos
Usuario Usuario
Cliente Cliente
Descripción Descripción
En caso de existir desabastecimiento y de aun no Para las pruebas de este menú, se preparan dos
tener entablada una comunicación con el escenarios distintos: Se modifica la cantidad de
usuario autorizado, se realiza una llamada algunos productos almacenados a un stock mínimo
automática por medio de creación de un script de almacenaje a fin de que se realice la llamada
que posibilite esta tarea. El archivo con el script automática desarrollada en HT-29. Se ejecuta el
estará almacenado en la dirección: sistema IVR, realizando llamadas desde números
/var/spool/asterisk/outgoing/xxx.call internos dentro de la red de Inova Networks, se
Una vez establecida la comunicación con el marcará el número de interno dedicado al gestor de
usuario, se reproducirá un saludo con el nombre alertas tempranas para probar la funcionabilidad
de usuario contactado. del menú.
Usuario Usuario
Cliente Cliente
Descripción Descripción
Se desarrolla las consultas a la base de datos Se desarrolla una plantilla en Excel para el informe,
remota en base a las elecciones de las opciones el cual será creado dinámicamente en base a los
de consultas listadas en el menú creado en HT- productos desabastecidos.
30. Se enviara un correo electrónico a petición del
Se normaliza los datos obtenidos para la usuario, a este correo se adjunta el informe creado
sintetización de los mismos utilizando Festival dinámicamente.
para hacer audible los resultados.
Las consultas son respecto al listado de los id’s
de los productos desabastecidos, el listado de los
nombres de los productos desabastecidos
Usuario Usuario
Cliente Cliente
HISTORIA TÉCNICA
ID HT-33
Nombre
Pruebas del subsistema de alertas tempranas
Descripción
Para las pruebas de este subsistema, se preparan nuevamente dos escenarios distintos: Se
modifica la cantidad de algunos productos almacenados a un stock mínimo de almacenaje
a fin de que se realice la llamada automática. Se ejecuta el sistema IVR, realizando
llamadas desde números internos dentro de la red de Inova Networks, se marcará el
número de interno dedicado al gestor de alertas tempranas para probar la funcionabilidad
respecto a las consultas y obtención de información respecto a los productos son stock
mínimo.
Usuario
Cliente
Importancia Estimación
100 5
Casos de uso para las funciones del sistema IVR ANEXO G
Módulo área de ventas
El módulo de área de ventas, cumplirá la función de comunicar al cliente con un represéntate de ventas
de la empresa Inova Networks, por lo cual se describirán a continuación por medio de un diagrama de
casos de uso (ver Figura 1) el comportamiento general del módulo de área de ventas.
Recibir
información
Atención del
Cliente cliente Ejecutivo de ventas
A continuación se describirán las funciones que tendrán que cumplir los casos de uso mostrados en la
anterior figura.
Recibir información
Atención del
Cliente cliente Operador del área administrativa
A continuación se describirán las funciones que tendrán que cumplir los casos de uso mostrados en la
figura 2.
Valida usuario
Verificar stock
minimo
«uses»
Recibe informacion
Gestor de alertas
Usuario de desabastecimiento
Entrega
información de consulta
A continuación se describirán las funciones que tendrán que cumplir los casos de uso mostrados en la
figura 3.