将Asterisk与WebRTC集成-启动



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

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

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

我想实现一个从WebRTC到SIP或DAHDI通道的音频网关。这本质上是从浏览器到PSTN号码或SIP端点的音频呼叫。我认为,有了我现有的东西,我需要以下东西:

  • 用于音频的编解码器代码转换器(Browser编解码器到Asterisk编解码器),可能是库兰托
  • 将WebRTC SDP转换为Asterisk的一些方法SDP
  • 将逻辑webRTC对等体"注册"到SIP的某种方法代理(Asterisk)
  • Asterisk的一些中间模块WebRTC对等端作为SIP端点
  • 还有别的吗

我认为这一定是以前实施过的。我找不到这方面的任何解决方案或讨论。

我是不是走错了路?我是在重新发明轮子吗?任何指导都将不胜感激。

这里没有什么需要"实现"的。所有列出的要点都已在Asterisk中实现。

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

用于音频的编解码器代码转换器(Browser编解码器到Asterisk编解码器),可能是库兰托。

默认情况下,代码转换是内置的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的某种方法代理(Asterisk)。

这就像上面提到的上的websocket上通常的SIP REGISTER

Asterisk将WebRTC对等端视为SIP端点。

这不需要任何额外的东西。按照我上面提到的指南来设置WebRTC外部(它就像其他SIP扩展一样,一旦配置好,WebRTC就可以与SIP对话)。

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

最新更新