Kamailio 替换 INVITE 请求中的 From 和 To 标头

问题描述 投票:0回答:1

我使用调度程序将邀请发送给 asterisk,但我发现需要替换 from 和 to 标头的问题,因为 asterisk 知道 uacreg 内的其他用户。我像这样更改标题

   remove_hf("From");
   remove_hf_re("^From.*");
   append_hf("$var(new_from)", "Call-ID");
   remove_hf("To");
   remove_hf_re("^To.*");
   append_hf("$var(new_to)", "From");

这确实删除了从软件电话生成的“发件人”和“收件人”。并将其替换为正确的“从”和“到”。问题是当第一个调度员不工作时,它会自动选择下一个调度员。 包含早期调度程序 uri 的 From 和 To 未删除。首次和故障转移都会在转发邀请之前调用相同的代码来替换 header 和 uri。

Content-Length:  2095
From:  <sip:[email protected]>
To:  <sip:[email protected]>
From:  <sip:[email protected]>
To:  <sip:[email protected]>

我尝试将其删除并期望它消失。 uac_replace_ 会给我这样的东西,我什至不知道这是否有效

To:  12345678 12345678 <sip:[email protected]:[email protected]>
From:  userbusera <sip:[email protected]:[email protected]>;tag=smrfmpicup
sip voip kamailio
1个回答
0
投票

要为要发送的请求的每个分支使用不同的标头,则必须将标头更改操作放在 branch_route{} 块中。在 request_route{} 处理中的 t_relay() 之前,您必须装备一条分支路由,例如:

...
t_on_branch("HDROPS");
t_relay();
...

分支路由块定义如下:

branch_route[HDROPS] {
  # header changing operations
  ...
}

故障转移时,在 failure_route{} 处理中,必须再次使用 t_on_branch("HDROPS"),然后才能再次中继。

© www.soinside.com 2019 - 2024. All rights reserved.