websocket - 如何使用 WebRTC 在 Kamailio 中实现注册?
问题描述
我已经为 WebRTC 调用配置了 Kamailio。注册成功,但是当我尝试打电话时,回复“478 Unresolvable destination”。
一般来说,我可以说,我的 SIP 代理会响应,但无法根据其 URI 联系客户端 - 此外,我使用“kamcmd ws.ping”成功 ping 客户端,但无法使用“kamctl ping”。我不确定,但我认为问题出在注册中,nathelper 应该使用 fix_nated_register() 函数进行,但没有任何迹象表明它确实如此。我正在为 websocket 和 TLS 连接使用标准配置。
我尝试了 JsSIP 和 sipML5 - 只有本地网络连接。
这应该可以满足我的 kamailio.cfg 中的需要:
modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")
request_route { 路由(REQINIT);
if (nat_uac_test(64)) {
force_rport();
if (is_method("REGISTER")) ###<--here
fix_nated_register();
else {
if (!add_contact_alias()) {
xlog("L_ERR", "Error aliasing contact <$ct>\n");modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")
sl_send_reply("400", "Bad Request");
exit;
}
}
}
...
这是保存到用户位置数据库的内容:
"Contact": {
"Address": "sip:oq1n4lu1@38gn0ph6h558.invalid;transport=ws",
"Expires": 577,
"Q": -1,
"Call-ID": "uefjkjk5cdatcdgg333vo8",
"CSeq": 8,
"User-Agent": "JsSIP 3.2.15",
"Received": "[not set]",
"Path": "[not set]",
"State": "CS_NEW",
"Flags": 0,
"CFlags": 0,
"Socket": "tls:192.168.2.224:4443",
"Methods": 6943,
"Ruid": "uloc-5c66ecbf-974-1",
"Instance": "<urn:uuid:4dd03beb-8241-49fc-81f6-db0d895fde87>",
"Reg-Id": 1,
"Server-Id": 0,
"Tcpconn-Id": 2,
"Keepalive": 0,
"Last-Keepalive": 1550250947,
"Last-Modified": 1550250947
fix_nated_register() 应该将实际源 IP 地址和端口复制到用户位置的 Received 标头,并在 REGISTER 对话框中的 200 OK 中的 Contact 标头中发送 Received 参数,但它也没有。任何建议如何解决这个问题?
解决方案
推荐阅读
- python - 如何使用python中的函数和循环获得投资金额每年的复利输出?
- javascript - 如何修复欢迎消息 Embed Discord Bot JS
- javascript - 如何使用 JavaScript 在 HTML 中显示数组元素
- c++ - 用 getline() 定界
- reactjs - React BrowserRouter:位置未定义
- python - 如何使用 MariaDB 制作 Tkinter GUI 应用程序,在不安装 MariaDB 的情况下在其他 PC 上工作?
- html - 如何从 Wordpress 5.8.1 中的联系人 7 制作 html 联系人表单?
- javascript - 如何在反应原生 webview 中显示弹出选项卡?
- node.js - 如何使用访问令牌获取 Pinterest 登录用户详细信息
- python - 如何在 python(scikit、numpy、pill)中缩放(重新缩放)图像?