首页 > 解决方案 > 如何使用 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 参数,但它也没有。任何建议如何解决这个问题?

标签: websocketwebrtcsipkamailio

解决方案


推荐阅读