Beruflich Dokumente
Kultur Dokumente
FESTIVAL, INTEGRACIÓN
CON ASTERISK,
CONFIGURACIÓN DE
COLAS Y AGENTES DE
LLAMADAS.
14/05/2010
Laboratorio 3 de Sistemas de
Telecomunicaciones
Astrid Cristina Ortega
Luis Fernando Solano
Víctor Garzón Marín
Andrés Felipe Dorado.
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
Edinburgo, la Universidad Carnegie Mellon así como otros centros de enseñanza han realizado
contribuciones substanciales al proyecto.
En ésta práctica veremos cómo instalar Festival e integrarlo con Asterisk, para utilizar el servicio de
text to speech en ciertas extensiones, además configuraremos algunas colas y agentes para simular
un CallCenter.
2. PUNTOS A DESARROLLAR:
2.1. Festival
a. Definición.
Página 1
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
síntesis de voz se distribuyen bajo licencia tipo MIT-X11 permitiendo uso comercial y no
comercial sin restricción.
Cabe resaltar, entre otras cosas que es open-source, y está disponible para sistemas Unix,
Linux y MacOSX, aunque existen versiones no oficiales para windows. Oficialmente soporta
inglés en dos variantes (Británico y Americano), Español y Galés, aunque el soporte del inglés
está más avanzado. El objetivo de los sintetizadores de habla es la lectura automática de
textos, de forma que puedan automatizar esta tarea y hacerla lo más fiable y precisa
posible, por ello las posibilidades de este tipo de aplicaciones son muy variadas, desde la
creación de software para gente con dificultades de lectura hasta el soporte de nuevos
sistemas de interacción humano-computadora (por ejemplo, un auto que informa a su usuario
si realiza cierta acción). Los sintetizadores de habla son una pieza fundamental en el objetivo
de obtener un sistema capaz de entablar una conversación. Festival está programado
íntegramente en C++ y tiene un API accesible para otros lenguajes como Java y es
totalmente modular, por lo que puede trabajarse con cada módulo concreto, lo que permite
una gran flexibilidad al adaptarlo a cualquier entorno. Festival, es una herramienta muy
potente, pero desafortunadamente su desempeño no iguala a la de otros programas
comerciales.
Actualmente algunos de los TTS comerciales más populares son Loquendo y Natural Voices de
IBM.
b. Instalación y Configuración.
Página 2
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
Después de instalado el paquete de voz, debemos configurar a festival para que tome
este paquete, para ello, debemos modificar el archivo init.scm que se encuentra en
/local/share/festival, dándole el nombre exacto del archivo, así que debemos
averiguar cuál es el nombre que tiene nuestro archivo, para ello vamos hasta la ruta
/local/share/festival/voices/ (cd /local/…/voices) y lanzamos el comando
ls para listar todos los archivos dentro de esta carpeta, en ella deben encontrarse dos
carpetas mas English y Spanish, ingresamos a la carpeta Spanish (cd Spanish) y
de nuevo listamos (ls) y veremos que se encuentra una carpeta con nombre
voice_juntaDeAndaLucia… copiamos ese nombre en algún lugar (en un editor de
texto o simplemente lo dejamos en el clipBoard) y ahora si modificamos el archivo
init.scm (gedit /local/share/festival/init.scm) y cambiamos las siguientes
líneas.
;;; Default voice (have to do something cute so autoloads still work)
(eval (list voice))
(provide 'init)
Por
;;; Default voice (have to do something cute so autoloads still work)
(eval (list voice_juntaDeAndaLucia…))
(provide 'init)
Con lo hecho hasta ahora festival ya debería funcionar, para verificar si el servidor
realmente arranca en el equipo desde consola introducimos el siguiente comando y
obteniendo como resultado lo mostrado en la siguiente figura.
Festival --server
Página 3
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
Una vez comprobado que el servidor esta funcionando procedemos a modificar el archivo
extensions.conf ubicado en /etc/asterisk/ al cual adicionamos una nueva
extensión con la cual se hara una pequeña prueba que demuestre la correcta integración
de asterisk y festival.
exten => 564,1,Answer()
exten => 564,2,festival(laboratorio de sistemas de telecomunicaciones
tres)
exten => 564,3, wait(2)
exten => 564,4,Hangup
Para realizar la prueba es necesario que el servidor festival este iniciado, luego se inicia
asterisk (desde consola escribimos sudo asterisk -vvvvc), usando un softphone nos
registramos y procedemos a llamar a la extensión 564 la cual deberá contestarnos y
decirnos el mensaje que le escribimos en el archivo extensions.conf
Página 4
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
b. Configuración.
Configuramos primero los agentes haciendo uso del archivo agents.conf ubicado en
/etc/asterisk (gedit /etc/asterisk/agents.conf), y quitamos los comentarios a las
siguientes líneas:
[general] ; empieza la parte general
persistentagents=yes ; define si el callbacklogin tiene que ser almacenado en la
base de datos interna de Asterisk. De esta forma cuando
volvemos a arrancar asterisk estos datos erán recargados
multiplelogin=yes ; define si es permitido a una misma extensión conectarse como
agente múltiple
Página 5
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
Para finalizar con este archivo definimos un grupo para los agentes que vamos a configurar:
group=1
group=2
agent => 2010,2010,Dorado
agent => 2020,2020,Marin
Página 6
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
c. Colas
Como mencionamos podemos configurar Asterisk de forma tal que si varios usuarios llaman a una
misma extensión no les aparezca que la línea está ocupada, sino que queden en espera para
luego ser atendidos, para lograr esto debemos configurar colas en asterisk.
d. Configuración de Colas.
Tenemos que editar el archivo mencionado: gedit /etc/asterisk/queues.conf y modificamos sus
líneas de la siguiente manera:
[general]
include => sos
include => votos
sos nos simula una línea de atención de emergencias, mientras que votos nos simula una linea para
votación como las utilizadas en algunos programas de televisión.
persistentmembers = yes
si usamos agentes dinámicos su configuración se guardará en la base de datos de Asterisk. De
esta forma si Asterisk se vuelve a arrancar, cada agente será enrutado a su correspondiente cola.
keepstats = no
mantiene las estadísticas de la cola durante un “reload” de Asterisk
autofill = yes
Con este parámetro (autofill) permitimos que los usuarios sean atendidos de forma paralela
mientras existan agentes disponibles inscritos a la cola a la cual está llamando el usuario.
monitor-type = MixMonitor
Permite mezclar los archivos de sonidos de conversaciones que se hayan grabado en un solo
archivo.
shared_lastcall=yes
en el caso de agentes que pertenecen a más de una cola poniendo a yes este parámetro se
respetarán los tiempos de espera entre las distintas colas
Hasta aquí hemos configurado el contexto general del archivo queues.conf, ahora vamos a
configurar los contextos para cada una de las colas nombradas al comienzo de este archivo, (sos
y votos).
[sos]
Es el nombre de la cola que vamos a configurar
context = ejemplo
Al igual que en el archivo sip.conf establecíamos a que contexto pertenece determinada
extensión, en este archivo debemos establecer a que contexto pertenece determinada cola.
musicclass = default
strategy = leastrecent
Con strategy definimos que tipo de estrategia hay que utilizar para atender las colas. Las
posibles opciones son:
Página 7
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
Leastrecent: Asigna la siguiente llamada al agente que más tiempo lleve sin atender
una llamada.
Fewestcalls: Asigna la siguiente llamada al agente que menos llamadas haya
atendido.
Random: Asigna la siguiente llamada aleatoriamente a cualquier agente disponible.
Ringall: Llama a todos los agentes a la vez y el primero que descuelgue será quien
atienda la llamada.
RRMemory: Distribuye las llamadas “por turnos” entre los agentes disponibles y
“recuerda” el último agente al que intentó llamar.
Linear: contacto los agentes siguiendo el orden definido en este archivo de configuración.
Wrandom: asigna la llamada aleatoriamente usando una métrica basada en penalidades.
timeout = 20
Tiempo, en segundos, pasado el cual la llamada se considerará no contestada por el agente.
retry = 5
Tiempo, en segundos, antes de volver a llamar todos los agentes
weight=0
Cada cola puede tener un peso. Las colas con un valor alto tendrán prioridad respecto a aquellas
con un valor más bajo.
autopause=no
si un agente no contesta una llamada será puesto en pausa
maxlen = 0
Parámetro para número máximo de usuarios que pueden entrar en la cola de espera (0 =
ningún límite)
announce-frequency = 90
Frecuencia en segundos con la cual se anunciará al usuario en la cola su posición y/o tiempo
estimado de espera.
min-announce-frequency = 15
Para evitar que cada vez que la posición y/o el tiempo estimado de un usuario cambie, se le
presente un anuncio, este parámetro define un tiempo (en segundos) que se esperará antes de
comunicarle su nueva posición/tiempo estimado.
periodic-announce-frequency=60
Este parámetro representa cada cuantos segundos a un usuario en la cola se le presentará un
anuncio (por ejemplo relacionado con algún producto de la empresa).
announce-holdtime = no
anunciar junto a la posición en la cola el tiempo estimado de espera. Puede ser yes, no, u once
(una sola vez)
announce-position = yes
Periódicamente se le anunciará al usuario en la cola, su posición en la misma.
announce-round-seconds = 10
El tiempo de espera estimado será redondeado a las decenas
Página 8
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
[votos]
context=ejemplo
musicclass = default
strategy = leastrecent
timeout = 15
retry = 5
weight=0
autopause=no
maxlen = 0
announce-frequency = 90
min-announce-frequency = 15
;periodic-announce-frequency=60
announce-holdtime = once
announce-position = yes
announce-round-seconds = 10
Despues de configurado este archivo, debemos configurar una extension para las colas que hemos
configurado, para ell vamos a modificar el archivo extensions.conf ubicado en /etc/asterisk (gedit
/etc/asterisk/extensions.conf).
e. Prueba de agente.
Página 9
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.
Para probar el funcionamiento de los agentes, vamos a necesitar tres equipos todos
conectados al servidor.
3. PROBLEMAS PRESENTADOS
La instalación de festival no presenta ningún problema, pero si su integración con asterisk, al
parecer la última versión de asterisk no tiene un buen desempeño con festival y su integración
fue imposible, para solucionar este problema fue necesario reinstalar de nuevo asterisk a una
versión mas baja, (asterisk 1.4.31). También es importante comentar que en la gran mayoría del
material utilizado para esta instalación recomendaban instalar primero festival y luego asterisk.
4. BIBLIOGRAFÍA
http://www.asterisk.org/
http://es.wikipedia.org/wiki/Asterisk
Manual de Asterisk y otras hierbas. Sellés Rosa, Fabian. Universidad de Cádiz.
Página 10