You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenSIPS中继呼叫异常:请求URI主机未替换为目标服务器IP

解决OpenSIPS转发呼叫时Request-URI未修改的问题

问题出在你对send()函数的理解上:这个函数只负责把SIP消息发送到指定的网络地址,不会自动修改消息内部的Request-URI字段。你看到的Request-URI还是自身IP,是因为你没手动修改这个字段,OpenSIPS不会替你做这件事。

修正后的配置代码

socket=udp:192.168.10.50:5060

# Route for handling incoming calls
route {
    # 仅处理来自指定客户端1.1.1.1的INVITE请求
    if (is_method("INVITE") && $src_ip == "1.1.1.1") {
        # 提取原Request-URI的用户部分,替换主机为目标服务器IP
        $ru = "$ru(user)@10.10.10.50";
        
        # 日志输出修改后的Request-URI,用于调试
        xlog("Modified Request URI: $ru\n");

        # 中继呼叫到目标SIP服务器
        if (!send("10.10.10.50:5060")) {
            xlog("Failed to send call to destination server\n");
            exit;
        }
    }
}

关键说明

  • $ru是OpenSIPS内置变量,代表SIP请求的Request-URI。通过$ru(user)可以提取其中的用户部分(比如你例子里的123123),然后拼接目标主机地址,完成Request-URI的修改。
  • 新增了$src_ip == "1.1.1.1"的判断,确保只处理来自指定客户端的呼叫,符合你的需求。
  • 修改Request-URI后,再用send()发送到目标服务器,此时消息里的Request-URI就会是你预期的123123@10.10.10.50。

如果后续遇到其他SIP头的问题(比如Via头需要调整),可以再针对具体场景修改,但当前核心问题的解决就是手动调整$ru变量。

内容的提问来源于stack exchange,提问作者Masood Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 22:40:02