webrtc2sip is an open source gateway using WebRTC and SIP to turn your browser into a phone with audio and video calling capabilities. The "WebRTC-to-SIP" gateway allows your web browser to make and receive calls from/to any SIP-legacy network or PSTN. Thus, using your preferred WebRTC-capable web browser you can make calls to a SIP IP phone, SIP softphone, and even a mobile/landline phone. webrtc2sip was created by Doubango Telecom and available for free. webrtc2sip contains four modules: SIP Proxy, RTCWeb Breaker, Media Coder, and Click-to-Call ( screenshot on top).
The WebRTC specification requires ICE and DTLS/SRTP support. However, that many SIP-legacy endpoints do not support these features. That's where the RTCWeb Breaker module to negotiate and convert the media stream to enable interoperability. For instance,
One problem in WebRTC communications is codec support. There is the whole VP8 and H.264 codec challenge. VP8 is royalty-free while H.264 AVC is not free but much more widely deployed. Google has chosen VP8 in Chrome while Ericsson for instance, uses H.264 AVC in Bowser, a WebRTC capable browser I checked out recently. Mozilla (Firefox) and Opera Software will likely use VP8 while Microsoft has embraced H.264 AVC.
So how does a Microsoft Internet Explorer user make a WebRTC call to a Google Chrome user if they can't negotiate the codec to be used? Well, using the Media Coder module will allow you to make video calls between Chrome and Internet Explorer since it handles the transcoding. Further, using Media Coder you can now connect a high-end telepresence system (usually H.264) to a browser that is using VP8 or even your smartphone or tablet browser which may be using VP8 or H.264. Finally, browser-based communications that just works no matter what device or browser you're using!
You can get webrtc2sip to work with Asterisk and Chrome, however Asterisk doesn't support VP8, so you have two options. The first option is to patch Asterisk, though this isn't the recommended way to go unless you're a developer who likes to tinker and try out cool new things. Although audio calls work, even with the patch, it doesn't allow video calls, since as previously mentioned, Asterisk doesn’t support VP8.
The second (recommended) option is to enable RTCWeb Breaker. This will allow both audio and video to work. The beauty of this setup is that it works even if the web browser and the SIP client/server do not share the same codecs (thanks to the Media Coder transcoding module).
You might be wondering how sipML5 integrates with webrtc2sip. Well, look no further, this diagram explains it perfectly:
- Works on Chrome, Firefox, IE, Safari, Opera and Bowser
- Audio / Video call
- Screen/Desktop sharing from Chrome to any SIP client
- Instant messaging
- Call Hold / Resume
- Explicit Call transfer
- Multi-line and multi-account
- Dual-tone multi-frequency signaling (DTMF) using SIP INFO
- SIP TelePresence (Video Group chat)
- 3GPP IMS standards
I made a test call to the extension my browser was registered to and my Chrome browser successfully played a ring tone and a popup incoming call message. I wasn't able to connect however, but that's due to this codec-related error:
[Nov 25 10:47:39] WARNING: chan_sip.c:7664 process_sdp: Unsupported SDP media type in offer: audio 65015 RTP/SAVPF 103 104 111 0 8 107 106 105 13 126
[Nov 25 10:47:39] WARNING: chan_sip.c:7741 process_sdp: Insufficient information in SDP (c=)..
It's my corporate production PBX, so I can't start hacking it to get it to work, so I'll have to test again with one of my test Asterisk PBXs. Nevertheless, the browser successfully registered and successfully received the call even if it dropped it after not being able to negotiate a common codec. I really like that this solution is open source and free and when you consider one of WebRTC principal goals is to make ubiquitous anytime, anywhere, any device communications possible, webrtc2sip and sipML5 are worthy tools to have in your WebRTC arsenal. Lastly, it's never too soon to register for WebRTC World (June 17-19th 2014) where you can see the latest WebRTC demos, hear from leading WebRTC thinkers, and network with fellow WebRTC advocates.