繁体   English   中英

SIP和WebRTC的来电[暂停]

[英]Incoming calls with SIP and WebRTC [on hold]

我正在研究实现一个基于浏览器的VOIP解决方案,该解决方案使用SIP和WebRTC并连接到PTSN。 基本上,用户给我他们的SIP凭证,我使用WebRTC来接收他们的麦克风和扬声器。 在页面上,我计划运行SIP客户端。

如何实现来自PTSN的来电? 我是否需要某种连接到用户SIP服务器的监听器?

我知道这是一个广泛的问题,但在网上做了一些研究之后,我仍然对SIP来电的实施感到困惑。

也许刷新这个值得付出努力。

WebRTC现在在Firefox和Chrome中实现(并且缺少IE,Edge和Safari)。

对于传统SIP到WebRTC,需要进行一些转换。 使用WebRTC,您可以通过WebSocket使用任何信号。 您可以实现您的专有协议,但是如果您正在寻找SIP兼容性,那么最自然的适合是WebSocket到SIP协议

WebRTC在DTLS / SRTP中对媒体进行编码,因此您必须在清除RTP中对其进行解码。 这意味着在服务器端要么使用内置WebRTC支持的软交换,要么使用WebRTC到SIP网关。 确保选择具有完全媒体转码支持的软交换/网关。 WebRTC目前支持G.711,G.722和Opus。 对于传统的SIP网络,您的服务器通常只选择G.711,一切都很完美。 在某些情况下,您可能需要将媒体转换为其他流行的编解码器,例如G.729,G.723或GSM。

通常您有以下协议覆盖:

  • 信令(这很简单):TLS中的SIP over WebSocket - >清除基于UDP / TCP的SIP
  • 媒体(这更复杂):DTLS / SRTP编码带有PCMU的RTP - >带有PCMU的清晰RTP

支持WebRTC的Softswitch:

WebRTC到SIP网关:

支持SIP(RFC 7118)的WebRTC客户端:

您还应该部署和使用自己的STUN和TURN服务器(某些服务器/网关具有这些内置,否则使用coturn rfc5766-turn-server )。

一旦服务器端启动并运行,您就可以基于上述webrtc客户端轻松创建自定义客户端解决方案,因为每个客户端都有一个简单易用的JavaScript API。

您需要一台实现SIP-WebRTC网关的服务器。 网关将能够通过SIP接收来自SIP提供商(其本身将通过转换ISDN-SIP,SS7-SIP等充当SIP-PSTN网关)的来电,然后使用WebRTC将呼叫转发到基于浏览器的客户端。

换句话说,您的服务器需要是SIP服务器和HTTP服务器的组合,HTTP服务器需要支持Web套接字和WebRTC API。

如果您还没有看过Phono SDK,那么这是一个很好的起点。

更新:

自从我上次关注WebRTC以来,情况有所改变。 现在似乎在javascript实现中有一些SIP利用新的WebRTC API用于媒体方面。 使用SIP-javascript堆栈的浏览器应用程序不需要任何其他服务器,可以直接连接到现有的SIP服务器。 我发现的一个例子是sip-js,但我相信还有其他的。

理论上,您可以使用开源软交换(FreeSWITCH,Asterisk)项目部署SIP服务器,并购买“SIP中继”服务以获取电话号码和路由到/来自PSTN的呼叫。 然后,您可以配置WebRTC SIP客户端以使用您的服务器。 有开源JavaScript库(SIP.js,JsSIP,sipML5)。

如果您在小规模工作并且习惯于运行电信基础设施和购买中继,那么这可能是您的最佳选择。 实际上,将PSTN运行到WebRTC调用可能很困难 - 很多质量问题。 我也不知道你想要在多大程度上构建你的应用程序,但是你的SIP服务器有超过100个同时连接,你需要处理扩展。 如果您希望托管解决方案能够减少电信问题,您可以使用SIP.js并注册OnSIP(支持SIP.js的公司),这是一种即用即付服务,可让您购买手机数字,只是为您的客户编码。 SIP.js用户代理构造如下所示:

var userAgent = new SIP.UA({
  uri: 'bob@example.onsip.com',
  wsServers: ['wss://sip-ws.example.com'],
  authorizationUser: sipUsername,
  password: sipPassword
});

如果您选择OnSIP(托管),则这些凭据由服务提供并向OnSIP注册。 如果您选择部署自己的SIP服务器,则会相应地更改。

解决您的问题的方法是:

  • Webrtc自我工作rtpengine.so使用sip凭证你可以用wss或ws注册你的自己sip server.then你可以打电话给其他sip用户或出站。
  • 呼叫将从那里sip服务器决定天气其入站呼叫或出站

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM