我期待为实现使用SIP和的WebRTC,并连接到PTSN一个基于浏览器的VoIP解决方案。 基本上,用户给我自己的SIP凭据,我用的WebRTC来acccess他们的麦克风和扬声器。 在页面上,我计划运行SIP客户端。
如何实现来电从PTSN来了吗? 我是否需要某种形式的监听,连接到用户的SIP服务器?
我知道这是一个很宽泛的问题,但在网上做了一些研究之后,我仍然对SIP实现来电有些困惑。
我期待为实现使用SIP和的WebRTC,并连接到PTSN一个基于浏览器的VoIP解决方案。 基本上,用户给我自己的SIP凭据,我用的WebRTC来acccess他们的麦克风和扬声器。 在页面上,我计划运行SIP客户端。
如何实现来电从PTSN来了吗? 我是否需要某种形式的监听,连接到用户的SIP服务器?
我知道这是一个很宽泛的问题,但在网上做了一些研究之后,我仍然对SIP实现来电有些困惑。
你需要的是实现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 ,但我相信有周围的人也是如此。
也许这个刷新是值得的。
的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:
软交换支持WebRTC支持:
的WebRTC与SIP网关:
SIP(RFC 7118)能够WebRTC客户端:
你也应该部署和使用自己的STUN和TURN服务器(部分服务器/网关具有这些内置的,否则使用coturn rfc5766转服务器 )。
一旦服务器端启动并运行,您可以根据上面的WebRTC客户端轻松地创建自定义的客户端解决方案,因为他们每个人都有一个简单易用的JavaScript API。
从理论上讲,你可以使用一个开源的软交换(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服务器,则会相应地改变了。
对于你的问题的解决方案是: