Integrando WebRTC al módulo de call center de Elastix

27 Jun

Hola, quienes me conocen saben que yo prefiero usar Asterisk Plano sobre cualquier cosa. Cuando la gente me dice que quieren usar sí o sí una GUI para administrar su asterisk porque no se quieren meter en líos, recomiendo FreePBX. Son pocas las veces que me veo en la necesidad de usar Elastix o recomendarlo de hecho me puedo considerar hasta cierto punto un ‘hater’ de esa Distro; sin embargo, como dice la canción: «…No todo es blanco, O negro: es gris Todo depende del matiz…«, debo decir que una de las cualidades más atractivas de Elastix es su Módulo de Call Center. El cual permite crear campañas de Salida o de Entrada de manera más que sencilla y que su operación es muy pulcra, sin contar además que, integrar nuestro propio CRM es sumamente sencillo.

Este año vendrá de nueva cuenta el ElastixWorld a México y esta vez si pienso asistir ya que dejar pasar las conferencias de las personalidades que vendrán sería un error y más si tomo en cuenta que asistir al Astricon en Atlanta es prácticamente imposible para mi. Es por esta razón que decidí «contribuir»(si se le puede llamar así a una simple edición de código) un poquito al proyecto de Elastix, no quiero ir solo a recibir información invaluable al ElastixWorld sin haber «contribuido» en algo.

Elegí un tema de «moda»: WebRTC y una herramienta útil como el Módulo de Call Center que combinadas podrían tener mucho éxito-según yo-. Así que me di a la tarea de integrar la fantástica API SIPML5 y el Gateway WebRTC2SIP ambos de Doubango a una instalación de Elastix.

Notas sobre la integración y operación

  • Se requiere una versión de ‘libtool’ más reciente de modo que se instala la version 2.4.2
  • Se requiere instalar el Gateway WebRTC2SIP para su operación ya que la versión de Asterisk no soporta WebRTC. La conexión es ws.
  • Solo funciona correctamente con el explorador Google Chrome.
  • Se modifican algunos archivos(consideren respaldarlos antes) utilizados por Elastix entre ellos:
    • /var/www/html/themes/elastixneo/_common/_menu.tpl
    • /var/www/html/modules/agent_console/index.php
    • /var/www/html/agent_console/themes/default/agent_console.tpl
  • La Integración solo funciona con el tema default ‘Elastixneo’.
  • Debido a mi falta de conocimiento tuve que crear una conexión externa a MySQL para obtener el password del ‘Peer’.
  • Se han creado algunos archivos extras:
    • Conexión a la BD: /var/www/html/libs/astdb.php
    • Javascript para el Teléfono: /var/www/html/modules/agent_console/themes/default/js/ml5.js
    • SIPml5 API: /var/www/html/modules/agent_console/themes/default/js/SIPml-api.js
    • Estilos para botones del Teléfono: /var/www/html/modules/agent_console/themes/default/css/bootstrap.css
    • Sonidos utilizados por el Teléfono: /var/www/html/modules/agent_console/themes/default/sounds
  • No se puede marcar desde el teléfono. Esto lo hice así pensando en que el agente sólo debe de recibir las llamadas de una cola Entrante o una campaña del Dialer (se puede modificar a futuro).
  • Si no se está en llamada y se presiona el botón (CALL/Answer) se enviará la llamada al buzón de voz del Agente.
  • La integración esta hecha para trabajar  solamente en modo ‘Agent CallBack’. Esto se debe a la facilidad de tener el teléfono registrado en ‘Stand-by’ una vez que se accedió a la consola del Agente. 

El gateway WebRTC2SIP corre bajo una sessión ‘screen’ con el comando:

screen -dmS wrtc /usr/local/sbin/webrtc2sip --config=/usr/local/sbin/config.xml

Para ingresar a la sesión usar:

screen -r wrtc

Para salir de la sesión sin detener el gateway usar la combinación de teclas CTRL+A+D. Para detener el Gateway, entrar en la sesión y escribir ‘quit’+ENTER.

Instalación

Descargar el tarball desde este enlace. Y extraer el contenido con el comando:

# tar zxvf Elastix_CC_ML5.tar.gz

Cambiar al directorio creado con:

# cd ccml5

Instalar el gateway webrtc2sip.

Para instalar el Gateway ejecutar el siguiente comando:

# ./install_wrtcgw.sh

Esto instalará el framework de doubango, las dependencias y el gateway, dependiendo de la velocidad del equipo puede tomar desde 30 minutos hasta un par de horas.

Añadir el Teléfono WebRTC a la consola de Agente.

Para integrar el teléfono a la consola de agente ejecutar el siguiente comando:

# ./install_webfiles.sh

Si no se ha instalado el Módulo de Call Center previamente, el script preguntará si desean instalarlo. Basta presionar Y+enter para que así lo haga.

Los imágenes del Módulo ya editado:

Inicio de Sesión Consola de Agente modo ‘Callback login’

Consola de Agente con el Telefóno WebRTC Insertado

Demo

Para configurar y usar el Módulo del Call Center de Elastix pueden usar el manual oficial que esta en este enlace Recuerden que el Teléfono WebRTC solo trabajará correctamente en el modo ‘callback login’ en el manual se refieren a él como modo dinámico.

Yo ya tengo preparado una cola de entrada sin datos y una campaña saliente con un CRM Custom. Y este es el resultado:

Inbound Queue:

Outgoing Campaign:

Feedback: Como nada en esta vida es perfecto cualquier feedback se agradecerá. 😉