Kamailio 4.4 seturi只接受显式字符串?

时间:2017-04-14 17:23:00

标签: proxy sip kamailio

我一直致力于实现TM模块文档中描述的简单序列分叉(Q值存储为mysql表中的优先级权重),其中我的代理查询数据库以确定要转发到哪个域

我已经通过广泛使用xlog验证了我用来构建与seturi一起使用的新URI的变量正确地获取了所有内容。我在后续的while循环中使用append_branch调用迭代我的sql查询结果,这对于采用格式相似的参数没有任何问题。但是,当我重新启动Kamailio时,它只是抱怨我需要一个字符串。它与控制台对应的线就是seturi调用。我已经尝试将其作为字符串进行转换,但这似乎不是4.4的一部分(或者我的语法错误)。

我已经考虑过构建URI字符串并存储到avp中,但我怀疑我会遇到同样的问题。

作为参考,这就是我正在做的事情:

$var(basedest) = "sip:" + $var(number) + "@" + $(dbr(destination=>[0,0]))+ ":" + $var(port);
seturi($var(basedest));

尝试加载配置时输出的是什么:

<core> [cfg.y:3368]: yyerror_at(): parse error in config file //etc/kamailio/kamailio.cfg, line 570, column 9-22: syntax error
<core> [cfg.y:3371]: yyerror_at(): parse error in config file //etc/kamailio/kamailio.cfg, line 570, column 23: bad argument, string expected

当然,当我将$ var(basedest)放在双引号中时,它实际上被解释为一个字符串。单引号表现相似。我能做些什么来解决这个问题吗?当我给它一个明确的硬编码字符串时,它很高兴,并且路由工作正常。当我尝试像上面那样做一些非常简单的事情时,它会感到沮丧。如果可能的话,我想避免更新,因为我最初从yum repo抓住了Kamailio。

提前致谢 - 这一直困扰着我。

1 个答案:

答案 0 :(得分:0)

显然,这不是一个新问题。我最终找到了我可以做些什么来解决它。

作为参考,seturi和$ ru伪变量引用相同的东西。所以基本上你只是这样做:

$var(mynewru) = "sip:user@domain:5060";
$ru = $var(mynewru);

基于TM模块的文档,这将实现我之前尝试做的事情。对于串行分叉,发出一些append_branch调用是可以的。