Sunteți pe pagina 1din 11

GUÍA DE INSTALACIÓN

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.

Universidad del Cauca


Facultad de Ingeniería Electrónica y Telecomunicaciones
Popayán Cauca
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.

Guía de Instalación Festival,


integración con Asterisk,
configuración de colas y agentes
de llamadas.
1. INTRODUCCIÓN:
IMPORTANTE: antes de iniciar con cualquier proceso de instalación, recomendamos leer la sección
3.PROBLEMAS PRESENTADOS. Podría ser necesario realizar de nuevo la instalación de asterisk para
evitar los problemas que allí se plantean.

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.

Con la configuración de colas, se le permite al operador contestar múltiples llamadas o poner en


espera las llamadas entrantes cuando todas las extensiones estén ocupadas, es importante en
entornos como los de los CallCenters donde hay un gran flujo de llamadas entrantes.

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.

Festival en un TTS (text-to-speech, TTS), es decir un sistema de síntesis de voz de propósito


general para múltiples lenguajes, basado en concatenación de difonos y selección de
unidades. 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. Se distribuye
como software libre con licencia similar a la licencia BSD. Festival y las herramientas de

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.

El proyecto incluye la documentación completa para desarrollar sistemas de síntesis de voz


con varios APIs, siendo un entorno ideal para el desarrollo e investigación de las técnicas de
síntesis de voz. El proyecto está escrito en lenguaje C++ y está implementado como un
intérprete de comandos el cual puede conectarse con diversos módulos y aplicaciones.
Además existen librerías para el desarrollo de aplicaciones en los lenguajes Java y C++, así
como un interfaz para el editor de textos Emacs.

El proyecto festival es multilingüe (actualmente soporta inglés (británico y americano),


castellano) aunque el inglés es el más avanzado. Además algunos grupos han desarrollado
herramientas que permiten utilizar otros idiomas con el proyecto.

Las herramientas y la documentación completas para la utilización de nuevas voces en el


sistema están disponibles en el proyecto FestVox del Carnegie Mellon University
(http://festvox.org).

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.

Abrimos el terminal y entramos como root (“sudo su” y escribimos la contraseña).

Una vez tenemos permisos de superusuario empezamos la instalación de los paquetes


necesarios para festival, estos son:
speech-tools  Conjunto de herramientas para text to speech.
festvox-kallpc16k  Es la voz por defecto que utilizará festival.
Festival
festival-dev  estos dos son los paquetes que instalan finalmente festival.
Para instalar estos paquetes lanzamos el comando apt-get install speech-tools
festvox-kallpc16k festival festival-dev

Página 2
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.

Como mencionamos, el festvox-kallpc16k es el paquete de voz que utiliza festival por


defecto, pero este paquete hace el proceso de TextToSpeech en inglés, para utilizar una
conversión de texto a voz en español, es necesario entonces instalar un paquete aparte y
luego configurar festival para decirle que tome ese paquete. Descargamos entonces el
paquete de la junta de Andalucia en español, desde la siguiente página:
http://forja.guadalinex.org/repositorio/frs/?group_id=21&release_id=123 y en nuestro
caso descargamos la última voz femenina festvox-sflpc16k_1.0-1_all.deb , para instalar
esta voz nos ubicamos en el sitio donde fue descargada la voz, por defecto Ubuntu
descarga en el ruta /home/usuario/Descargas, así que, tenemos dos opciones:

La primera es utilizando nuestra interfaz gráfica, vamos hasta /home/usuario/Descargas


ubicamos el archivo que descargamos, le damos doble click e instalar y tenemos nuestra
voz instalada.

La segunda, es desde el terminal lanzamos el comando cd /home/usuario/Descargas


para ir hasta la ruta donde está el archivo que queremos instalar y para instalar el
paquete utilizamos el comando dpkg –i festvox-sflpc16k_1.0-1_all.deb.

Nota: la ruta /home/usuario/Descargas, hace referencia a una ruta generalizada que


utilizamos para describir el proceso, la carpeta usuario en realidad debe tener el nombre
de nuestro usuario Ubuntu, por ejemplo: astrid, en ese caso la ruta pasaría a ser:
/home/astrid/Descargas

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

Verificamos que realmente se integro Asterisk con Festival

Página 4
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.

Funcionamiento de festival y asterisk. Como se puede ver funciona correctamente.

2.2. Configuracion de Colas y Agentes de LLamadas


a. Definición.
La utilización de colas, agentes y grupos de agentes refleja su
importancia en entornos donde se tiene un gran número de llamadas
entrantes, como por ejemplo un CallCenter, en este caso las colas
nos permiten dar orden a las llamadas para poderlas atender una
a una, por parte del agente inscrito a dicha cola. Un agente es un
usuario común de Asterisk que ha sido logeado como agente y que
está inscrito a una cola de llamadas, permitiéndole tener una
conexión total con el servidor y recibir llamadas que vayan entrando a la cola a la cual se
encuentre inscrito. Los agentes pueden configurarse en grupos y de esta manera adjuntar no solo
un agente a una cola sino un grupo de agentes.

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

[agents] ; desde aquí comienza la configuración de los agentes

Página 5
Guía de Instalación Festival, integración con Asterisk, configuración de colas y agentes de llamadas.

maxlogintries=5 ; número máximo de intentos que tiene un agente para


conectarse
autologoff=20 ; si un agente no contesta una llamada dentro de 20 segundos
será automáticamente desconectado
autologoffunavail=yes ;si la extensión desde la cual el agente se conecta se vuelve no
disponible, automáticamente el agente será desconectado
endcall=yes ;un agente puede terminar una llamada presionando la tecla *
musiconhold => default ;la clase de música en espera que escuchará el agente cuando
esté conectado.

Para finalizar con este archivo definimos un grupo para los agentes que vamos a configurar:
group=1

Para la configuración de los agentes seguimos la sintaxis


;agent => IDagente,contraseñaagente,nombre

agent => 1010,1010,Garzon


agent => 1020,1020,Ortega

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.

Esta configuración se realiza en la carpeta /etc/asterisk en el archivo llamado queues.conf,


dentro del cual hay que definir unos parámetros de las colas como por ejemplo cuales agentes
y/o grupos son miembros de una determinada cola y que tipo de estrategia se utiliza para
enrutar las llamadas a los distintos agentes.

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

A continuación inscribimos los agentes que harán parte de esta cola:


member => Agent/1010
member => Agent/1020

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

member => Agent/2010


member => Agent/2020

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).

Y agregamos extensiones para nuestras colas, ellas son:

exten => *123,1,Queue(sos)


exten => *123,n,Hangup

exten => 019011,1,Queue(votos)


exten => 019011,n,Hangup

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.

Corremos asterisk  asterisk –vvvc


En los tres equipos conectados al servidor, debemos tener x-lite o cualquier otro
softphone, en todos nos registramos como un usario cualquiera de los que están en el
archivo sip.conf.
Para registrarnos como agente no debemos registrar con el nombre y la extensión del
agente, sino como usuario normal, luego desde este llamar a la extensión del agente
(ej: 1010), recibiremos un mensaje que dice que ingresemos nuestra contraseña
seguida de la tecla numeral, lo hacemos y si la contraseña es correcta, recibiremos un
mensaje de registro satisfactorio. Haremos esto con uno solo de los usuarios que
tenemos disponibles.
Una vez registrado un agente, este queda conectado, y se activará el servicio de
musicOnHold, mientras no hayan llamadas entrantes.
Desde cualquiera de los otros usuarios que no son agentes marcamos a la línea de la
cola en la cual está registrado el agente (ej: *123), dado que el agente está
disponible su llamada será automáticamente contestada por el agente, mientras esta
llamada está establecida utilizamos el usuario que tenemos libre para llamar de
nuevo a la extensión de la cola (*123). Como el único agente está ocupado el usuario
se pondrá en espera mientras se libera el agente.
El agente puede colgar la llamada actual presionando * o el usuario que está
llamando a la cola puede colgar, cuando esto pasa, la llamada del usuario que está
en la línea de espera será automáticamente contestada por el agente.
Si todo nos funciona de esta manera, tenemos correctamente configurada nuestra cola.

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

S-ar putea să vă placă și