配置 Asterisk 13 以支持 WebSockets/WebRTC

Configuration of Asterisk 13 to support WebSockets/WebRTC

我有一台装有 debian 9 的虚拟机。我已经通过 apt-get 安装了 Asterisk 13.14.1,并将其配置为拥有三个用户,其中两个是 sip 用户(Zoiper APP),另一个是 webrtc 用户(使用 http://jssip.net/). The custom app is very basic and uses the code the can be found in https://github.com/versatica/JsSIP 的自定义应用程序。但是,而不是使用:

var socket = new JsSIP.WebSocketInterface('wss://mypbxipaddress');

我用

var socket = new JsSIP.WebSocketInterface('ws://mypbxipaddress');

SIP 用户似乎工作正常。但是我对 webrtc 用户有疑问,我认为这是在服务器端,特别是在 websocket 上。在连接期间的客户端,我收到以下错误:

main.js:158470 WebSocket connection to 'ws://mypbxipaddress/' failed: Error during WebSocket handshake: Unexpected response code: 200

另外,我试过wscat(npm包)

wscat -s echo -c ws://mypbxipaddress:arandomport 

我收到:

error: Error: connect ECONNREFUSED mypbxipaddress:arandomport

我终于入住了

asterisk -rvvvvv

http show status

我得到:

HTTP Server Status:
Prefix:
Server: Asterisk/13.14.1~dfsg-2
Server Enabled and Bound to 0.0.0.0:8080

Enabled URI's:
/httpstatus => Asterisk HTTP General Status
/phoneprov/... => Asterisk HTTP Phone Provisioning Tool
/static/... => Asterisk HTTP Static Delivery
/ari/... => Asterisk RESTful API
/ws => Asterisk HTTP WebSocket

Enabled Redirects:
  None.

用 /ws => Asterisk HTTP WebSocket 表示 websocket 处于活动状态。

关于如何进一步调试它有什么建议吗?

谢谢 西蒙

1)阅读更多关于 websocket 的信息,做 tcpdump。

2) 进行星号调试

asterisk -r
core set debug 10

一如既往,答案要简单得多。我不得不改变

var socket = new JsSIP.WebSocketInterface('ws://mypbxipaddress:8088/ws');

经过一番搜索,我得出的结论是:

asterisk -rvvvvv
http show status

那里提到"Server Enabled and Bound to mypbxipaddress:8088",它在/etc/asterisk/http.conf

中定义
bindaddr=mypbxipaddress
bindport=8088

你应该试试:wscat -s echo -c ws://mypbxipaddress:8080/ws 因为:Server Enabled and Bound to 0.0.0.0:8080/ws => Asterisk HTTP WebSocket

您还可以检查套接字是否处于 LISTEN 状态:

netstat -lna | grep 8080