kamailio:如何从 SIP INVITE Header 中获取值

kamailio: how to get a value from SIP INVITE Header

请帮助我从 SIP INVITE header 获取 a 值到达 kamailio,如 INVITE sip:+341930203454@sub.domain.com;myid=+34@sub.domain.com SIP/2.0 我想将 myid 值 +34 保存到一个变量中,没有域名。

     $var(uri) = $sel(ruri);
     xavp_params_explode("$(var(uri){s.unbracket})", "uri");
     xlog("L_INFO", "$var(uri) Received converted to $xavp(uri=>myid[0])\n");

我在上面尝试过,它打印了 +34@sub.domain.com 但我只想将 +34 保存到一个变量中以进一步检查数据库中的 prefix based routing

能否请您帮助如何获取它或如果有任何alternate/single行方法来获取此值,请帮助。

提前致谢。

我认为这样的方法可行:

$var(uri) = $sel(ruri);
$var(myid-param) = $(var(uri){param.value,myid}); # this should return +34@sub.domain.com
$var(sip-myid-param) = "sip:" + $var(myid-param); # this should return sip:+34@sub.domain.com
$var(user-part) = $(var(sip-myid-param){uri.user}); # this should return +34

以上所有字符串操作都可以放在一行中,我用了多行只是为了简单说明。

在一行中应该是这样的,但是请不要引用我,但我希望你能得到一个想法

$var(user-part) = $(var("sip:" + $var($(var(uri){param.value,myid}))){uri.user});

单行语句变体可以是:

$var(result) = $(ru{uri.param,myid}{s.select,0,@});

其中:

  • $ru - 是请求URI(请求第一行的sip地址)
  • {uri.param,myid} - 是一个返回参数值的转换(myid 在这种情况下)在一个 URI
  • {s.select,0,@} - 是一种转换,通过使用定界符 @[= 拆分字符串来返回第一个标记24=]