[SR-Users] Trying to send kamailio to a uri derived from a database query

Will Ferrer will.ferrer at switchsoft.com
Tue Jul 23 06:31:55 CEST 2013


Hi

I am trying to make a kamailio script which gets a uri from the database
and then directs the call to that uri. Setting the uri with a string (not
derived from the database) works just fine:

append_branch();
seturi("sip:user at domain");

But I can not seem to pass anything to seturi other than a string. Here are
some examples:

$var(branch_uri) = $dbr(ra=>[0,0]);
append_branch();
seturi($var(branch_uri));

# kamailio won't even start when I try to pass the uri from a variable

$var(branch_uri) = $dbr(ra=>[0,0]);
append_branch();
seturi("$var(branch_uri)");

# treats the "$var(branch_uri)" as a literal string -- does not evaluate to
the the value of the variable

$var(branch_uri) = $dbr(ra=>[0,0]);
append_branch();
seturi((str)$var(branch_uri));

# kamailio won't start with this syntax inplace

The errors that kamailio gives on start up when I have a variable in passed
into seturi are as follows

 0(16145) : <core> [cfg.y:3567]: yyerror_at(): parse error in config file
/usr/local/kamailio-4.0/etc/kamailio/kamailio.cfg, line 647, column 12-27:
syntax error
 0(16145) : <core> [cfg.y:3570]: yyerror_at(): parse error in config file
/usr/local/kamailio-4.0/etc/kamailio/kamailio.cfg, line 647, column 28: bad
argument, string expected
 0(16145) DEBUG: <core> [sr_module.c:674]: find_mod_export_record():
find_export_record: found <sl_reply_error> in module sl
[/usr/local/kamailio-4.0/lib64/kamailio/modules/sl.so]
 0(16145) DEBUG: <core> [sr_module.c:674]: find_mod_export_record():
find_export_record: found <sl_reply_error> in module sl
[/usr/local/kamailio-4.0/lib64/kamailio/modules/sl.so]
 0(16145) DEBUG: <core> [sr_module.c:674]: find_mod_export_record():
find_export_record: found <sl_reply_error> in module sl
[/usr/local/kamailio-4.0/lib64/kamailio/modules/sl.so]
ERROR: bad config file (2 errors)

I also tried to accomplish this

append_branch($var(branch_uri), "0.0");
t_load_contacts();
t_next_contacts();

# No errors but didn't work

I found a way around the problem by making a perl script to allow me set
the uri:

Perl script:

sub rewrite_uri {
        my $m = shift;
        my $uri = shift;
        $m->rewrite_ruri($uri);
        return -1;
}

Then I call it like this:

$var(branch_uri) = $dbr(ra=>[0,0]);
append_branch();
perl_exec("rewrite_uri", $var(branch_uri));

# this works


So I have a viable work around but it seems like there is probably
something simple I am missing which should let me accomplish this with out
having to do a call into perl.

Any advice any one can give me would be greatly appreciated.

Best regards

Will Ferrer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20130722/add3a40c/attachment.html>


More information about the sr-users mailing list