UPDATE 09/02/2014: He eliminado los enlaces ya que FreePBX ha sacado su módulo oficial: http://www.freepbx.org/news/2014-01-27/webrtc-softphone-module-now-available-for-freepbx
Hola, aquí les dejo un módulo(bastante mal hecho pero funcional) que provee un teléfono de software utilizando SIPML5 embebido en FreePBX.
Hola, aquí les dejo un módulo(bastante mal hecho pero funcional) que provee un teléfono de software utilizando SIPML5 embebido en FreePBX.
La idea de este módulo es dar a los usuarios/clientes la posibilidad de un teléfono de emergencia en caso que las troncales locales fallen. El teléfono necesita registrarse a un server SIP remoto para poder operar correctamente.
La instalación es bastante sencilla basta con ir a MODULE ADMIN---->Upload y seleccionar el modulo para instalarlo.
Una vez instalado se creara un enlace dentro de la categoría Conectividad(Connectivity).
Las pruebas las he hecho con mi FreePBX 2.11 registrando a mi Asterisk en la RaspberryPi usando el gateway webrtc2Sip de doubango. Todo el feedback es apreciado.
En el futuro espero mejorar el código del módulo.
Imagen del Modulo:
Actualización 17/04/2013:
Usando el archivo CSS del dashboard actualicé la apariencia, para que se viera más decente.
Dejo un vídeo de como se instala el modulo y su funcionamiento:
Actualización 22/04/2013:
Se añadió esta función a la página del usuario(ARI) sin opción a edición de datos. Por lo que el administrador deberá registrar por primera vez el módulo.
Vista de la Página de Usuario(ARI). |
Vista de la Página Admin sin registrar. |
Vista de la Página de Admin con detalles. |
Vista de la página de Admin teléfono Registrado. |
Actualización 29/04/2013:
Se añadió el al módulo de ARI un softphone que se registra usando las credenciales del usuario, registrándose en el servidor local.
Cambio el nombre del módulo y los menús en la sección ARI.
Descarga el modulo dando click aquí.
Muchas gracias Max por tu articulo, pero no logro hacerlo funcionar :(
ResponderEliminarcreo que mi problema es que no se donde se configura el dominior el domnioi que configuras en los SETTINGS dfel web softphobne
De he hecho me marca "Disconnected: Failed to connet to the server"
Saludos desde Monterrey Mexico
Hola Gilberto,
Eliminar¿Te refieres al "realm"? Este es un parámetro que configuras en Asterisk en el sip.conf.
Es importante que para poderte conectar tengas habilitado los websockets en tu Asterisk y el soporte de ICE habilitado de igual manera, esto solo es válido para la version 11 en adelante. Si estas usando una versión menor a la 11 entonces necesitas instalar el gateway webrtc2sip.
--El 'realm' es usado para autenticar los peers y debe coincidir con el configurado en tu asterisk, si este no coincide vas a recibir "Forbbiden"
--El UserName debe coincidir con el nobre de tu peer configirado en Asterisk.
--La SipUri, debe ser sip:nombredeususario@ipdeasterisk o bien sip:nombredeusuario@dominiodeasterisk. Por lo que dependiendo si lo usas en una red interna o externa deberas apuntar a la IP local o al dominio.
--DisplayName es el Nombre del peer o el equivalente a CALLERID(name).
--Password debe ser la misma que tu peer configurado.
--WebSocket: este es el importante ya que aqui es donde le indicas donde va a ahcer la conexión si usas webrtc2sip el string es ws://ipdelgateway:10060 si no usas webrtc2sip y estas usando asterisk 11 debe ser ws://ipdeasterisk:8088/ws
El error que te aparece quiere decir que no le ha sido posible contactar con tu servidor.
Gracias por tu pronta respuesta Max, te comento que soy muy nuevo en este tema, te comento que descargue la ultima version de asterisk now, y logre ejecutar sin problemas todas tus instrucciones. Sin embargo como comente no me funciona.
EliminarCreo que es como dices tu algo que no permite ver a mi servidor.
Puedes adyuarme o decirme por favor como configurar para habilitar los sockets y el soporte de ICE.
Saludos! :D
Monterrey, México
Primero que nada tu Asterisk debe estar corriendo versión 11. Debes asegurarte que el módulo res_http_websocket.so exista en tu PBX y que Asterisk lo haya cargado al arrancar.
EliminarPara habilitar el soporte ICE debes entrar al archivo rtp.conf en el directorio de configuración de Asterisk(usualmente en /etc/asterisk) y habilitar icesupport=yes.
Tener configurado un peer SIP con soporte avpf. Puedes encontrar información más detallada en la wiki de asterisk https://wiki.asterisk.org/wiki/display/AST/Asterisk+WebRTC+Support
Saludos.
Que tal Max,
EliminarA) [root@localhost ~]# asterisk -V
Asterisk 11.2.1
GIL = Version OK!
B) [root@localhost ~]# yum install res_http_websocket.so
GIL= INSTALADO OK!
C) Para habilitar el soporte ICE debes entrar al archivo rtp.conf en el directorio de configuración de
Asterisk(usualmente en /etc/asterisk) y habilitar icesupport=yes.
GIL= INSTALADO OK!
D) Que Asterisk lo haya cargado al arrancar.
GIL= Como puedo verificar esto? es algun archivo?
E) Tener configurado un peer SIP con soporte avpf.?
GIL= Es necesario el avpf para solo llamadas?
Muchas gracias por tus respuestas, espero me puedas ayudar!
Saludos!
Monterrey, México
Para saber si esta cargado desde el cli de Asterisk ejecuta: module show like res_
EliminarY verifica que aparezca, si no aparece lo cargas con: module load res_http_websocket.so
Si necesitan el avpf=yes.
Yo te recomiendo que instales el WebRTC2SIP si vas a registrarte desde la GUI de FreePBX al mismo server. En el blog es el tema más reciente y viene el paquete con el script para la instalación en 32Bits y los dos módulos.
Saludos.
Que tal Max,
EliminarGracias de nuevo por tu pronta respuesta, te comento que el http_websocket si aparece como me indicas...
El avfp ( asumo que es en el sip.conf) si esta como yes...
Ya instale los modulos que explicas muy bien como hacerlo pero sigo sin poder realizar la conexion...
Tal vez y a lo mejor lo mas importante que me falto comentarte es que estoy trabajando el servidor asterisk como una maquina virtual con VirtualBox.
Cabe mencionar que ya pude accesar a la base de datos, hace ping desde afuera... lo que me hace pensar que no sea un problema de interconexion...
Agradezco tus comentarios de antemano...
Saludos!
Monterrey, México
Te dejo mi correo/skype gil_gzz18@hotmail.com
¿Y la tarjeta de red de la Maquina Virtual esta como NAT o BRIDGE?
EliminarOtro posible caso puede ser que el firewall del PBX este activado y por eso no permita el paso. Deshabilitalo y prueba de nuevo.
Si apagando el firewall aun no puede contactar con el server, te pediría que instales firebug en tu CHROME lo habilites cuando cargues la pagina, copies el debug y lo pegues junto con un screenshot de los settings que estas usando.
Que tal Max.
EliminarTe anexo la informacion
**** CHROME *****
Versión 27.0.1453.94 m
Link: http://sipml5.org/call.htm?svn=179
Registration
Display Name:1000
Private Identity:1000
Public Identity*:sip:1000@192.168.0.116
Password:123456abc
Realm:192.168.0.116
Expert settings
Disable Video:
Enable RTCWeb Breaker:
WebSocket Server URL: vacio
SIP outbound Proxy URL:192.168.0.116:8080
ICE Servers: vacio
Se queda un rato en conectando y despues pone desconectado
Estatus: Disconnected
CONSOLE
i State machine: tsip_dialog_register_Any_2_Terminated_X_transportError
i === REGISTER Dialog terminated ===
i ==session event = transport_error
i ==session event = terminated
! The FSM is in the final state
**** FREEPBX *****
Extension:
Display Name: 1000
SIP Alias: 1000
secret:123456abc
dtmfmode:RFC 2833
host:dinamyc
dial: SIP/1000
Transport: UDP
Puse las opciones que pienso pueden cambiar, las demas las dejo como aparecen por default..
**** VirtualBox *****
GENERAL
- Type: Linux
- Version: Other Linux
SYSTEM
- Base Memory 1024 MB
- Enable IO APIC
NETWORK
- Adapter 1 / Bridged Adapter
- Advanced Promiscuos Mode Allow All
. Cable Conected
En espera de tu pronta ayuda quedo.
Gracias!
Monterrey, México
Ok veo que esa no es la página del módulo que cree, más bien es la página del demo de SIPML5.
EliminarWebsocket no puede ir vacío es requerido para que puedas hacer la conexión.
Y algo importante es que si estas usando el server en la nube de sipml5.org debes apuntar las ips hacia las IP publica(y probablemte hacer el redireccionamiento de los puertos) de tu servicio de lo contrario tienes que correr localmente el ejemplo para que puedas usar las IP locales.
Que tal Max,
EliminarTe comento que lo que hice fue descargar localmente el svn de sipml5 (me marca el mismo error en el softphone que hiciste) y ya lo ejecuto local http://192.168.0.116/trunk/call.htm
Me voy a reinvindicar, ahora te explico lo que hice en el WebSoftphone de FreePBX
SETTINGS
Realm: 1000
UserName: 1000
SIP URI: sip:1000@192.168.0.116
DisplayName: Test
Password: 123456abc
WebSocket: ws://192.168.0.116:8088
Enable Breaker: True
***** FIREBUG ***********************
i SIPML5 API version = 1.2.185
i User-Agent=Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
i WebSocket supported = yes
i Navigator friendly name = chrome
i OS friendly name = windows
i Have WebRTC = yes
i Have GUM = yes
i Engine initialized
engine is ready
Done to initialize the engine
i attempting to start the SIP STACK
i s_websocket_server_url=ws://192.168.0.116:8088/ws
i s_sip_outboundproxy_url=(null)
i b_rtcweb_breaker_enabled=yes
i b_click2call_enabled=no
i SIP stack start: proxy='sipml5.org:10062', realm='', impi='1000', impu='"TEST"'
i Connecting to 'ws://192.168.0.116:8088/ws'
i Started the Sip Stack
i ==stack event = starting
i __tsip_transport_ws_onclose
i ==stack event = failed_to_start
i Failed to connect to SIP SERVER
Gracias de nuevo y espero tu s comentarios...
Monterrey, Mexico
Hola siguen sin coincidir el Log de los settings, en el log no tienes realm y en los settings tienes el real como 1000, en el websocket pasa algo similar con el /ws.
EliminarBien, si vas a usar el demo de sipml5 que ya tienes localmente los settings serian asi(voy a usar mis datos locales):
Display Name: 5005
Private Identity*:5005
Public Identity*:sip:5005@10.0.1.102
Password: mycontraseña1234
Realm*: asterisk
EXPERT SETTINGS:
Disable Video: Marcado
Enable RTCWeb BREAKER: Sin marcar
WebSocket Server URL: ws://10.0.1.102:8088/ws
SIP outbound Proxy URL: udp://10.0.1.102:5060
Cuando doy salvar sale esto el cli de asterisk:
== WebSocket connection from '10.0.1.102:50130' for protocol 'sip' accepted using version '13'
-- Registered SIP '5005' at 10.0.1.102:50130
Si vas a usar el módulo que hice para FreePBX(recuerda que ese modulo esta hecho para registrarse remotamente usando webrtc2sip, el módulo para registrarse localmente esta en el USER PANEL y tambien necesita WEBRTC2SIP).
Los datos serían como sigue:
Realm: asterisk
UserName: 5005
SIP URI: sip:5005@10.0.1.102
Display Name: Test
Password: mycontraseña1234
WebSocket: ws://10.0.1.102:8088/ws
Enable Breaker: false
Recuerda que solo funciona con CHROME.
Saludos.
Que tal Max,
ResponderEliminarTe comento que hice una nueva maquina virtual e instale todo de nuevo con asterisk Now 11, y realice las instrucciones de instalacion y todo se instalo. Uso Chrome.
Freepbx UP!
IP Pc Virtual : 192.168.0.123
******* FREEPBX ********
WebRTC2SIP Gateway Settings
Debug Level = INFO
Transport = udp;*;8080
Transport = ws;*;8080
Transport = wss;*;8081
RTP Symetric = YES
Enable 100rel = NO
Enable Media Coder = YES
Enable VideoJB = YES
Video Size = CIF
Buffer Size = 65535
AVPF tail Lenght = 100;400
SRTP Mode = DISABLE
SRTP Type = == VACIO ==
DTMF Type = RFC4733
Codecs =pcma;pcmu;gsm;h264-bp;h264-mp;h263;h263+,h264
Opus Max Rate = 8000;8000
NameServer = 192.168.0.123
NameServer = 8.8.8.8
SSL Certs = ==VACIO ==
Settings
Realm: 1000
UserName: 1000
SIP URI: sip:1000@192.168.0.123
Display Name:1000
Password:123456abc
WebSocket:ws://192.168.0.123:8080/ws
Enable Breaker: False
***FIREBUG**********
i SIPML5 API version = 1.2.185
i User-Agent=Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
i WebSocket supported = yes
i Navigator friendly name = chrome
i OS friendly name = windows
i Have WebRTC = yes
i Have GUM = yes
i Engine initialized
i engine is ready
i Done to initialize the engine
i attempting to start the SIP STACK
i s_websocket_server_url=ws://192.168.0.123:8080/ws
i s_sip_outboundproxy_url=(null)
i b_rtcweb_breaker_enabled=yes
i b_click2call_enabled=no
i SIP stack start: proxy='sipml5.org:11062', realm='', impi='1000', impu='"1000"'
i Connecting to 'ws://192.168.0.123:8080/ws'
i Started the Sip Stack
i ==stack event = starting
i __tsip_transport_ws_onclose
i ==stack event = failed_to_start
i Failed to connect to SIP SERVER
***** TERMINAL ****
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
[root@localhost ~]# nmap 192.168.0.123
Starting Nmap 5.51 ( http://nmap.org ) at 2013-05-30 19:36 CDT
Nmap scan report for 192.168.0.123
Host is up (0.000012s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds
:( no se que puede estar fallando :S
Saludos
Monterrey, Mexico
Hola, veo que en la desesperación ya volviste a instalar todo.
Eliminar1) Si instalaste el gateway webrtc2sip usando el script llamado webrtc.sh que deje en el bundle y quieres usar el gateway haz lo siguiente:
a) Checa que el gateway este corriendo dentro de una sesión 'screen' primero haz:
screen -ls
Si la salida de ese comando es similar a 'No Sockets found in /var/run/screen/S-root.' Quiere decir que no esta corriendo-
Para ejecutar el gateway entra en una sesión 'screen' con el comando: screen -S wrtc
Una vez dentro de la sesión cámbiate al directorio /usr/local/sbin y ejecuta webrtc2sip. Veras como carga el gateway si todo se instalo bien.
Salte de la sesión sin terminarla usando CTRL+A+D.
Para que se registre una extensión créala en freepbx normalmente y después ve al USER PANEL y selecciona 'My Websoftphone'
Si vas a usar el modulo 'Emergency Phones' los settings tienen que verse así:
Realm: asterisk
UserName: 5005
SIP URI: sip:5005@10.0.1.102
Display Name: Test
Password: micontraseña123$
WebSocket: ws://10.0.1.102:10060
Enable Breaker: True
2) Si no quieres usar el gateway webrtc2sip entonces los settings en el módulo 'Emergency Phone' se tienen que ver:
Realm: asterisk
UserName: 5005
SIP URI: sip:5005@10.0.1.102
Display Name: Test
Password: mycontraseña1234
WebSocket: ws://10.0.1.102:8088/ws
Enable Breaker: false
Saludos y Gracias por el feedback.
Que tal Max,
EliminarVerifique con los comandos que indicas y me tope con esto:
(Paso 1)
[root@localhost ~]# screen -ls
There is a screen on:
1848.wrtc (Detached)
1 Socket in /var/run/screen/S-root.
(Paso 2)
[root@localhost ~]# cd /usr/local/sbin
[root@localhost sbin]# webrtc2sip
bash: webrtc2sip: command not found
[root@localhost sbin]# webrtc2sip start
bash: webrtc2sip: command not found
[root@localhost sbin]#
Pense aqui que habia un problema con la instalacion y ejecute las lineas del script por grupos como lo tienes ordenado y creo que marco error en este pedazo de codigo:
****codigo***
dialog --backtitle "Digital-Merge's PBX" --title "Installing WebRTC2SIP Media Gateway" --infobox "Please wait, this will take a while...." 10 60
svn co http://webrtc2sip.googlecode.com/svn/trunk/ webrtc2sip
cd webrtc2sip
./autogen.sh
./configure --with-doubango=/usr/local --prefix=/usr/local
make -j `getconf _NPROCESSORS_ONLN`
make install
****Respuesta***
configure: creating ./config.status
config.status: error: cannot find input file: Makefile.in
[root@localhost doubango]# make -j `getconf _NPROCESSORS_ONLN`
make: *** No targets specified and no makefile found. Stop.
[root@localhost doubango]# make install
make: *** No rule to make target `install'. Stop.
Saludos y muchas gracias por la retroalimentación y pronta respuesta.
Monterrey, México
Hola,
EliminarAl parecer no se compiló el gateway, un ls en /usr/local/sbin mostrara lo que hay ahí.
La compilación del gateway tarda algo ya que primero instala el framework de doubango y después instala el gateway.
¿Me puedes indicar el link exacto de la imagen de asterisknow que instalaste? Lo voy a probar en una VM. Ya que el script solo ha sido probado en Fedora, Centos y FreePBX-Distro.
Que tal Max
EliminarMira te paso la version
AsteriskNOW-3.0.0-i386-DVD.iso
http://www.asterisk.org/node/134/?width=500&height=500
Uso Virtual Box Version : 4.2.12 r84980
Tal vez por ahi haya o falte algo para que funcione :)
Saludos!
Monterrey, Mexico,
Hola la voy a bajar y a probar el script ahí para ver si es compatible con esa distro.
EliminarHola Gilberto, en efecto esa distro no cumple con las dependencias para instalarlo, ya actualicé el script. Para instalarlo haz lo siguiente:
Eliminar1) Verifica que no este corriendo alguna sesión 'screen' con:
screen -ls
2) Si existe alguna sesion entra en ella(cambia nombredelasesion con el nombre real):
screen -r nombredelasesion
3) Una vez dentro terminala con:
exit
4) Cámbiate a al directorio /usr/src:
cd /usr/src
5) Elimina el viejo folder:
rm -rf webrtc_sources
6) Descarga el script:
wget http://dl.dropboxusercontent.com/u/1277237/webrtc.sh -O webrtc.sh
7) Ejecuta el script:
sh webrtc.sh
Quizás veas un error/warning cuando compile el srtp pero es normal ya esta instalado, después de un buen rato terminara la compilación y tendrás instalado el gateway.
Para registrar la extensión te recomiendo que uses el USER PANEL(http://IPSERVER/recordings) y selecciones 'My WebPhone' ahí no necesitas configurar nada.
Pero si insistes en usar el modulo 'Emergency Phone' desde Admin la configuración debe quedar(usando los datos de tú server y extensión creada):
Realm: asterisk
UserName: 5005
SIP URI: sip:5005@10.0.1.102
Display Name: Test
Password: micontraseña123$
WebSocket: ws://10.0.1.102:10060
Enable Breaker: True
Saludos.
Que tal Max
ResponderEliminarTe comento que ya funciono! :D
Los pasos que segui fueron los siguientes:
- Instalacion nueva de Pc Virtual
- Instalascion de AsteriskNow
- Segui los pasos que indicas en
http://asterisktools.blogspot.mx/2013/05/instalando-soporte-webrtc-en-freepbx.html
NOTA: Al termino de estos pasos probe y no funciono entonces prosegui con los pasos que indicas en el comentario anterior.
- Y funciono!!!
Cabe mencionar que lo probe sobre el "Emergency Phone", ya que no logro loguearme en el link http://<>/recordings/ estoy tratando de crear usuarios pero aun asi no me permite loguear tal vez algo falte (ojala puedas orientarme y ayudarme en esto de favor ) .....
Saludos y muchisimas gracias por todo tu tiempo y conocmiento.
Monterrey, México.
Hola Gilberto, que bien que ya lo tienes funcionando. Para entrar en el User Panel necesitas las credenciales del buzón de la extensión(previamente habilitado).
EliminarPara ello vas a la seccion Application-->Extensions----> la extension que desees, navegas hasta donde esta la sección de Buzón de Voz lo habilitas e ingresas la contraseña del buzón. Guardas los cambios te vas a http://IPSERVER/recordings y los datos son:
Usuario: número de la extensión
Password: contraseña del buzón.
Saludos.
Que tal Max,
EliminarCante victoria muy pronto :( , tal vez sea un pequeño detalle te explico, reinicie la maquina virtual y ya no funciono :S
Revise como me habias dicho anteriormente esto:
Para saber si esta cargado desde el cli de Asterisk ejecuta: module show like res_
Y verifica que aparezca, si no aparece lo cargas con: module load res_http_websocket.so
localhost*CLI> module show like res_
Module Description Use Count
res_adsi.so ADSI Resource 0
res_ael_share.so share-able code for AEL 0
res_agi.so Asterisk Gateway Interface (AGI) 1
res_calendar.so Asterisk Calendar integration 0
res_clialiases.so CLI Aliases 0
res_clioriginate.so Call origination and redirection from th 0
res_config_odbc.so Realtime ODBC configuration 0
res_convert.so File format conversion CLI command 0
res_crypto.so Cryptographic Digital Signatures 0
res_digium_phone.so Digium Phone Module for Asterisk 0
res_fax.so Generic FAX Applications 0
res_format_attr_celt.so CELT Format Attribute Module 0
res_format_attr_h263.so H.263 Format Attribute Module 0
res_format_attr_h264.so H.264 Format Attribute Module 0
res_format_attr_silk.so SILK Format Attribute Module 0
res_http_websocket.so HTTP WebSocket Support 0
res_limit.so Resource limits 0
res_monitor.so Call Monitoring Resource 0
res_musiconhold.so Music On Hold Resource 0
res_mutestream.so Mute audio stream resources 0
res_odbc.so ODBC resource 0
res_phoneprov.so HTTP Phone Provisioning 0
res_realtime.so Realtime Data Lookup/Rewrite 0
res_rtp_asterisk.so Asterisk RTP Stack 0
res_rtp_multicast.so Multicast RTP Engine 0
res_security_log.so Security Event Logging 0
res_smdi.so Simplified Message Desk Interface (SMDI) 0
res_speech.so Generic Speech Recognition API 0
res_stun_monitor.so STUN Network Monitor 0
res_timing_dahdi.so DAHDI Timing Interface 0
res_timing_pthread.so pthread Timing Interface 0
res_timing_timerfd.so Timerfd Timing Interface 1
res_xmpp.so Asterisk XMPP Interface 0
33 modules loaded
Que podria faltar en el arranque? y si fuera asi como dejar que siempre arranque ? :)
Saludos y gracias te antemano,
PD Cuando vengas a Monterrey me avisas estoy pendiente con una buena comida de cabrito!
Monterrey, México
Hola, como ya instalaste el gateway WebRTC2SIP ya no necesitas cargar el módulo res_http_websocket.so. Más info de como funciona el gateway aquí: http://webrtc2sip.org/
EliminarCreo que no funciono porque el gateway no arranco de nuevo al reiniciar el sistema.
Checa que en el archivo /etc/rc.local exista esta linea:
screen -dmS wrtc /usr/local/sbin/webrtc2sip --config=/usr/local/sbin/config.xml
Es la que debe arrancar el gateway al reiniciar, si no existe añadela. Y reinicia para probar que arranque.
Una vez reiniciado el sistema checa que exista la sesión screen con el comando:
screen -ls
Si no existe ninguna sesión después de reiniciar el sistema cámbiate a /usr/local/sbin y ejecuta el gateway con:
webrtc2sip
Y verifica que no haya errores, si sin el screen no podras usar la consola hasta que lo detengas con 'quit'.
Saludos!
PD: Ya babee por el cabrito :D