Elastix slide book-uect
-
Upload
enriquetcamposorg -
Category
Internet
-
view
45 -
download
0
Transcript of Elastix slide book-uect
Capítulo 19
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
MENSAJERÍA INSTANTÁNEA
Protocolo XMPP
XMPP o Extensible Messaging and Presence Protocol, por sus siglas en inglés, es un
protocolo extensible y abierto basado en el estándar XML.
Es ampliamente utilizado para el intercambio en tiempo real de mensajes y presencia
entre dos puntos en Internet.
Existe una gran red de servidores XMPP interconectados entre sí, y a la vez
independientes unos de otros.
Usuarios de distintos servidores conectados a la red Jabber pueden hablar entre ellos
sin ningún problema, ya que cada usuario está conectado a su servidor, y los servidores
de estos usuarios se intercambian los mensajes.
XMPP es el protocolo seleccionado por Facebook para su chat y por Google para
GoogleTalk.
Al nivel más básico, si dos contactos tienen cuentas creadas en el mismo servidor
XMPP, podrán hablar entre ellos.
Características de XMPP
Es abierto: El protocolo de XMPP es gratuito, abierto, público y comprensible.
Existen múltiples implementaciones de código abierto para Servidores XMPP, asi como
numerosos clientes y librerías de desarrollo.
1
Capítulo 19
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Es extensible: Usando el potencial del lenguaje XML, cualquiera puede extender el
protocolo de XMPP para una funcionalidad personalizada.
Es seguro: Cualquier servidor XMPP puede ser aislado de la red pública Jabber.
Cualquier implementación del servidor usa SSL para las comunicaciones cliente-
servidor y numerosos clientes soportan PGP-GPG para encriptar las comunicaciones
de cliente a cliente.
Es descentralizado: Cualquiera puede montar su propio servidor XMPP, además está
libre de patentes y no depende de ninguna empresa de modo que se puede usar
siempre con total libertad.
Para mantener la interoperabilidad, las extensiones comunes son controladas por la
XMMP Standards Foundation.
Clientes XMPP
Spark: Integrado con el servidor OpenFire y pensado para empresas. Escrito en Java.
Libre, gratuito. (Windows, Linux, Mac).
Jabbin: Cliente libre desarrollado a partir de Psi (Windows, Linux) No se sigue
desarrollando.
Bitlbee: Es una pasarela IRC-IM que permite conectar a varios protocolos usando un
cliente IRC.
Pidgin: (Windows y Linux) soporta además protocolos para msn y yahoo.
iChat: cliente incluido en OSX (Mac)
Openfire en Elastix
Openfire es un sistema de mensajería instantánea de código abierto que permite
habilitar servicio de mensajería instantánea interna.
Es el servicio de IM utilizado por Elastix por sus características que permiten
transferencia de archivos, transmisión de mensajes (broadcast), integración con
telefonía, integración con otros gateways, y por supuesto IM.
Está escrito en Java y su funcionalidad puede ser extendida con plugins.
Openfire viene desactivado por defecto en Elastix.
Para instalar Openfire ir al menú “IM” y luego hacer clic en “click aquí”.
2
Capítulo 19
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
El primer paso consiste en seleccionar el idioma
Se debe especificar el dominio del sistema, el cuál ya debe estar configurado (Es el
mismo dominio del servidor Elastix).
3
Capítulo 19
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Se debe especificar la configuración de la Base de Datos. Es conveniente elegir la base
de datos embebida.
En esta pantalla seleccionamos el lugar de datos donde se almacenarán los usuarios.
En esta pantalla seleccionamos la contraseña del administrador.
4
Capítulo 19
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Después del paso anterior culmina la instalación y podemos ingresar a la interfaz
administrativa.
Una vez en la interfaz administrativa podemos crear usuarios, configurar plugins y
grupos.
5
Capítulo 19
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Una vez que instalamos Openfire tendremos acceso a algunas de las siguientes
características de este servicio:
Funcionalidad expandible a través de plugins
Posibilidad de integración con Asterisk
Interacción con otras redes de mensajería instantánea como Gtalk, Yahoo
Messenger, ICQ, entre otros
Soporte para mensajes broadcast
Transferencia de archivos
Puede guardar histórico de conversaciones
Soporte para clustering
Permite crear diferentes grupos de trabajo
6
Capítulo 20
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
SINTETIZACIÓN Y RECONOCIMIENTO DE VOZ
Sintetización de voz
Es la tecnología que permite convertir el texto a audio.
También se conoce como TTS debido al término Text-To-Speech (texto-a-habla en
inglés).
Actualmente ya existen alternativas de sintetización de voz de relativo bajo costo e
inclusive de libre uso como Festival o FreeTTS.
Festival es el motor de sintetización por defecto en Elastix. Es necesario activarlo.
La técnica de sintetización de voz usada por Festival está dividida en en tres partes:
• Análisis de texto.- Normaliza el texto, lo traduce a un formato de palabras
estándar.
• Análisis lingüístico.- Convierte el texto normalizado en fonemas.
• Generación de audio.- Traducción de fonemas a audio.
El algoritmo por omisión usado por Festival para la traducción de fonemas a audios es
RELP (Residual Excited Linear Prediction)
Festival
Festival es un sistema de sintetización de voz desarrollado por la Universidad de
Edimburgo utilizando lenguaje de programación C++
Festival soporta Inglés Americano, Inglés Británico y Español.
7
Capítulo 20
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Puede ser utilizado desde Asterisk.
Festival puede trabajar como cliente y como servidor.
Como cliente puede trabajar en dos modos: línea de comandos y tts (text-to-speech).
Festival dentro del plan de marcado
Asterisk provee una aplicación de plan de marcado llamada Festival.
Esta aplicación funciona internamente conectándose a un servidor Festival a través de
la red y reproduciendo la salida de audio en el canal en uso.
La sintaxis de la aplicación Festival es la siguiente:
text es el texto que se desea sintetizar (y reproducir)
intkeys es un parámetro opcional que especifica las teclas telefónicas que pueden
interrumpir la ejecución del comando.
En este ejemplo si llamamos a la extensión 5333, escucharemos ese mensaje escrito.
Festival en Elastix
Con festival se puede sintetizar voz desde la interfaz Web de Elastix.
Ir a PBX → Tools → Text to Wav.
Se puede escribir un texto y generar un en formato wav o gsm.
Esta funcionalidad podría servir para crear prompts de voz que podemos usar en el
plan de marcado.
8
Capítulo 20
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Reconocimiento de voz
Es el proceso en el que un sistema computacional reconoce lo que un ser humano le
dice.
El término reconocimiento de voz es muchas veces utilizado para referirse al
reconocimiento del habla, como en el caso del sistema telefónico.
Una aplicación muy utilizada para sistemas telefónicos IP basados en Asterisk es
LUMENVOX.
Lumenvox
Lumenvox aunque usa algunos de los fundamentos del reconocimiento de voz, es
diferente ya que no trata de identificar a individuos.
Más bien trata de identificar lo que éste dice.
Para esto hace una comparación de las ondas del audio de una persona que llama, con
los modelos acústicos de su base de datos.
De ahí que sea común encontrarlo en aplicaciones donde una persona que llama
completa una orden de voz; Ej: decir la extensión o el nombre de la persona a la que
llamamos.
Procedimiento Lumenvox
El procedimiento completo sería el siguiente:
Cargar una lista de palabras para ser reconocidas.
El SRH (Sistema de Reconocimiento del Habla) carga el audio del altavoz. Este audio se
representa como una forma de onda.
El SRH compara la forma de onda con sus propios modelos acústicos (Las bases de
datos que contienen información sobre las formas de onda de cada uno de los sonidos)
El SRH comparan las palabras en la gramática a los resultados obtenidos a partir de su
búsqueda de modelos acústicos.
Determina qué palabras en la gramática de audio concuerdan y devuelve un resultado.
9
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
DESEMPEÑO & DIMENSIONAMIENTO
Desempeño de Elastix
El desempeño de un servidor Elastix es un asunto complejo de analizar.
Existen muchos parámetros a tomar en cuenta principalmente el desempeño de
Asterisk, ya que la comunicación de voz es en tiempo de real.
En muchos casos interesa conocer los resultados y recomendaciones principalmente
desde el punto de vista de una PBX.
Factores que afectan el desempeño de Elastix
Hay muchos factores que pueden afectar el desempeño de Elastix de alguna manera.
Los más comunes relacionados con la operación de un servidor de comunicaciones
unificadas son:
Llamadas Concurrentes
Transcoding
Interrupciones de Hardware
Numero de llamadas concurrentes
El número de llamadas concurrentes afecta directamente el consumo de CPU del
servidor. “Es Muy Importante”
El gráfico siguiente tiene pruebas realizadas (sin transcoding) en un computador con un
CPU de 2.2 GHz con 512 MB de RAM.
Obviamente una prueba teórica siempre supone condiciones ideales, por lo cual el
rendimiento debe ser tomado como referencia únicamente.
En el computador se usó Elastix 1.3.
10
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
CPU vs. Llamadas Concurrentes
Uso de CPU
Vemos que se han superado las 200 llamadas concurrentes con menos del 50% de
CPU.
Transcoding
En ocasiones una llamada llega con un codec y el punto de destino final utiliza un codec
distinto.
Asterisk está en el medio por lo tanto tiene que hacer las veces de traductor para que
los dos puntos se entiendan. A este proceso denominamos transcoding.
El transcoding requiere de muchos cálculos matemáticos pues se está decodificando y
codificando información con algoritmos complejos, consumiendo recursos a nivel de
CPU.
11
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Openfire
Openfire es un software escrito en Java que proporciona el servicio de Mensajería
Instantánea.
Sin embargo, cabe señalar que consume una gran cantidad de memoria.
Por lo tanto, si el servicio no es realmente necesario y se cuenta con un servidor
limitado por recursos, es recomendado dejarlo apagado.
Por omisión Openfire no activa al instalar Elastix.
12
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Dimensionamiento telefónico
Determinando el número de líneas telefónicas necesarias
Primer parámetro en un proyecto telefónico nuevo: calcular número de líneas para
satisfacer la demanda prevista.
No se quiere tener más líneas de las necesarias, esto podría significar un desperdicio
de recursos.
Tampoco se debe sub dimensionar el número de líneas, ya que los usuarios podrían
recibir continuamente tonos de ocupado.
El cálculo, por lo tanto debe basarse en criterios técnicos y no ser tomado a la ligera.
El “modelo Erlang” es una aproximación estadística para calcular cuántas líneas
telefónicas necesitaremos en una instalación determinada para satisfacer una demanda
prevista con cierta calidad.
Agner Krarup Erlang
Erlang, Ingeniero y matemático danés que desarrolló las técnicas de Ingeniería de
Tráfico y Teoría de Colas.
Exploraremos estos conceptos para darle al lector cierto conocimiento básico y
práctico de estas técnicas sin llegar al rigor matemático que ellas demandan.
Estas técnicas nos permitirán dimensionar cuántas líneas telefónicas necesitaremos en
una instalación.
La unidad Erlang
Un Erlang es una unidad adimensional comúnmente utilizada para medir el tráfico
telefónico por hora, o se puede decir que un Erlang representa la utilización continua
de un circuito.
13
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
1 Erlang equivale a la utilización de un circuito continuamente durante una hora, en un
lapso de una hora de tiempo o lo que es lo mismo que el circuito estuvo siempre en
uso.
Así mismo 0.5 Erlangs quiere decir que en el lapso de una hora el circuito se utilizó
solo 30 minutos.
Para calcular el tráfico en Erlangs se puede proceder de la siguiente manera:
Encontrar el tráfico total en horas: Se suma el tiempo de todas las llamadas
durante un lapso de tiempo cualquiera y se convierte este valor a horas
Encontrar el tráfico por unidad de tiempo (en horas): Se divide el total anterior
para el lapso de tiempo en horas
Ejemplo
En una empresa cualquiera entre las 9H00 y 12H00 de un día determinado se
realizaron 300 llamadas, con un promedio de 6 minutos por llamada y se quiere medir
el tráfico en Erlangs.
Tráfico Total = Tráfico en 3 horas = 300 x 6 = 1800 minutos
= 1800 minutos / 60 minutos = 30 horas
(quiere decir que se hablaron 30 horas en ese lapso de tiempo)
Tráfico por hora = Tráfico Total / Lapso de Tiempo
= 30 horas / 3 horas = 10 Erlangs
Hemos obtenido una medida de tráfico de 10 Erlangs.
Modelos Erlang
En esencia existen dos modelos en las teorías de Erlang que se utilizan mucho en
telefonía:
modelo B
modelo C
En la presente obra estudiaremos el modelo B pero recomendamos al lector recabar
información del modelo C.
Nota: El modelo C se utiliza para calcular probabilidades en llamadas que entran a colas así que si el
lector está pensando en administrar un call center sería útil que indagara en el modelo Erlang C.
14
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Erlang B
El modelo Erlang B es el más común. Se usa determinar el número de líneas necesarias.
Básicamente necesitamos alimentar a la fórmula con un par de parámetros y podemos
obtener el número de líneas que necesitamos.
Estos parámetros son:
Tráfico punta o pico (el tráfico en la hora de mayor actividad)
Grado de Servicio (o GOS por sus siglas en inglés).
El Tráfico punta o pico se obtiene sumando todo el tráfico en la hora con más actividad
telefónica.
Es útil tomar muestras no solo de un día sino de algunos días o semanas para que la
información sea más exacta.
El Grado de Servicio representa la probabilidad de que una llamada sea rechazada. Su
valor va de 0 a 1. Donde 1 significa el 100% de rechazo de llamadas.
Grados de Servicios Comunes
15
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Fórmula Modelo Erlang B
Donde:
E es el valor del tráfico punta o pico (en Erlangs)
N es el número total de líneas telefónicas
Como vemos, el valor de GoS no es sencillo de calcular.
N, que es el valor que buscamos, tampoco es sencillo de despejar.
Actualmente hay muchas herramientas en línea, algunas gratuitas, o aplicaciones para
Smartphones que permiten calcular el modelo de Erlang B.
La presentación de la fórmula ayuda a que el profesional de Elastix sepa los
fundamentos del cálculo de la misma lo cual siempre es útil.
Tomemos el cálculo que hicimos anteriormente:
Tráfico Total = Tráfico en 3 horas = 300 x 6 = 1800 minutos
Tráfico por hora = 10 Erlangs
¿Cuántas líneas telefónicas necesito con un GoS de 0.01?
Calcúlalo en:
http://www.erlang.com/calculator/erlb/
Flash Operator Panel En instalaciones con alta actividad telefónica el FOP puede comenzar a consumir
recursos fuera de los niveles deseados.
16
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
En instalaciones con alta actividad telefónica el FOP puede comenzar a consumir
recursos fuera de los niveles deseados.
El FOP se comunica con Asterisk a través de AMI.
Por lo tanto se encuentra escuchando toda la actividad telefónica a través del puerto
de red que levanta Asterisk para este fin.
Cuanto más actividad, más información tiene que procesar el FOP.
En instalaciones grandes, en caso de que el uso del FOP no sea requerido es mejor
apagarlo.
Herramientas
top
Para hacer un análisis breve de los servicios que están consumiendo recursos, basta
con ejecutar un comando top.
Ordenamos su salida por consumo de memoria y también por consumo de CPU.
Para hacer lo primero escribimos la letra M (Mayúscula) y para lo segundo la letra P.
En algunas ocasiones podemos observar el proceso java liderando las estadísticas de
consumo.
17
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Normalmente esto tiene que ver con Openfire debido a que se encuentra
implementado sobre java.
sipp
Sirve como generador tráfico SIP, ayudándonos a generar llamadas SIP hacia nuestro
servidor Elastix.
Esto nos permite tomar muestras para entender cómo reaccionan los recursos del
sistema (CPU, memoria).
La idea general es generar un volumen alto de llamadas y determinar el performance
de nuestro equipo en varios escenarios.
Sipp es una herramienta de código abierto. Información de descarga y documentación
puede ser encontrada en: http://sipp.sourceforge.net/
Cuando un solo servidor no alcanza
Muchas veces una instalación es tan grande que rebasa la capacidad de un sólo equipo.
Para estos casos es recomendable dividir un Elastix en uno o más servidores, o
balancear la carga.
Existen dos esquemas que se usan en la práctica:
Distribuir el trabajo en equipos especializados
Distribuir el plan de marcado
18
Capítulo 21
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Distribuir el trabajo en equipos especializados
Es posible migrar ciertos servicios a otros servidores:
MySQL
Antispam
Postfix
Openfire
Distribuir el Plan de marcado
La funcionalidad utilizada es DUNDi y puede configurarse para utilizar varios
servidores.
Elastix tiene actualmente un addon que permite configurar un plan de marcado
distribuido.
Revisaremos Plan de Marcado Distribuido y DUNDi mas adelante en este curso.
19
Capítulo 22
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
SEGURIDAD
Algo de Historia
Por los años 60 se dieron cuenta que si generaban una señal audible a la frecuencia
exacta de 2,600 Hertz producían que las llamadas telefónicas se colgaran.
Algunos hackers se pusieron a estudiar y entender la señalización telefónica, realizando
llamadas de larga distancia de manera gratuita.
Desde entonces hay personas dedicando miles de horas de investigación a tratar de
quebrantar la seguridad de servidores alrededor del mundo.
Buenas Prácticas
Todas las acciones básicas recomendadas para iniciar la operación de un servidor de
comunicaciones unificadas
Limitación del acceso al servidor
No usar el usuario root
No dejar sesiones de consola abiertas
Bloquear el reinicio
Utilizar contraseñas fuertes
Deshabilitar el acceso directo a FreePBX
Ataques y vulnerabilidades a nivel de red IP
Denegación de servicio
Ataques de inundación SIP (SIP Flooding)
Sniffing
Captura de llamadas a nivel de VoIP
Fraude telefónico
Intento de obtención de privilegios de root
Algunas soluciones a los problemas de seguridad
Apagar los servicios que no vamos a usar
20
Capítulo 22
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Firewalls
IDSs e IPSs
Actualizaciones
Monitoreo
Usar un Switch en lugar de un HUB
Cambiar las claves por omisión
Encriptando la VoIP
SRTP: El protocolo SRTP (Secure RTP) no se encuentra soportado oficialmente en
Asterisk 1.6; Asterisk 1.8 tiene soporte nativo para SRTP.
VPNs: Una VPN (Virtual Private Network) o Red Privada Virtual es un concepto que
nos permite simular una red privada sobre una red pública como el Internet.
Encriptación IAX: Cuando IAX fue concebido se pensó en problemas de violación a
la privacidad y se añadió soporte nativo para encriptación de llamadas.
Auditoría de seguridad
Una auditoría de seguridad debe ser considerada como una práctica preventiva.
Es recomendable que se realice periódicamente para detectar a tiempo problemas que
podrían poner en riesgo nuestros equipos.
Escaneo de puertos de red
Revisión de logs del sistema
Revisión de rootkits
Auditoría avanzada con Nessus
El módulo de Seguridad de Elastix
Configuraciones básicas de seguridad a nivel de interfaz:
Gestión de Firewall
Auditoría de uso de la Interfaz web de Elastix
Auditoría de Contraseñas débiles
Configuración Avanzada
21
Capítulo 22
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Gestión de Firewall
Interfaz para administración de IPTables
Posee un conjunto de reglas predefinidas
Permite la personalización de puertos
22
Capítulo 22
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Activando el Firewall
Creando una nueva regla
Opciones para configuración
Tráfico: ENTRADA, SALIDA, A TRAVES
Interfaz de ENTRADA: CUALQUIERA, Ethernet 0, Loopback
Dirección de Origen
Dirección de Destino
Protocolo: TODOS, TCP, UDP, ICMP, ESTADO
Objetivo: ACEPTAR, DESCARTAR, RECHAZAR
23
Capítulo 22
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Personalizando un Puerto o un rango de Puertos
Auditoría de uso de la Interfaz web de Elastix
Permite visualizar las operaciones efectuadas utilizando la Interfaz web de Elastix
Posee la posibilidad de utilizar filtros por fecha o por búsqueda de una palabra clave
Ofrece la descarga de los logs de utilización en formato CSV, XLS o PDF
Auditoría de Contraseñas Débiles
Analiza las contraseñas de las extensiones creadas en Elastix
Verifica que no sean demasiado cortas o que estén basadas en diccionario
Algunos ejemplos: qweasd, a1b2c3, 123456
24
Capítulo 22
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Configuración Avanzada
En este menú se puede activar el acceso directo a FreePBX
Se puede también activar llamadas SIP anónimas.
Es importante mencionar, que aunque existan estas configuraciones, se recomienda
mantenerlas desactivadas por defecto.
Activando FreePBX sin embeber
Elastix mantiene desactivado por defecto la interfaz no embebida de FreePBX.
Si aun es necesario activar la interfaz no embebida de FreePBX, es importante hacerlo
correctamente.
Para esto es necesario ir a: Security → Advanced Settings
Una vez que culminemos cualquier configuración que necesitemos hacer es
recomendable volver a desactivarla.
“No actualice FreePBX desde su interfaz, existen procedimientos de
actualización con Elastix, consulte en los foros o listas.”
25
Capítulo 22
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Una vez activado FreePBX, podemos revisar lo requerido y después desactivarlo de
nuevo.
Técnicas Adicionales
Implementación de Fail2Ban
Implementación de Port Knocking
Implementación de ordenes Allow/Deny durante la configuración de las extensiones
Mantener deshabilitada la interfaz de FreePBX sin embeber
Cambio de puertos por defecto
Utilización de VPNs para extensiones remotas
Documentación Adicional
Seguridad en servidores CentOS con Elastix – Rodrigo Martín
Elastix Network Security Guide – Bob Fryer
Trunking entre dos Sistemas de PBX Elastix PBX Vía Internet – Bob Fryer
Asegurando Elastix – Samuel Cornú
26
Capítulo 23
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
DEPURAMIENTO AVANZADO
Introducción
Un depurador permite examinar la ejecución de un programa a un nivel de detalle
mayor que el habitual.
La ejecución en detalle permite encontrar errores que de otro modo resultarían
difíciles de hallar.
Con un depurador es posible examinar qué estuvo ocurriendo en el momento en que
un programa se colgó.
Dos alternativas para depuración son: strace y gdb
¿Qué hacer cuando Asterisk se comporta mal?
Identificar el componente que está causando problemas
En algunas ocasiones existen problemas por errores en el código, o bugs.
Es importante saber diferenciar si el problema está relacionado con un bug o no
Muchas veces no es un problema de Asterisk sino de Sistema Operativo
El problema puede ser también por otros componentes de Software o Hardware
Reproducir el bug
Los pasos básicos a seguir son:
Examinar los logs, siendo clave la revisión de los minutos anteriores a la falla.
Consultar a los usuarios, ellos viven la operación telefónica día a día.
Monitorear el equipo
Aunque suene drástico en ocasiones es necesario montar guardia en las instalaciones
del cliente y esperar a que el problema ocurra.
Una vez que logramos reproducir el bug y determinamos la situación en que se
produce podemos hacer dos cosas:
Verificar si ha sido reportado - http://bugs.digium.com
Verificar si ya fue solucionado en recientes versiones de Asterisk.
Reportar el bug, si este aun no ha sido reportado, de tal manera que la comunidad de
desarrollo de Asterisk lo resuelva.
27
Capítulo 23
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Errores de Programación
Errores de programación que provocan caídas, colgados o comportamientos
indeseados
Falla de segmentación (Segmentation Fault)
Deadlock
Fuga de memoria
División para cero
Buffer overflow
Strace
Monitorea las llamadas a sistema que realiza un programa determinado y todas las
señales que éste recibe.
Llamadas al sistema comunes en Linux: open, read, write, close, wait, exec, fork, exit,
kill, entre otras.
ptrace es la carácterística que hace posible el trabajo de Strace.
Ejemplo de ejecución de Strace al programa: “cat /proc/cpuinfo”:
[root@elastix ~]# strace cat /proc/cpuinfo
Depuración en Asterisk
Un ejemplo sencillo
Hay ocasiones donde es importante monitorear un proceso de Asterisk en ejecución.
Por ejemplo si nuestro servidor consume muchos recursos de CPU y queramos
averiguar qué está ocurriendo.
Para depurar un programa en ejecución con strace primero debemos averiguar el PID
del proceso que queremos monitorear.
Un ejemplo sencillo
En nuestro enlistaremos los procesos que contengan la palabra Asterisk y tomaremos
el menor PID
[root@elastix ~]# ps aux | grep asterisk
28
Capítulo 23
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Ahora que sabemos el PID podemos monitorearlo con strace de manera sencilla:
[root@elastix ~]# strace -p 1619
GDB
GDB es un completo depurador desarrollado y mantenido por la Free Software
Foundation.
Nos permite hacer seguimiento de la ejecución de un programa insertando pausas
cuando creamos necesario.
También nos permite observar lo que un programa estaba haciendo cuando se colgó.
Además nos permite cambiar ciertas cosas dentro del programa para ver los efectos
que se producen con dichos cambios.
GDB es una opción más completa que strace pero también su uso requiere un tanto
más de conocimiento.
Con GDB podemos depurar programas escritos en C o C++ como es el caso de
Asterisk
Ejemplos simples de uso de GDB
GDB puede utilizarse para depurar un programa de tres maneras diferentes:
Depurando un programa desde el depurador; Desde el propio GDB
gdb programa
Depuración sobre Asterisk en plena ejecución
gdb programa PID
Depuración haciendo backtrace sobre un Asterisk caído
gdb programa caído
29
Capítulo 23
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Comandos básicos
Nota: Para más información puede recurrir al comando “man gdb”
Archivos core y backtraces
Muchas aplicaciones dejan archivos core cuando terminan inesperadamente, esto nos
permite hacer una depuración post-mortem del software.
En el caso de Asterisk esto es posible cuando se lo inicia con la opción –g (Elastix inicia
Asterisk con dicha opción por defecto).
30
Capítulo 23
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Si no se está seguro que Asterisk haya sido iniciado con la opción –g se puede verificar
con el siguiente comando.
Un archivo core es el contenido de memoria del programa en el momento en que se
detuvo.
Es el sistema operativo quien guarda ese contenido de memoria.
Este contenido de memoria, combinado con la tabla de símbolos que se genera cuando
el programa es compilado hacen que gdb nos pueda mostrar información más legible.
Un backtrace es un reporte de las llamadas a funciones que se encontraban en
memoria en un momento dado.
Desde gdb es posible realizar backtraces sobre un archivo core.
Para hacerlo existen dos comandos, el bt y el bt full.
El bt full es un backtrace más detallado que el normal. Muestra parámetros y variables
locales usados por las funciones que están siendo invocadas.
Ejemplo: Primero identificamos el archivo core que necesitamos examinar, por lo
general se trata del último.
31
Capítulo 23
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
¿Cómo reportar un Backtrace a Digium?
Si determinamos que tenemos un bug de Asterisk el siguiente paso lógico es reportar
ese bug al fabricante.
Digium dispone de una interfaz Web para esta finalidad ubicada en:
http://issues.asterisk.org
Cuando se reporta un bug es de mucha ayuda para los desarrolladores de Asterisk
contar un backtrace para poder entender mejor lo que ocurrió a nivel interno.
Los lineamientos generales para reportar backtraces son:
http://www.asterisk.org/doxygen/trunk/AstDebug.html
Se pide no subir archivos core sino únicamente la salida del comando bt y bt full
conseguidos con gdb.
Es importante, al reportar un bug de Asterisk, mencionar que se está utilizando
Elastix.
Esto permitirá a los desarrolladores de Digium conocer que se trata de un Asterisk
compilado con parches y funcionalidades adicionales.
32
Capítulo 24
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
PLAN DE MARCADO DISTRIBUIDO DUNDi
Distributed Universal Number Discovery
DUNDi es un sistema de localización de gateways para el acceso a los servicios de
telefonía.
Utiliza un esquema punto a punto y no requiere ninguna arquitectura de red en
particular ni un esquema jerárquico cliente-servidor.
Este es un punto de diferenciación con ENUM
En otras palabras DUNDI es capaz de consultar los contextos de otros equipos para
encontrar una ruta hacia determinado usuario o peer.
DUNDi en realidad no realiza una llamada como tal, ya que no es un protocolo de
señalización VoIP
Recibe y proporciona la información necesaria para poder contactar a los equipos
independientemente del protocolo de señalización usado.
Por esto es posible usar DUNDi virtualmente con cualquier protocolo soportado por
asterisk.
Es parte de Asterisk por lo cual su integración y funcionalidad en Elastix es
transparente.
Funcionamiento
Para que DUNDi funcione se debe conocer al menos un peer
Si este peer no puede responder a la consulta (él no tiene ese usuario), puede delegar
la consulta a otro peer conocido.
Esto sucede sucesivamente hasta que se encuentre a un peer que tenga una respuesta
al peer consultado.
DUNDi puede ser utilizado en una empresa para extender su operación a varios
servidores en una o diferentes sucursales.
33
Capítulo 24
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Ejemplos de uso Un ejemplo típico de la utilidad de DUNDi es en una empresa multi-sede, en la cual
cada sede tiene su propio equipo con Elastix.
Cada equipo puede publicar sus extensiones y si uno de los equipos pregunta, por
ejemplo ¿dónde está el número 456? la consulta se enviará directa o indirectamente a
todos los servidores en la red DUNDi
El servidor que tenga esa extensión publicada responderá algo como:
IAX2/usuario:[email protected]/456
El uso de DUNDi hace que no necesite un plan de marcado fijo para cada equipo
integrado en una red.
Otro uso común de DUNDi es clúster y balanceo de carga.
Esto es importante en un esquema con muchos usuarios así como para esquemas de
clúster y disponibilidad.
“Cuando un servidor no alcanza”, comentamos esto en la sección de rendimiento.
Bueno, DUNDi es una muy buena opción.
Seguridades
DUNDi usa certificados de encriptación RSA par compartir los planes de marcado.
Esto es requerido ya que las respuestas a una consulta incluyen las contraseñas de las
troncales.
34
Capítulo 24
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Asterisk integra el comando astgenkey que se encarga de generar dichos certificados.
Su uso es: astgenkey -n nombre-de-certificado, ej:
Estos certificados deben ubicarse en la carpeta /var/lib/asterisk/keys de cada servidor.
Podemos compartir este archivo de un servidor a los demás servidores con el
comando spc:
Configuración
DUNDi guarda su configuración en el archivo dundi.conf dentro de la carpeta
/etc/asterisk/.
Este archivo se divide en tres secciones:
[general] - donde se define la identificación en la nube DUNDi y opciones
globales.
[mappings] - donde se definen las respuestas a una consulta de otro equipo.
Peers – definición de peers que consultarán y serán consultados.
Esta configuración debe ser realizada en cada servidor donde se distribuirá el plan de
marcado.
iax_custom.conf - Configuración de troncal.
extensions.conf - Configuración para modificar el contexto "from-internal" de
FreePBX, de tal manera que no obtengamos una respuesta de bad-number en la
búsqueda del número.
extensions_custom.conf - definimos los contextos personalizados para que DUNDi
relacione nuestras extensiones, realice búsquedas en otros equipos y redirija las
llamadas.
Esta configuración permite que cuando creemos una extensión nueva desde la interfaz,
se añada al contexto local incluido en dundi-priv-canonical que usará DUNDi.
35
Capítulo 24
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Configurando en la Interfaz Elastix incluye un Addon para realizar esta configuración desde interfaz.
La aplicación está disponible desde la versión 2.0.3
Vamos al menú Addons, ubicamos “Distributed Dial Plan” y hacemos clic en install.
Una vez instalado, aparecerá un submenú en el menú PBX, denominado “Distributed
DialPlan”.
Iniciamos la configuración en el 1er Servidor.
Llenamos la información marcada como requerida.
36
Capítulo 24
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Luego, en el mismo servidor iremos al submenú “Password Connection”.
Aquí podemos generar el certificado de configuración RSA.
Podemos además enviarlo al destinatario del otro servidor.
El usuario del 2do servidor recibirá un mensaje como este con el certificado:
Una vez con el certificado, el usuario del 2do servidor debe configurar la información
de peer.
Ingresa la dirección IP del primer servidor y el certificado que recibió. El comentario
puede ser cualquiera, generalmente una descripción.
Después hace clic en “Request”.
37
Capítulo 24
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
2do Servidor:
1er Servidor:
38
Capítulo 24
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
2do Servidor:
Esta aplicación realiza todas las configuraciones necesarias por nosotros.
Bajo este esquema podemos distribuir un plan de marcado en varios servidores.
Una ventaja visible es su facilidad.
Aun así es importante saber como configurar DUNDi en bajo nivel para entender la
funcionalidad
39
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
MÓDULO DE CALL CENTER
Módulo de Call Center Este software está diseñado para hacer campañas de llamadas entrantes y salientes.
Estas llamadas permiten la interacción entre operadores (agentes) y personas
contactadas (abonados).
Se usa el término “campaña” para designar la ejecución de un conjunto de llamadas.
El módulo incluye un marcador predictivo que se encarga de llamar de manera
automática a los números “objetivo”.
Además incluye dos componentes importantes: consola de agente (basada en web) y una
interfaz de administración de llamadas.
La versión actual incluye soporte para el protocolo ECCP.
Este protocolo permite que la operación del módulo sea mas eficiente y es posible
integrar aplicaciones externas.
El módulo de Call Center de Elastix es Open Source.
40
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Modelo de Funcionamiento
El módulo del Call Center está implementado alrededor del soporte de colas de
Asterisk.
El diseño asume que cada una de las colas alberga al menos a un agente.
Cada campaña utiliza exactamente una cola. Un agente puede pertenecer a varias colas.
Actualmente se reconocen dos modos principales de funcionamiento: Campañas
Salientes y Campañas Entrantes.
Funcionalidades Implementadas
Llamado automático a partir de una lista de números.
Ejecución de múltiples campañas simultáneas.
Seguimiento de agente asignado a una llamada.
Marcador predictivo.
Almacenamiento de guión de atención.
Ingreso de formulario.
Agendamiento de llamada.
Capacidad de poner en hold una llamada.
Reportes de actividad de llamadas.
Limitaciones conocidas
No se puede asignar un agente específico a una llamada.
No reproduce mensajes de audio en llamadas no atendidas; es decir no coloca llamadas
en una cola sin agentes.
Esto es debido a que el módulo está diseñado para mediar llamadas que son atendidas
por agentes humanos.
Es posible que se implemente esta funcionalidad en el futuro como “Campaña Sin
Agentes”.
41
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Marcador predictivo
Es la porción del Call Center que interactúa directamente con las llamadas.
Está implementado como un servicio residente (daemon) escrito en PHP. Se puede
iniciar como servicio a través del comando:
El marcador inicia cada llamada mediante el uso del comando Originate de Asterisk.
El marcador revisa constantemente las llamadas que han sido colocadas por el y que no
hayan recibido un evento OriginateResponse.
Si el marcador recibe una respuesta del tipo OriginateResponse (ejemplo: join o
link) escribe la información de esa llamada en la base de datos.
El marcador interroga regularmente el estado de la cola para averiguar cuántos agentes
se encuentran registrados y libres.
El número de agentes libres regula cuántas llamadas son iniciadas simultáneamente.
42
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
El marcador estima la duración media de llamada, para intentar predecir si las llamadas en
curso están por terminar, para colocar proactivamente nuevas llamadas. Esta
funcionalidad es configurable.
El modelo para predicción es una distribución Erlang acumulada.
La interfaz Web permite iniciar y detener el servicio de marcador
Además permite activar y desactivar la depuración de problemas en el marcador, incluso
si el marcador está corriendo.
La ruta por omisión del log del marcador es el archivo
/opt/elastix/dialer/dialerd.log
El marcador predictivo se encuentra encendido por defecto cuando se instala el módulo.
Sin embargo es posible apagarlo o encenderlo desde la interfaz, en el menú de
configuración del módulo.
Administración del Módulo
La administración del módulo permite :
o Crear Agentes
o Agregar colas
o Crear nuevas campañas salientes
o Crear nuevas campañas entrantes
o Administración de breaks
También proporciona una interfaz de configuración que permite iniciar, detener y
configurar el marcador predictivo, incluyendo la activación de depuración.
43
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Iniciando la operación de Call Center
Antes de iniciar la operación de Call Center es necesario seguir las siguientes
configuraciones básicas:
1. Instalar el Call Center en Elastix
2. Crear un grupo con la configuración para Agentes
3. Crear Usuarios en el sistema para los Agentes
4. Crear Extensiones para los Agentes
5. Crear Agentes en el módulo de Call Center
6. Crear la(s) cola(s) requeridas para la operación.
Iniciando la operación de Call Center : Instalación
La instalación del módulo es sencilla. Únicamente es necesario ir al menú Addons y hacer
clic en INSTALL.
La instalación se realiza automáticamente.
Una vez concluida se habilitará Call Center en el menú principal.
44
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Iniciando la operación de Call Center : Creación de Grupo
Para la operación es necesario crear usuarios en Elastix para los Agentes que participarán
en ella.
Por razones de seguridad y control necesitamos limitar el acceso de estos usuarios.
Es necesario crear un grupo que tenga únicamente acceso a la consola.
Para crear un grupo debemos ir a:
Sistema → Usuarios → Grupo: Crear Nuevo Grupo
Para configurar el permiso de nuestro nuevo grupo debemos ir a:
Sistema → Usuarios → Permisos de Grupo
Seleccionamos el grupo creado (haciendo clic en mostrar), y filtramos el recurso: Agent
Console.
Seleccionamos y Guardamos.
45
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Una vez que hemos creado el grupo con el acceso restringido, podemos crear los
usuarios para los agentes. Ir a:
Sistema → Usuarios → Crear Nuevo Usuario
Podemos crear tantos Agentes como necesitemos.
Iniciando la operación de Call Center : Creación de Extensiones Debemos crear tantas extensiones como Agentes operen en una campaña.
Es suficiente crear extensiones tipo SIP.
Para facilitar la operación del Call Center estas extensiones son usadas normalmente en
Softphones.
El módulo de Call Center transferirá al agente todas las llamadas en una campaña a su
extensión.
Iniciando la operación de Call Center : Creación de Agentes La creación de Agentes se diferencia de la creación de usuarios ya que estos son
generados en el Módulo de Call Center.
Un operador de Call Center necesita un usuario para hacer login en Elastix, y una vez en
la interfaz, necesita un Agente para hacer login en el Call Center.
Para crear un agente ir a:
Call Center → Agent Options → Agents
Hacemos clic en el link “Nuevo Agente”.
46
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
No se debe colocar nada en “Contraseña ECCP”. El sistema se encarga de asignar una al
crear el Agente.
Iniciando la operación de Call Center : Creación de Colas El proceso de creación de Colas es similar al que vimos anteriormente.
Se diferencia únicamente en que en lugar de colocar extensiones creadas en Elastix,
colocaremos los números de los Agentes que queremos que estén en la cola.
La nomenclatura que se coloca en el listado de Agentes fijos también se diferencia, ya
que tenemos que anteponer la letra “A”.
Crearemos la cola con el número ectetest con el número 101.
47
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Como podemos observar en la figura colocamos los Agentes creados en el módulo de
Call Center, con el prefijo A, seguido de una “,” y el número 0.
Podemos colocar cualquier política de estrategia de ringado. Usualmente se selecciona
“Agente con menos llamadas”.
Iniciando la operación de Call Center : Activando el Módulo Antes de iniciar comprobaremos que el servicio de Call Center está Activo.
Esto se puede comprobar desde el Dashboard o desde el menú de configuración del Call
Center (Dialer apagado/encendido).
Consola del Agente La consola de agente administra la interacción del agente con el sistema. Está basada en
Web.
La consola recibe eventos de una llamada a través del ECCP, al igual que la toda la
información correspondiente a la llamada.
Por medio de la consola el Agente obtiene información de la operación (número
telefónico atendido, información de contacto).
En la actualidad la consola de agente trabaja utilizando el protocolo ECCP.
48
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Acciones
Colgar: Permite terminar una llamada
Descanso: Permite a un agente/operador hacer tomar un receso para una actividad. Los
descansos deben estar previamente configurados por el administrador
Transferir: Transfiere la llamada a alguna extensión existente en el plan de marcado. La
transferencia es ciega actualmente.
VTiger CRM: Abre Vtiger en una ventana nueva del browser. Vtiger debe estar activo.
Fin de sesión: Finaliza la sesión del agente/operador en el Call Center.
Funciones de Campaña
Información de Llamada: Muestra la información de la persona que llama, si se
encuentra en la base de datos. Si no existe la información mostrará el número de
teléfono de la llamada entrante en la parte de abajo.
Diálogo de llamada: Muestra un Script que se ha creado anteriormente para que sirva
de instructivo al agente.
Formulario de llamada: En esta pantalla se muestra el formulario creado para una
campaña.
49
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Campañas Salientes El sistema se alimenta con un archivo que contiene los números telefónicos a marcar.
Al activarse la campaña, el sistema marca los números telefónicos, verificando los agentes
libres registrados que se encuentren en la cola. Tantas llamadas como agentes libres.
En este método se une la cola con el número del abonado. Si la llamada es exitosa entra
a la cola y es asignada al siguiente agente libre.
La asignación depende de la política asignada a la cola (linear, wrandom…etc).
El sistema registra en una base de datos al agente que se asignó a la llamada.
Esta información servirá para varios propósitos de consulta.
Al terminar la llamada, el agente pasa al estado ocioso, y está de nuevo disponible para
recibir una llamada.
Este proceso continúa hasta recorrer toda la lista de números.
Se puede configurar el número de intentos, de tal manera que el módulo llame a los
números que fallaron en ser contactados.
Campañas Entrantes Se define una cola, en la cual se incluyen los agentes. El marcador predictivo no funciona
en esta modalidad.
Se debe organizar que los abonados que llamen al sistema, sean dirigidos a la cola
configurada para la campaña.
El sistema registra en una base de datos al agente que se asignó a la llamada. Esta
información servirá para varios propósitos de consulta.
Se puede alimentar el sistema con datos sobre números específicos para que el agente
tenga información disponible en su pantalla.
50
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Configuración de Campañas Existe un menú habilitado para cada tipo de campañas:
o Outgoing Calls: Campañas Salientes.
o Ingoing Calls: Campañas entrantes.
Antes de iniciar una campaña es importante definir:
1. Formularios
2. Lista de Contactos (Opcional para campañas entrantes)
3. Lista de números telefónicos (Requerido en campañas salientes)
4. Breaks
5. Y por supuesto: Agentes y Colas.
Configuración de Campañas : Formularios Los formularios se crean en:
Call Center → Forms → Form Designer
Cada formulario tiene la opción de agregar múltiples campos de los siguientes tipos:
o Campo de Texto
o Campo de Selección de Lista
o Campo de Fecha
o Campo de área de Texto
o Campo tipo etiqueta
51
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Podemos ver un preliminar del formulario en “Form Preview”.
La creación y manejo del formulario funciona bien en Firefox, es probable que algunas
funcionalidades no se puedan configurar desde otros Browsers.
Configuración de Campañas : Clients – Ingoing Calls Las campañas de llamadas entrantes permiten subir un listado de contactos.
El módulo verifica el número entrante con el listado y muestra la información del
contacto al Agente.
La información soportada por el módulo de Call Center para el listado de contactos es:
"teléfono","cedula/ruc","nombre","apellido”
Es útil hacer el listado en Excel o en hoja de cálculo de OpenOffice
En la primera columna observamos el número telefónico. La segunda contiene el número
de cédula (o un id). La tercera y cuarta columna contienen el nombre y apellido.
El campo cedula/ruc, es un campo requerido por el módulo para subir correctamente el
listado. Podemos colocar un número identificador en el contacto si no conocemos su ID.
En el ejemplo anterior se muestra un número identificador para cada contacto.
El archivo del listado debe ser guardado como csv:
52
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
o Si el archivo es hecho en OpenOffice debe ser guardado como “Texto CSV
(.csv)”
o Si el archivo es hecho en Excel debe ser guardado como “Windows Comma
Separated (.csv)”.
Una vez creado el archivo con el listado de contactos debemos subirlo en el menú
Clients:
Call Center → Ingoing Calls → Clients
Configuración de Campañas : Phone List – Outgoing Calls La información principal de una campaña de llamada saliente es sin duda el listado de
números telefónicos a llamar.
Esta información será requerida cuando creemos la campaña, sin embargo es importante
crearla adecuadamente.
Es útil hacer el listado en Excel o en hoja de cálculo de OpenOffice
El archivo del listado debe ser guardado como csv.
o Si el archivo es hecho en OpenOffice debe ser guardado como “Texto CSV
(.csv)”
o Si el archivo es hecho en Excel debe ser guardado como “Windows Comma
Separated (.csv)”
53
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Configuración de Campañas : Configuración de Breaks Los breaks permiten que un agente salga de operación y permanezca en Stand by como
no disponible.
En este estado el dialer no le asignará llamadas.
Tampoco se le asignarán llamadas en una campaña entrante.
Para crear los breaks vamos a: Call Center → Breaks y hacemos clic en: “Crear nuevo
break”
Los breaks pueden estar en estado “Activo” o “Inactivo”.
Para que el agente pueda seleccionarlos deben estar Activos, caso contrario ni siquiera
aparecerán como opción.
En Campaña: Ingoing Calls Primero debemos seleccionar una cola.
El módulo transferirá las llamadas entrantes a la cola y la cola las distribuirá entre los
agentes que estén configurados en ella.
Pueden existir varias colas y se pueden activar varias campañas entrantes.
Una cola puede además estar seleccionada por dos campañas entrantes.
Call Center → Ingoing Calls → Queues
54
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Luego de seleccionar la cola, es recomendable subir la base de datos de los clientes que
llamarán.
A continuación crearemos la(s) campaña(s) para que inicie la operación de llamadas
entrantes.
Debemos ir a: Call Center → Ingoing Calls → Ingoing Campaigns
Una vez ahí debemos crear una nueva campaña, donde seleccionaremos el formulario a
usar, y detallaremos un breve script para el agente.
55
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Una vez creada la campaña, esta iniciará su operación y asignará llamadas a todos los
agentes que estén conectados.
Revisaremos el proceso de login de un agente posteriormente.
En Campaña: Outgoing Calls Debemos ir a: Call Center → Outgoing Calls → Campaigns.
Una vez ahí debemos crear una nueva campaña.
El módulo permite a varias campañas trabajar al mismo tiempo. El único limitante será la
cantidad de líneas telefónicas que tengamos.
Al igual que en las campañas entrantes, una cola puede estar asignada a varias campañas.
Sin embargo si tenemos una cola seleccionada en una campaña entrante, no podrá ser
seleccionada para una campaña saliente.
56
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Una vez creada la campaña, el dialer iniciará su operación y asignará llamadas a todos los
agentes que estén conectados.
Revisaremos el proceso de login de un agente posteriormente.
El módulo tiene una funcionalidad de indicar números que no deben ser llamados.
Esta funcionalidad permite ingresar un número específico.
También se puede cargar un listado de números de un archivo .csv que previamente ya
teníamos seleccionados para este efecto.
Call Center → Outgoing Calls → Do not call list
57
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Ingreso de Agente a consola Un agente debe ingresar primero a Elastix con su usuario y clave.
Al hacer login, el agente tendrá acceso únicamente a la consola.
Una vez ahí debe escoger el número de agente y la extensión a la que tiene acceso y
hacer clic en ingresar.
El módulo llamará a la extensión, el agente debe contestar y marcar el password
requerido seguido de la tecla # para ingresar al Call Center.
Una vez en el Call Center, el Agente estará listo para recibir llamadas.
58
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Si el agente selecciona un break, no estará habilitado para recibir llamadas.
Interacción de Agente Llamada entrante (no se muestran datos del cliente porque no está en la base de datos).
59
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
El agente puede revisar el Script preparado para la campaña en el TAB “Dialogo de
Llamada”.
El formulario puede ser llenado en el TAB “Formulario de llamada”.
El agente puede colgar la llamada o transferirla a otro número del plan de marcado
interno.
60
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Reportes Los reportes implementados incluyen:
Calls Detail
Calls per hour
Calls per Agent
Hold Time
Login Logout
Ingoing Calls Success
Graphic Calls per hour
Agent Information
Agents Monitoring
Trunks used per hour
Agents connection time
Incoming calls monitoring
61
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
62
Capítulo 25
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
63
Capítulo 26
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
EXTENDIENDO ELASTIX
Extendiendo Elastix Una de las ventajas que tiene Elastix es la posibilidad de hacer customizaciones o
desarrollo adicional.
Cualquier desarrollo que tengamos en mente, puede estar incluido en la interfaz con su
propio menú.
Estos desarrollos adicionales se comportan como módulos.
Un ejemplo de desarrollo adicional en Elastix es el módulo de Call Center.
La posibilidad de que realicemos un aplicación adicional puede impulsar incluso un
potencial negocio para el desarrollador.
Desde la versión 2.0 en adelante muchos desarrollos de PaloSanto Solutions y de
terceros se distribuyen a través del módulo de Addons.
El módulo de Addons, permite a un administrador de Elastix instalar de manera
transparente una aplicación que se encuentre enlistada.
Aunque no se vislumbre como un negocio, es importante saber que podemos tener un
grupo de desarrollo interno ideando como personalizar adicionar características a
nuestra implementación.
A lo largo del curso hemos visto ejemplos de instalación de una solución por medio del
módulo de Addons.
Veremos un ejemplo más instalando el módulo developer.
64
Capítulo 26
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Framework NEO
Es el framework detrás de la interfaz Web de Elastix
Un framework es un conjunto de librerías y código para facilitar la programación y
reutilización de código
Algunas características interesantes son:
Arquitectura Web basada en MVC2
Continuación de características:
Desarrollo POO
Concepto e implementación modular
Mantenimiento de idiomas
Mantenimiento de la ayuda embebida
Soporte ACL
Estructura de archivos en NEO
Archivo o Directorio Descripción
themes/ Contiene las plantillas html, javascripts y css. Representa la capa de vista
index.php
El punto de entrada común para todas las pantallas de la interfaz de Elastix. Es quien decide qué pantalla mostrar dependiendo de los parámetros recibidos. Representa al controlador del módulo
libs/ Aquí se encuentran librerías (código reciclable)
configs/ Archivos de configuración
langs/ Definición de los lenguajes, actualmente se soportar 22 idiomas
images/ Imágenes que serán usadas tanto en la ayuda como en el módulo
help/ Ayuda del módulo
65
Capítulo 26
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Iniciando el desarrollo En versiones anteriores el desarrollo de un módulo se realizaba totalmente a nivel de
consola.
Actualmente Elastix provee una aplicación para crear módulos de una manera mas gráfica
y manteniendo el estilo de la interfaz.
Para instalarlo debemos ir al menú Addons e instalamos el módulo “Developer”
Una vez instado buscamos el menú developer e ingresaremos al Builder.
Usando módulo Developer Es una poderosa herramienta que facilita la creación de nuevos módulos de Elastix
Consta de cuatro sub-módulos:
Constructor de módulos
Eliminar módulo
Mantenimiento de idiomas
Cargar Menú
Builder
66
Capítulo 26
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Builder: Secciones Información general: Nos ayuda a definir el nombre e identificador del módulo, así
como datos del creador y permisos
Localización: Aquí indicamos en qué nivel del árbol de menús se colocará el nuevo
módulo
Descripción: Aquí es donde realmente se define el módulo.
Puede ser de tres tipos: reporte, formulario o enmarcado
Builder: Tipos de módulos Reporte: Es un listado (tabla). Es independiente de la fuente de datos que puede ser una
DB, un arreglo, etc.
Formulario: Formulario para recolectar datos del usuario. Están soportados los tipos
de campos HTML más comunes como:
o text, select, checkbox, textarea, radio, file, hidden, entre otros
Enmarcado: Inserta un frame que nos permite integrar otra aplicación Web en la
interfaz del Elastix
Builder Al final del proceso de creación del nuevo módulo se generará un código esqueleto.
Este nos servirá de guía o plantilla para continuar desarrollando la funcionalidad necesaria
Estos archivos se crearán en la ruta:
/var/www/html/modules/<id módulo>
A partir de este instante dependemos de nuestros conocimientos de programación PHP
Ventajas del Builder Es fácil de instalar
Podemos crear los módulos que necesitemos.
Los permisos se crean automáticamente,
Las carpetas se crean automáticamente
Podemos crear el esqueleto inicial del código ahorrando parte del trabajo de desarrollo.
67
Capítulo 26
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Eliminar módulos Nos permite eliminar un módulo determinado de manera sencilla
Debido a su sencillez es importante remarcar que:
HAY QUE TENER MUCHO CUIDADO PUES PODEMOS ELIMINAR UN
MÓDULO ÚTIL POR ERROR!
Mantenimiento de idiomas Nos permite administrar los diferentes idiomas de los módulos en Elastix
También nos permite crear nuevos lenguajes
Las palabras claves o keys siempre están en idioma inglés
Se puede seleccionar un módulo específico pues cada módulo puede tener su propio
archivo .lang
Una vez realizados los cambios desde la interfaz, dichos cambios se guardan en los
archivos .lang respectivos
68
Capítulo 26
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Haciendo un poco de Historia: Load Module Este módulo era requerido en Elastix 1.6 dado que no existían RPMs para Elastix.
Un módulo que estaba desarrollado podía ser cargado desde aquí comprimido.
Desde Elastix 2.0 todos los RPMs para Elastix están disponibles, por lo cual este módulo
desaparecerá en las siguientes versiones.
Desarrollando para Elastix En los últimos 6 años Elastix a crecido de una manera estable como distribución.
Se cuenta que al menos existen 100,000 potenciales integradores a nivel mundial, fuera
de usuarios finales.
Este mercado puede resultar atractivo para empresas con ideas de desarrollo que
quieran integrar sus soluciones a una plataforma de comunicaciones unificadas.
PaloSanto Solutions tiene planificado publicar un curso para developers para el segundo
semestre del 2012.
Si están interesados en desarrollar su propio addon, pueden escribir a la siguiente
dirección: [email protected]
69
Capítulo 27
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
COMPILANDO ELASTIX
Recompilando los SRPMs La manera más fácil de recompilar Asterisk en Elastix es utilizando los SRPMs provistos
por el proyecto Elastix.
Estos se pueden descargar de
http://repo.elastix.org/elastix/index.php?dir=2.0/updates/SRPMS/
Un link abreviado es: http://elx.ec/srpms
Se debe usar los SRPMs estables más recientes.
Un SRPM (Source RPM) es un paquete que contiene la información necesaria para
construir un RPM.
Tales como el código fuente del paquete y las directrices usadas para compilarlo e
instalarlo en el sistema.
Estas directrices se especifican en un archivo llamado SPEC, que usualmente se distingue
por su extensión *.spec.
Requisitos para el RPM Instalar un Elastix con los requisitos para construir el RPM
Según el último archivo asterisk.spec los siguientes RPMs son requeridos para construir
el RPM de Asterisk.
Debemos asegurarnos que tenemos los paquetes necesarios instalados antes de empezar.
Un listado completo se detalla en la siguiente diapositiva.
gcc-c++
m4
openssl-devel
newt-devel
libtermcap-devel
ncurses-devel
postgresql-devel
gsm-devel
net-snmp-devel
spandsp-devel >= 0.0.6
curl-devel
wget
speex-devel >= 1.2
libxml2-devel
70
Capítulo 27
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Instalar el SRPM de Asterisk Instalar el SRPM de Asterisk y modificar el SPEC de acuerdo a nuestras
necesidades
Luego de descargar el SRPM de Asterisk lo instalamos en la máquina concebida para este
fin.
Esto se hace de manera sencilla con el comando rpm:
[root@elastix ~]# rpm -ivh asterisk-1.8*.src.rpm.
Esta instalación poblará el directorio /usr/src/redhat que es donde se copiará el código
fuente de Asterisk, el archivo SPEC y cualquier otra información nacida del SRPM.
A continuación deberemos hacer los cambios en el archivo SPEC para personalizar
nuestro Asterisk.
Aquí podremos hacer casi cualquier cosa como: Eliminar parches para conseguir un
Asterisk mínimo, Añadir funcionalidad nueva a Asterisk, Parchar contra bugs, entre otras
cosas.
zlib-devel
libpri-devel >= 1.4.12
dahdi-devel >= 2.4.1.2
libtiff-devel >= 3.5.7
libogg-devel
libvorbis-devel
unixODBC-devel
libtool
sqlite-devel
libtool-ltdl-devel
alsa-lib-devel
mISDNuser-devel
mISDN-devel
libopenr2-devel
mysql-devel
zlib-devel
/usr/bin/soxmix
iksemel-devel
libsrtp
libgsmat
autoconf >= 2.63
71
Capítulo 27
Elastix Upgrade PaloSanto Solutions 2012 – © Todos los derechos reservados
Construir el RPM de Asterisk Una vez realizados los cambios en el SPEC nos encontramos listos para recompilar
Asterisk o siendo exactos construir un nuevo RPM para Asterisk.
Para lograr esto nos valemos del comando rpmbuild, pasándole como parámetro la ruta
del archivo SPEC que hemos modificado:
[root@elastix ~]# rpmbuild -ba /usr/src/redhat/SPECS/ asterisk.spec.
Al final del proceso obtendremos los siguientes RPMs en la carpeta
/usr/src/redhat/RPMS/:
Además obtendremos un nuevo SRPM en la carpeta /usr/src/redhat/SRPMS/
asterisk
asterisk-devel
asterisk-sounds-es
asterisk-sounds-fr
asterisk-mISDN
asterisk-addons
asterisk-chan_mobile
72