WebRTC

https://youtu.be/28245z9OlRg

¿Qué es WebRTC?

Si bien este es un manual técnico donde, se da por entendido que el lector está en tema sobre qué es WebRTC, es fundamental dejar en claro este concepto.

WebRTC (Web Real-Time Communication) es un proyecto de código abierto, que proporciona a navegadores web y aplicaciones móviles, de comunicación en tiempo real (RTC) a través de interfaces de programación de aplicaciones (API). Permite que la comunicación de audio y video funcione dentro de las páginas web al lograr la comunicación directa entre pares, eliminando la necesidad de instalar complementos o descargar aplicaciones nativas (como los softphones homologados actualmente)

Neotel se ha basado en este concepto, el cual ha adaptado para integrarlo a sus funcionalidades.

¿Cuáles son las ventajas respecto al uso de telefonía convencional?

Ya no será obligatoria la descarga e instalación de aplicaciones de escritorio/móvil en las terminales de los operadores.

El WebPhone se ejecuta directamente sobre el Web Browser, de forma automática, cuando el operador realiza la autenticación en el ECRM de Neotel o en la Toolbar.

Los clientes que no utilicen ECRM o Toolbar de Neotel, podrán utilizar el WebPhone homologado por Neotel en una pestaña de navegador, o podrán integrar un WebPhone propio dentro de su aplicativo, o utilizarlo en una pestaña de navegador diferente.

Posibilidad de integración con página web y dispositivo canal: con esta vinculación, es posible generar una vía de atención al cliente, integrando el WebPhone en la página oficial de la empresa y generando en la plataforma CallCenter una campaña entrante, en la cual los operadores/agentes recibirán las llamadas que se realicen por medio de la página web.

Agregados en seguridad, tales como: cifrado de extremo a extremo de señalización y audio; gestión automática de claves de registración del WebPhone encriptadas, sin posibilidad de ser gestionada por los operadores; compatibilidad de integración con token en ventana de Login.

Cifrado y autenticación

La solución requiere la implementación de cifrado, tanto de la señalización SIP como así también del audio, desde el servidor WebRTC hacia el WebPhone del operador.

La utilización del WebPhone, se debe realizar utilizando el protocolo HTTPS, por lo que se deberá deshabilitar el protocolo HTTP y por consecuente, también se cifrarán todos los datos de transporte que se generen durante la navegación por el módulo ECRM de la plataforma.

El protocolo de cifrado será TLS 1.2, cuyo algoritmo se encontrará dentro del certificado a utilizar.

Los requerimientos mencionados anteriormente son excluyentes, dado que la W3C específica que la llamada al método para acceder al micrófono desde un navegador, debe ser realizada dentro de un contexto seguro.

Por último, de ser requerido, se logra un cifrado de extremo a extremo, utilizando TLS 1.2 desde Asterisk hacia el server WebRTC.

La autenticación se realizará de forma tradicional, con la excepción de dos campos adicionales que serán utilizados para seleccionar entre el modo de telefonía (normal y WebRTC) y el nombre del dispositivo asociado al operador.

Arquitectura para única isla

La versión actual de la solución WebRTC, requiere la implementación de una nueva instancia de Server, donde se instalará el WRTC Proxy.

El esquema de utilización de puertos es el siguiente:

Server: Neotel WebServer ; Port TCP 443
Utilizado para solicitar el WebPhone desde ECRM o Toolbar vía HTTPS.

Server: WRTCProxy ; Port TCP 443
Envío/Recepción de señalización SIP, cifrada bajo TLS 1.2 vía WSS (Web Secure Socket). Este puerto es configurable, y puede ser cambiado según sea conveniente.

Server: WRTCProxy ; Port UDP 10000-20000
Rango de puertos utilizados para envío y recepción de paquetes de audio SRTP/RTP. Los paquetes de audio provenientes o dirigidos hacia el WebPhone, también son cifrados con TLS 1.2.

Server: Asterisk PBX ; Port UDP 5060
Dedicado a la señalización SIP entre la PBX y WebRTC Proxy Server.

Comunicación AMI/AGI
Es el medio por el cual, el servicio Neotel se comunica con la Central PBX. Es esencial para el funcionamiento de la plataforma y se debe respetar en la configuración de firewall, sin embargo su configuración no está relacionada directamente con la implementación de WebRTC, por lo que si se requiere más detalle sobre el mismo, deberá consultar el manual de arquitectura de la plataforma.

Se debe mencionar que cuando se establece una llamada, los puertos de destino estarán comprendidos entre el rango UDP [10000- 20000], mientras que el puerto de origen (Source Port) que el WebPhone abrirá en la terminal del operador, será un puerto random, por lo que es necesario que el Browser tenga permisos en el firewall del sistema operativo.

Arquitectura Multi-Islas

El módulo Dispatcher, el cuál viene incorporado en esta versión, permite la carga de múltiples direcciones IP que el servicio utilizará como destinatarias de los paquetes enviados por los WebPhones.

Esto permite la implementación de múltiples islas, utilizando un único proxy WebRTC.

Dispatcher cuenta con una base de datos que almacena las direcciones IP de todos los Asterisk de la arquitectura.

A la vez, cada WebPhone, cargará automáticamente la configuración de despacho, que contendrá la IP del Asterisk destinatario correspondiente.

Esta configuración es accesible desde CALLCENTER → SERVIDORES → TELEFONIA → SipOutBound Proxy Server.

Requisitos para la instalación y configuración

Los requerimientos a considerar para implementar WebRTC son los siguientes:

  • Dominio y certificado para garantizar acceso por HTTPS al módulo de gestión CRM con hosting en el servidor WEB1

  • Dominio y certificado para garantizar acceso por WSS (Web Secure Socket) al servidor de telefonía (NEO1)

Los dominios deben estar vinculados a la dirección IP pública de los servidores WEB1 y NEO1 respectivamente.
Si existen políticas de restricción de firewall o port forwarding se debe considerar que el protocolo funciona con los siguientes puertos:

Servidor Web1

Puerto: (TCP 443) - Protocolo: (HTTPS): Utilizado para conectar con el WebPhone, el cuál está embebido en la página web del CRM o Toolbar.

Servidor Neo1

Puerto: (TCP 443) - Protocolo: (WSS): Envío/Recepción de señalización SIP, cifrada bajo TLS 1.2 vía WSS (Web Secure Socket). Este puerto es configurable, y puede ser cambiado según sea conveniente.

Puerto: (UDP 10000-40000) - Protocolo: (SRTP): Rango de puertos utilizados para envío y recepción de paquetes de audio SRTP/RTP. Los paquetes de audio provenientes o dirigidos hacia el WebPhone, también son cifrados con TLS 1.2

Puesto de operador

El webphone del agente, el cuál se ejecutará en el navegador del operador, utiliza el puerto TCP 443 bajo el protocolo WSS, para establecer conexión para el canal de señalización SIP, hacia el servidor Neo1.

El navegador del agente deberá acceder al módulo ECRM de la plataforma Contactus de Neotel, utilizando el puerto TCP 443 bajo el protocolo HTTPS, hacia el servidor Web1.

Al momento de establecerse una llamada, en la negociación de puertos para recepción de audio, el navegador del operador dispondrá de un puerto UDP random (Dirección de tráfico entrante), el cuál quedará en escucha para la recepción de paquetes, provenientes de la dirección IP del servidor Neo1. El navegador del agente también enviará paquetes de audio (Dirección de tráfico saliente), con destino hacia el servidor Neo1 en el rango de puertos UDP 10000-40000

Para aquellos casos donde se desee utilizar WebRTC dentro de un entorno LAN en el cuál los servidores Web1 y Neo1 no poseen conexión a internet, el cliente deberá disponer de un servidor DNS para establecer los dominios mencionados anteriormente.
Por último se deberá brindar un acceso temporal a la LAN (VPN) para que el equipo técnico de Neotel pueda realizar la implementación junto a las pruebas correspondientes.