来电与SIP和的WebRTC(Incoming calls with SIP and WebRTC)

2019-08-04 03:49发布

我期待为实现使用SIP和的WebRTC,并连接到PTSN一个基于浏览器的VoIP解决方案。 基本上,用户给我自己的SIP凭据,我用的WebRTC来acccess他们的麦克风和扬声器。 在页面上,我计划运行SIP客户端。

如何实现来电从PTSN来了吗? 我是否需要某种形式的监听,连接到用户的SIP服务器?

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

Answer 1:

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

把你的服务器需要一个SIP服务器和HTTP服务器和HTTP服务器的组合需要支持网络插槽和API的WebRTC另一种方式。

如果您尚未采取看看唱机SDK这是一个很好的起点。

更新:

事情已经移动了一点点,因为我最后看了一眼的WebRTC。 还有现在似乎是在周围,充分利用JavaScript实现对事物的媒体方面的新的WebRTC API的一些SIP。 使用SIP的JavaScript栈浏览器应用程序不需要任何额外的服务器,并可以直接连接到现有的SIP服务器。 我发现一个例子是SIP-JS ,但我相信有周围的人也是如此。



Answer 2:

也许这个刷新是值得的。

的WebRTC现在实现在Firefox和Chrome(从IE,边缘和Safari丢失)。

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

的WebRTC编码在DTLS / SRTP媒体,所以你将不得不也进行解码,在明确RTP。 这意味着,在服务器端,你不是使用支持WebRTC支持内置或WebRTC技术的软交换SIP网关。 确保选择全媒体转码支持软交换/网关。 目前的WebRTC支持G.711,G.722和作品。 对于传统SIP网络服务器通常只选用G.711,一切都是完美的。 在某些情况下,你可能需要的媒体转换为其他流行的编解码器,如G.729,G.723或GSM。

通常你有以下协议coversions:

  • 信令(这是简单的):在SIP中TLS的WebSocket - >在UDP / TCP清楚SIP
  • 媒体(这是比较复杂):DTLS / SRTP编码RTP与PCMU - >明确RTP与PCMU

软交换支持WebRTC支持:

  • 星号 (对于Linux)
  • FreeSWITCH的 (Linux和Windows)
  • mizuvoip (适用于Windows)
  • 谈 (对于Linux)

的WebRTC与SIP网关:

  • doubango
  • oversip
  • MRTC
  • 杰纳斯
  • 神谕

SIP(RFC 7118)能够WebRTC客户端:

  • Simpl5 (从dubango)
  • Jssip (老好)
  • Sip.js (Jssip的继任者)
  • 网路电话 (也适用于IE和边缘)
  • jscommunicator (使用Drupal插件)

你也应该部署和使用自己的STUN和TURN服务器(部分服务器/网关具有这些内置的,否则使用coturn rfc5766转服务器 )。

一旦服务器端启动并运行,您可以根据上面的WebRTC客户端轻松地创建自定义的客户端解决方案,因为他们每个人都有一个简单易用的JavaScript API。



Answer 3:

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

这可能是你最好的选择,如果你是在小规模工作,挺有用的运行电信基础设施和采购集群。 在实践中,运行到PSTN呼叫的WebRTC能tough-大量的质量问题。 我也不知道你正在寻求建立你的应用程序是什么规模,但到您的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服务器,则会相应地改变了。



Answer 4:

对于你的问题的解决方案是:

  • 的WebRTC自身工作作为rtpengine.so使用SIP凭证,您可以注册使用WSS或WS啜饮你的自我server.then你可以调用其他SIP用户或出站。
  • 通话将达到SIP服务器从那里SIP服务器天气情况决定其呼入或出站


文章来源: Incoming calls with SIP and WebRTC
标签: sip voip webrtc