使用SIP和WebRTC的传入呼叫
我正在考虑实施基于浏览器的VOIP解决方案,该解决方案使用SIP和WebRTC,并连接到PTSN。基本上,用户给我他们的SIP凭据,我使用WebRTC访问他们的麦克风和扬声器。在页面上,我计划运行一个SIP客户端 如何实现来自PTSN的传入呼叫?我是否需要某种连接到用户SIP服务器的侦听器使用SIP和WebRTC的传入呼叫,sip,voip,webrtc,Sip,Voip,Webrtc,我正在考虑实施基于浏览器的VOIP解决方案,该解决方案使用SIP和WebRTC,并连接到PTSN。基本上,用户给我他们的SIP凭据,我使用WebRTC访问他们的麦克风和扬声器。在页面上,我计划运行一个SIP客户端 如何实现来自PTSN的传入呼叫?我是否需要某种连接到用户SIP服务器的侦听器 我知道这是一个广泛的问题,但在网上做了一些研究之后,我仍然对传入呼叫的SIP实现有些困惑。您需要一个实现SIP WebRTC网关的服务器。网关将能够通过SIP接收来自SIP提供商(其本身将通过转换ISDN-S
我知道这是一个广泛的问题,但在网上做了一些研究之后,我仍然对传入呼叫的SIP实现有些困惑。您需要一个实现SIP WebRTC网关的服务器。网关将能够通过SIP接收来自SIP提供商(其本身将通过转换ISDN-SIP、SS7-SIP等充当SIP-PSTN网关)的传入呼叫,然后使用WebRTC将呼叫转发给基于浏览器的客户端 换句话说,您的服务器需要是SIP服务器和HTTP服务器的组合,HTTP服务器需要支持web套接字和WebRTC API 如果你还没有看一看,这是一个很好的起点 更新:
自从我上次看WebRTC以来,事情有了一些进展。现在,在javascript实现中似乎确实存在一些SIP,它们利用新的WebRTC API实现媒体方面的功能。使用SIPJavaScript堆栈的浏览器应用程序不需要任何额外的服务器,可以直接连接到现有的SIP服务器。我发现的一个例子是,但我相信也有其他例子。理论上,您可以使用开源软交换(FreeSWITCH,Asterisk)项目部署SIP服务器,并购买“SIP中继”服务,以获取电话号码并将呼叫路由到PSTN或从PSTN路由到PSTN。然后,您可以配置WebRTC SIP客户端以使用您的服务器。有开源JavaScript库(SIP.js、JsSIP、sipML5) 如果您的工作规模较小,并且非常习惯于运营电信基础设施和购买集群,那么这可能是您的最佳选择。在实践中,运行PSTN到WebRTC的呼叫可能会很困难——存在很多质量问题。我也不知道您希望以何种规模构建应用程序,但同时连接到SIP服务器的连接超过100个,您需要处理扩展问题。如果你想要一个托管的解决方案来减少电信方面的麻烦,你可以使用SIP.js并注册OnSIP(公司支持),这是一种按量付费的服务,可以让你购买电话号码,只需给你的客户编码。SIP.js用户代理构造如下所示:
var userAgent = new SIP.UA({
uri: 'bob@example.onsip.com',
wsServers: ['wss://sip-ws.example.com'],
authorizationUser: sipUsername,
password: sipPassword
});
如果选择OnIP(托管),则这些凭据由服务提供并在OnIP上注册。如果您选择部署自己的SIP服务器,则会相应地进行更改 也许这方面的更新是值得努力的 现在已在Firefox和Chrome中实现(IE、Edge和Safari中缺失) 对于传统SIP到WebRTC,需要进行一些转换。 使用WebRTC,您可以使用通常通过WebSocket发送的任何信号。您可以实现您的专有协议,但是,如果您正在寻找SIP兼容性,那么最自然的适合是 WebRTC在DTLS/SRTP中对媒体进行编码,因此您也必须在clear RTP中对其进行解码。这意味着在服务器端,您将使用内置WebRTC支持的软交换机或WebRTC到SIP网关。确保选择具有完全媒体转码支持的软交换/网关。 WebRTC目前支持G.711、G.722和Opus。对于传统SIP网络,您的服务器通常只选择G.711,一切都很完美。在某些情况下,您可能需要将媒体转换为其他流行的编解码器,如G.729、G.723或GSM 通常,您有以下协议覆盖:
- 信令(这很简单):TLS中WebSocket上的SIP->UDP/TCP上的清除SIP
- 媒体(这更复杂):DTLS/SRTP编码的RTP和PCMU->清除RTP和PCMU
- (适用于linux)
- (linux和windows)
- (适用于windows)
- (适用于linux)
- (来自dubango)
- (旧货物)
- (Jssip的继任者)
- (也适用于IE和Edge)
- (使用drupal插件)
一旦服务器端启动并运行,您就可以轻松创建基于上述webrtc客户端的自定义客户端解决方案,因为每个客户端都有一个简单易用的JavaScript API。解决问题的方法是:
- Webrtc自身作为rtpengine工作。因此,使用sip凭据,您可以将自己注册到wss或ws到sip服务器。然后您可以呼叫其他sip用户或出站
- 呼叫将从那里击中sip服务器sip服务器决定其入站呼叫还是出站呼叫