我正在尝试将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端点的音频呼叫。 我看到它的方式是,根据我所拥有的,我将需要以下内容:
我认为这必须在之前实施。我无法在这方面找到任何解决方案或讨论。
我走错了路吗? 我重新发明轮子了吗? 任何指导将非常感谢。
答案 0 :(得分:2)
这里没有任何“实施”。所有列出的要点都已在Asterisk中实施。
您提到的链接主要讨论旧版本的Asterisk。我建议使用WebRTC on Asterisk 13的最新指南。
用于音频的编解码器转码器(浏览器编解码器到Asterisk编解码器), 可能是Kurento。
默认情况下,转码是内置的Asterisk。然而,WebRTC也支持G.711(PCMU和PCMA),所以很可能你永远不需要转码。
将WebRTC SDP转换为Asterisk SDP的某种方式。
这已经由Asterisk和所有流行的WebRTC SIP客户端(sip.js,webphone,sipml5)使用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中构建)