WebRTC browser calls FreePBX 13 (Stable)

After upgrade to FreePBX 13 UCP WebRTC calls disconnect everytime. I am use Chrome. Login to UCP using extention Enable WebRTC in User Manager, added STUN and TURN google server (stun.l.google.com:19302) my incoming call is working but after accept ANSWER button my incoming call goes to BUSY voice mail. How to fix it?

I have the same problem. WebRTC extension connects via websocket and the sip “extension” is reachable according to sip show peers on the asterisk cli. When an incoming call comes in:

-- SIP/995051-0000000c is ringing
-- Redirecting update to SIP/IVS2-0000000b prevented. ( <-- this is my trunk)
-- SIP/995051-0000000c is busy

FreePBX 13.0.35
WebRTC module - 13.0.9
Asterisk - 13.6.0

Also outgoing calls do not work either. Additionally, when accessing the UCP (ver 13.0.16) via https, the webrtc phone will not even register. Phone registers fine with http, but still cannot answer or place calls.

At this moment the module does not support WSS (Web Socket Secure).

OK, due to chrome making the change listed here recently

https://code.google.com/p/chromium/issues/detail?id=567466&q=status%3Aunconfirmed%20webrtc&sort=-id&colspec=ID%20Stars%20Area%20Feature%20Status%20Summary%20Modified%20OS

WebRTC can only work if the primary page is loaded over HTTPS, but you have to allow the browser to load the “unsecure” scripts to use WS since WSS is not supported. So, in Chrome as of version 47.0.2526.106, WebRTC with FreePBX 13 will only work in UCP if UCP is loaded via HTTPS and you force chrome to load the “unsafe” scripts using the shield icon on the right side of the URL. This worked for me. As of today, WebRTC is working with FPBX 13 on both Asterisk 11.20 and Asterisk 13.6

how can I help contribute to this? now that chrome is blocking getusermedia in http the webrtc is almost useless.
it looks like wss is working in asterisk and from what I can tell sipjs has added a flag to force it:

hackWssInTransport: true

sipjs.com/guides/server-configuration/asterisk/

Unaware that WSS is not supposed to work, I got it working today on FreePBX 13 and Asterisk 11.13 through no special effort other than to enable Asterisk’s HTTPS server on 8089 and supply a valid certificate. I was already using HTTPS in Apache for admin and UCP. What is it that makes this unsupported–or was it fixed in the last few weeks?

I can make outgoing calls but cannot receive calls. The WebRTC client immediately appears unregistered to Asterisk by failing to respond to a qualify:

[2016-01-27 20:57:32] NOTICE[12903]: chan_sip.c:29479 sip_poke_noanswer: Peer '991101' is now UNREACHABLE! Last qualify: 0

I can’t tell whether this is a WebRTC issue or a typical network (NAT, firewall) issue, though my SIP phones on the same network are experiencing no difficulties with registration.

The JsSIP client was registering with a contact containing “transport=ws” even though it is using a WSS connection. Thus outgoing calls from WebRTC worked fine but incoming calls were going to the wrong transport.

I hacked in a little patch to the js to force it to register as transport=wss (thanks to @artfulhacker for the tip) and now the client registers fine and receives signaling but dumps incoming calls with a SIP 488 “Not acceptable here” – some different protocol (codec) mismatch this time.

As I already said. The module does not support wss at this time. By module I mean the module in freepbx. I never said a thing about asterisk. In fact behind the scenes rob and I are working on let encrypt with webrtc and the freepbx module along with tls support among other things.

We’ve both made wss calls and tls calls. Through freepbx.

The code for webrtc in freepbx is open source. Anyone can contribute. Go for it.

1 Like

Thanks, I saw this commit here about wss support: github.com/FreePBX/webrtc/commit/38bd4e2a4bc93bca5e3171c5ad9289ce0d94a276

Is that not true then?

Actually, it does look like Asterisk is mostly to blame. https://issues.asterisk.org/jira/browse/ASTERISK-24330

If not for that issue, I believe the JsSip would be working fine.

So I do not believe it is correct for FreePBX or JsSip to be making hacky workarounds to deal with Asterisk. Asterisk needs to fix their bug.

Thanks for your work on LE/TLS @tm1000! Glad to see it.

My issue with JsSip returning 488 Not Acceptable was because it did not like the video offer coming from Asterisk. I disabled video and now can place and receive calls over WSS.

@tm1000 when you create the 99(extension) peer for the UCP WebRTC user, add “videosupport=no” to disable video in case the user has enabled it globally.

2 Likes

how do you like jsSIP? We have been looking at a few since figuring our the freepbx user panel doesnt work in chrome.

It’s fine. I haven’t really tried any others so I don’t have anything to compare it with. By JsSip I am talking about the FreePBX module. Works fine in Chrome with a little tweaking which it seems the FreePBX team are in the midst of, so I would just wait it out until they release their updates.

[2017-06-13 04:41:50] WARNING[2982][C-00000004]: res_rtp_asterisk.c:773 ast_rtp_ice_start: No RTCP candidates; skipping ICE checklist (0x7f6db831fbe8)
– Channel SIP/100-0000000a joined ‘simple_bridge’ basic-bridge <745e6ab1-d793-4894-bf06-823a0a9a78bc>
– Channel SIP/600-00000009 joined ‘simple_bridge’ basic-bridge <745e6ab1-d793-4894-bf06-823a0a9a78bc>
[2017-06-13 04:42:21] NOTICE[1766]: chan_sip.c:29402 check_rtp_timeout: Disconnecting call ‘SIP/600-00000009’ for lack of RTP activity in 31 seconds
– Channel SIP/600-00000009 left ‘simple_bridge’ basic-bridge <745e6ab1-d793-4894-bf06-823a0a9a78bc>
== Spawn extension (macro-dial-one, s, 51) exited non-zero on ‘SIP/600-00000009’ in macro ‘dial-one’
== Spawn extension (macro-exten-vm, s, 16) exited non-zero on ‘SIP/600-00000009’ in macro ‘exten-vm’
== Spawn extension (ext-local, 100, 2) exited non-zero on ‘SIP/600-00000009’
– Executing [h@ext-local:1] Macro(“SIP/600-00000009”, “hangupcall,”) in new stack
– Executing [s@macro-hangupcall:1] GotoIf(“SIP/600-00000009”, “1?theend”) in new stack
– Goto (macro-hangupcall,s,3)
– Executing [s@macro-hangupcall:3] ExecIf(“SIP/600-00000009”, “0?Set(CDR(recordingfile)=)”) in new stack
– Executing [s@macro-hangupcall:4] Hangup(“SIP/600-00000009”, “”) in new stack

If I call webRTC “res_rtp_asterisk.c:773 ast_rtp_ice_start: No RTCP candidates; skipping ICE checklist (0x7f6db831fbe8)” warning appeared and hangup . What can I do? I used freepbx version 13 and asterisk 13.12.Please help me.Sorry for my bad english.