将Asterisk与WebRTC集成 - 完善

时间:2016-04-12 17:36:50

标签: webrtc asterisk sip pjsip sip-server

我正在尝试将Asterisk与webRTC集成。有一个查询here,但它几乎没有提供任何解决方案。

我已经有一个基本的webRTC基础设施,我已经测试了概念验证。我使用socket.io进行信令,使用带有node.js的STUN / TURN进行COTURN,为我的Web服务器使用支持模块。 我使用MySQL进行会话持久化。 我的星号安装适用于SIP电话和我的PSTN接口的PRI卡。我的星号,网络服务器和其他支持服务器在同一个盒子上运行。

有关Asterisk here和sipjs here(以及其他类似产品网站)的说明,以便将Asterisk与WebRTC集成。 从我的阅读中可以看出,Asterisk有一个内置的web服务器用于支持wss,使用pjproject用于ICE,TURN / STUN服务器等等。 我认为采取这种方法意味着重复基础设施。

我想将WebRTC的音频网关实现为SIP或DAHDI通道。这实际上是对来自浏览器的PSTN号码或SIP端点的音频呼叫。 我看到它的方式是,根据我所拥有的,我将需要以下内容:

  • 用于音频的编解码器转码器(浏览器编解码器到Asterisk编解码器), 可能是Kurento。
  • 将WebRTC SDP转换为星号的某种方法 SDP。
  • 将逻辑webRTC对等体“注册”到SIP的某种方式 代理(星号)。
  • Asterisk的一些中间模块可以想到一个 WebRTC对等体作为SIP端点。
  • 还有别的吗?

我认为这必须在之前实施。我无法在这方面找到任何解决方案或讨论。

我走错了路吗? 我重新发明轮子了吗? 任何指导将非常感谢。

1 个答案:

答案 0 :(得分:2)

这里没有任何“实施”。所有列出的要点都已在Asterisk中实施。

您提到的链接主要讨论旧版本的Asterisk。我建议使用WebRTC on Asterisk 13的最新指南。

  

用于音频的编解码器转码器(浏览器编解码器到Asterisk编解码器),   可能是Kurento。

默认情况下,转码是内置的Asterisk。然而,WebRTC也支持G.711(PCMU和PCMA),所以很可能你永远不需要转码。

  

将WebRTC SDP转换为Asterisk SDP的某种方式。

这已经由Asterisk和所有流行的WebRTC SIP客户端(sip.jswebphonesipml5)使用RFC 7118(用于SIP协议的WebSocket)处理。我强烈建议您使用它,而不是将socket.io与自定义协议一起使用。 (Socket.io在所有现代浏览器中都使用websocket,当webrtc不可用时,webrtc也会丢失)

  

将逻辑webRTC对等体“注册”到SIP的某种方式   代理(星号)。

这就像上面提到的websocket上常用的SIP REGISTER一样

  

Asterisk的一些中间模块将WebRTC对等体视为一个   SIP终点。

这不需要额外的东西。按照我上面提到的指南来设置WebRTC扩展(就像其他SIP扩展一样,WebRTC可以在配置后与SIP通信)。

请注意,如果您的Asterisk具有公共静态IP,则很可能您甚至不需要TURN和STUN。 (除了一些基本的STUN,它是ICE协议的一部分并且已经在Asterisk中构建)