【问题标题】:Kamailio overwrite From domainKamailio 覆盖来自域
【发布时间】:2017-01-20 17:05:10
【问题描述】:

我正在使用 Kamailio 4.4。我需要覆盖呼叫信息:来自标头域。 sip.twilio.com 到 pstn.mycompany.io。示例:

From: "+16501112222" <sip:+16501112222@sip.twilio.com>

From: "+16501112222" <sip:+16501112222@pstn.mycompany.io>

调用流程:

Twilio (SP1) --> MyCompany --> SP2
Twilio SIP -> Calls: sip:14081112222@sip.mycompany.io -> Kamailio -> Kamailio look up table and convert sip:14081112222@sip.mycompany.io to sip:jdoe@sp2.com using dbaliases to send call to SP2. 

SP2 中的客户端看到来自 Twilio 的调用。为了将 SIP 呼叫重定向到 SP2,Kamailio 执行 DNS 查找。我尝试了以下运气,尽管我看到此代码正在执行。使用 Kamailio 默认调用脚本。

branch_route[MANAGE_BRANCH] {

        if($fd=~"sip\.twilio\.com") {
           xlog("L_INFO","|Masking Twilio call from: $fu");
           $fd = "pstn.mycompany.io"; 

        }

        xdbg("new branch [$T_branch_idx] to: $ru from: $fu\n");
        route(NATMANAGE);
}

相关: Twilio overwrite callerId with SIP calls

【问题讨论】:

    标签: twilio sip kamailio


    【解决方案1】:

    可以通过以下方式更改 kamailio.cfg 中的 From URI:

    • uac 模块中的 uac_replace_from() 函数。这也可以对回复进行反向更改,并在同一对话框的后续请求中更新标头

    • 将字符串(或变量)分配给 $fu(或 $fU/$fd)。此选项不处理反向更改和后续请求。

    您使用了第二个选项,但请注意更改不会立即可见。因此,在分配给 $fd 之后打印 $fu 将打印 From URI 的旧值。查看网络上的流量,应该更新标头。如果没有,请查看系统日志以查看是否有任何错误消息。此外,加载调试器模块并将其参数 cfgtrace 设置为 1 有助于跟踪执行了哪些配置文件行。

    【讨论】:

      【解决方案2】:

      这行得通:

      # Add uac.so module
      loadmodule "uac.so"
      
      
      # Manage outgoing branches
      branch_route[MANAGE_BRANCH] {
      
      
              xdbg("New branch [$T_branch_idx] to: $ru from: $fu $fd\n");
              xlog("L_DBG","$mb \n| New branch \n");  
              # Rewrite From Domain for X
              if($fd=~"sip.x.com") {
                 xlog("L_DBG","$mb \n| RELAY | Masking X call from: $fu $fd");
                 xlog("L_DBG","$mb \n| RELAY | From: $fu $fd"); 
                 uac_replace_from("","sip:$fU@pstn.mycompany.io");
                 xlog("L_DBG","$mb \n| RELAY | Call masked from: $fu");  
              }
              # We do not trust the user, let's remove the P-Asserted-Identity, if any:
              remove_hf("P-Asserted-Identity");
              remove_hf("P-Preferred-Identity");
              route(NATMANAGE);
      }
      

      【讨论】:

      • 为回来并发布您的最终解决方案而欢呼。我希望更多的人会。今天遇到同样的问题时帮助了我。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 2012-02-08
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多