如何从Kamailio更改To header URI?

时间:2017-12-05 06:01:00

标签: proxy sip voip sip-server kamailio

我正在使用 Kamailio 4.4 。我想将请求转发到我的端点的不同端口号。我更改了目标URI INVITE 正确到达了新端口。但 INVITE 请求中的 To标头具有旧端口。所以端点没有响应请求。 然后我尝试使用 remove_hf(" To") insert_hf(" To:)删除并替换To标头$ var(modified_to_header)\ r \ n"); 函数。但是标头没有改变。

那么,有没有办法更改To标头URI?

1 个答案:

答案 0 :(得分:0)

需要更多信息才能给出真正的答案,但一般情况下“To”标题不用于路由(重播)。如果INVITE到达新端口,您应该得到响应,甚至是错误。

因此我理解问题不在“To”标题中,而是在地址中重播

当使用直接路由时(例如,您不称为record_route),UAS通常会将重播发送到 top 'Via'标题或'Contact'标题。此过程在rfc3261 Sections 4 and 18.2.2

中描述

因此,首先检查此标题,您可以了解重播发送的位置。如果您将看到重播,您将获得更多信息,以了解如何解决问题。

无论如何,要将数据包转发到不同的地址/端口,最好使用内部核心功能 rewritehostport 或类似的https://www.kamailio.org/wiki/cookbooks/4.4.x/core#rewritehostport。或调度员,负载均衡器等模块。 它将以真实的方式自动完成所有工作重写标题

以下是快速示例

rewritehostport("1.2.3.4:5080");
rewriteport("5070");

要使用uac模块更改“To”标题uac_replace_to。 但是警告 - 在大多数情况下,没有理由进行这样的重写,并且可能由于存储在标题中的标记而具有不可预测的效果。你应该确切地知道你在做什么。

uac_replace_to("sip:batman@10.0.0.100:5090");

希望这有帮助