El término WebRTC se ha vuelto tendencia recientemente en el ámbito VoIP. Muchos no entienden realmente de qué se trata y otros piensan que sólo es un softphone en el navegador.
El presente artículo tampoco busca resolver los misterios de WebRTC, sino dar con una solución efectiva para aquellos que deseen experimentar con esta tecnología; y sí, la idea de el presente artículo es hacer funcionar un softphone en el navegador, pero las posibilidades a partir de allí son mucho más interesantes.
Para ir directamente a la masa y sin más preámbulos, empecemos con los pasos.
1) INSTALAR ELASTIX
1.1) Descargar e instalar Elastix 4 RC3 de este link
1.2) Actualizamos Asterisk porque la versión que viene en Elastix 4 RC3 no tiene soporte ICE
# rpm -Uvh http://repo.elastix.org/elastix/4/updates/x86_64/RPMS/asterisk-11.20.0-1.el7.centos.x86_64.rpm
2) INSTALAR EL WEBPHONE
2.1) Descargar sipml5-master.zip de https://github.com/DoubangoTelecom/sipml5 y colocar el archivo en el servidor Elastix bajo la ruta /var/www/html
2.2) En el servidor ejecutamos los siguientes comandos.
# cd /var/www/html # unzip sipml5-master.zip # mv sipml5-master phone
3) CREAR EXTENSIONES
Ingresar a Elastix y crear 2 extensiones en el menú “PBX -> PBX Configuration -> Extensions”.
Yo he creado la 2001 y 2002, teniendo cuidado de establecer las siguientes 4 opciones.
La cuenta 2001 la usaré para el teléfono WebRTC y la 2002 la configuraré en un softphone de escritorio. En este caso el BRIA.
Aplicamos los cambios.
Aquí viene algo truculento y es que aparte de estos parámetros es necesario configurar otros que FreePBX no trae por omisión, por lo que nos veremos obligados a ponerlos a mano en el archivo de configuración /etc/asterisk/sip_additional.conf
En la sección correspondiente a la extensión WebRTC (es decir, la 2001 en nuestro caso) añadimos las siguientes líneas:
dtlsenable=yes ; Tell Asterisk to enable DTLS for this peer dtlsverify=no ; Tell Asterisk to not verify your DTLS certs dtlscertfile=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS cert file is dtlsprivatekey=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS private key is dtlssetup=actpass ; Tell Asterisk to use actpass SDP parameter when setting up DTLS
También modificamos la línea que configura el transporte, incluyendo WSS entre los transportes disponibles. La línea debería quedar así:
transport=wss,ws,udp,tcp,tls
[alert style=\”green\”]Hay que notar aquí que estos cambios SE SOBREESCRIBIRÁN cada vez que apliquemos la configuración de FreePBX. En Elastix 4 estable planeamos solucionar este inconveniente, así como también incluir el RPM de Asterisk con soporte ICE.[/alert]
4) CREO CERTIFICADOS PARA SRTP
4.1) Creo la carpeta donde irán los keys
# mkdir /etc/asterisk/keys
4.2) Creo los certificados
# /usr/share/doc/asterisk-11.20.0/contrib/scripts/ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys # /usr/share/doc/asterisk-11.20.0/contrib/scripts/ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o malcolm
4.3) Permisos
# chown -R asterisk.asterisk /etc/asterisk/keys
5) CAMBIOS EN ASTERISK
5.1) Creo los certificados para el servidor Web embebido q trae Asterisk
# openssl req -new -x509 -days 365 -nodes -out /tmp/foo.pem -keyout /tmp/foo.pem
5.2) Editar el archivo vim /etc/asterisk/http_additionals.conf
[general] enabled=yes enablestatic=no bindaddr=0.0.0.0 bindport=8088 prefix=asterisk tlsenable=yes tlsbindaddr=0.0.0.0:8089 tlscertfile=/tmp/foo.pem tlsprivateket=/tmp/foo.pem
5.3) Edito el archivo /etc/asterisk/sip_general_custom.conf y agrego las sgtes líneas
tlsenable=yes tlsbindaddr=0.0.0.0 tlscertfile=/etc/asterisk/keys/asterisk.pem tlscafile=/etc/asterisk/keys/ca.crt tlscipher=ALL tlsclientmethod=tlsv1
5.4) reiniciar asterisk
# service asterisk restart
6) CONFIGURO TELEFONOS
6.1) WEBPHONE
Apuntar el browser al cliente WebRTC http://192.168.88.106/phone/call.htm y configurar
Nota: En mi caso este (192.168.88.106) es el IP de mi servidor Elastix.
Presionamos el botón que dice \”Expert mode?\” y configuramos los siguientes parámetros.
En la pantalla anterior hay que notar que estamos usando WSS como transporte, en lugar de WS.
6.2) BRIA
Configuro otro cliente SIP para la extensión 2002. En mi caso el BRIA
[alert style=\”green\”]
Tip importante: En caso de usar certificados no válidos (auto firmados) como en nuestro ejemplo, es necesario que el navegador acepte previamente dicho certificado. Para lograr esto, antes de usar el teléfono Web, debemos apuntar nuestro navegador al URL del websocket, aquí es https://192.168.88.106:8089/asterisk/ws. Luego de aceptar el certificado, obtendremos un mensaje de \”Upgrade Required\” que es lo esperado. A continuación, ya podremos usar el teléfono WebRTC.
[/alert]