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á. 😉

  • Rolando Calderon

    Estoy tratando de instalar la solución, te aviso como queda!

  • Rolando Calderon

    Ya hice todo el proceso y me aparece el dialer, pero cuando me logeo como callBack, en el area de mensajes donde a ti te aparece que la extensión esta logeada, a mi me aparece esto:

    Disconnected: Failed to connect to the server

    Donde puedo revisar si tengo algun error?

    • navaismo

      Generalmente ese mensaje indica que el gateway webrtc2sip no esta corriendo. Para verificar si esta corriendo ejecuta el comando: screen -ls desde el shell de linux, si el resultado es una sesión llamada ‘wrtc’ entra a ella con el comando: screen -r wrtc e intenta registrarte de nuevo.

      Si no ves actividad quiere decir que no esta recibiendo peticiones, checa el las reglas de IPTABLES de tu PBX.

      Si no hay resultados de la sesión tienes que ejecutar el comando: screen -dmS wrtc /usr/local/sbin/webrtc2sip –config=/usr/local/sbin/config.xml

  • Rolando Calderón

    Solo funciona para 32 Bits verdad?, para 64 no funciona

    • navaismo

      Si solo lo he podido probar con 32bits no tengo máquinas de 64bits.

  • Rolando Calderón

    Pues ya lo instale y por mas que busco, cuando el agente se logea usando Google Chrome, siempre da el mensaje: Browser Not Supported y no funciona, que puede ser?

    • navaismo

      Usa la versión actualizada de Chrome si persiste el error, deberás instalar el addon FIREBUG LITE para obtener el debug de la página web al cargar.

  • Rolando Calderón

    Al final lo hice funcionar, el problema es que solo funciona para extensiones SIP y en el sistema tengo extensiones IAX, pero un par de cambios y quedo.

    Por cierto, por ahi nos vemos en elastixworld!

    • navaismo

      Asi es, solo funciona para extensiones SIP, el stack de webrtc solo es para SIP. mas info en sipml5.org .

      Saludos y allá nos vemos.

      PD: Gracias por el feedback ojalá nos puedas contar como funciona después de todo lo que has hecho.

    • dario

      amigo, cambio realizo para la conexión por iax2

      • navaismo

        No funciona para IAX2 solo para extensiones SIP, me imagino que reemplazo las extensiones IAX2 por SIP.

  • Pingback: Asterisk México» Blog Archive » Sistema de Atención al Cliente con WebRTC y Elastix-CallCenter.()

  • Gerardo Zambrano

    Amigo yo lo monte bien pero el problema que tengo es que cuando llamo a la cola me repica en el teléfono de la consola de agente descuelgo la llamada paro la llamada no entra.

    que puede ser ?

  • Gerardo Zambrano

    este es el error que me aparece cuando descuelgo la llamada de la cola.

    – SIP/702-00000038 is ringing

    — Got SIP response 603 “Decline” back from 192.168.100.200:10060

    — SIP/702-00000038 is busy

    — Nobody picked up in 0 ms

    • navaismo

      No sé si lo instalaste como dice aquí o si lo instalaste ya desde la página de addons(ya es un addon oficial de Elastix). Pero si persiste el problema lo mejor será que inicies un nuevo en los foros de asterisk méxico(asteriskmx.com/foros) donde incluyas el sip debug de asterisk y el debug de chrome cuando pasa esto.

      Saludos.

  • Leonardo Miranda Collantes

    Quisiera saber si esta version de Call Center de la que hablas es simplemente la basica, no la profesional, la de pago