[OpenSIPS-Users] drouting module with append_branch() and q-values
thrillerbee
thrillerbee at gmail.com
Tue Mar 29 17:51:09 CEST 2011
Bogdan,
Nevermind on that issue; I neglected to notice that I had to create the
branch with append_branch() before setting anything.
Thanks for the help.
Ryan
On Tue, Mar 29, 2011 at 9:52 AM, thrillerbee <thrillerbee at gmail.com> wrote:
> Bogdan,
>
> When I configure:
> $(branch(uri)[0]) = $ru;
> $(branch(q)[0]) = 100;
> xlog("L_INFO","branch 0 = $(branch(uri)[0]) with q-value
> $(branch(q)[0])\n");
>
> I get this debug:
> ERROR:core:pv_set_branch_fields: SCRIPT BUG - inexisting branch assigment
> [0/0]
> ERROR:core:do_assign: setting PV failed
> ERROR:core:do_assign: error at line: 163
> ERROR:core:pv_set_branch_fields: SCRIPT BUG - inexisting branch assigment
> [0/0]
> ERROR:core:do_assign: setting PV failed
> ERROR:core:do_assign: error at line: 164
> branch 0 = <null> with q-value <null>
>
> Thanks,
> Ryan
>
>
> On Tue, Mar 29, 2011 at 8:19 AM, Bogdan-Andrei Iancu <bogdan at opensips.org>wrote:
>
>> Hi,
>>
>> Another tricks:
>>
>> 1) you can read the pending destinations directly from AVPs, without
>> calling the "use_next_gw()" function. See:
>> http://www.opensips.org/html/docs/modules/1.6.x/drouting.html#id293166
>>
>> 2) as append_branch() does not accept variables as params, use the
>> "$branch" variable to write into:
>> http://www.opensips.org/Resources/DocsCoreVar16#toc15
>> like:
>> $branch = $var(x) ; #add a new SIP URI as extra branch
>> $(branch(q)[-1]) = 10 ; # set Q val for the last added brach
>>
>>
>> Regards,
>> Bogdan
>>
>>
>> Anca Vamanu wrote:
>>
>>> Hi thrillerbe,
>>>
>>> I think that if you only want to build the list of selected destinations,
>>> you can just call use_next_gw and add the uri in RURI to a destination
>>> string ( because use_next_gw sets the RURI to the destination-
>>> http://www.opensips.org/html/docs/modules/devel/drouting.html#id251519).
>>> It would be something like this:
>>>
>>> if (do_routing("1","2")) { if ($avp(s:dr_rules_attrs) == "2")
>>> {
>>> xlog("L_INFO","After 1, ds is $ru\n"); $var(x) = 2;
>>> $var(ds) = $ru;
>>>
>>> while (use_next_gw()) { $var(ds) = $var(ds)
>>> + "," + $ru;
>>> xlog("L_INFO","After $var(x), ds is $var(ds)\n");
>>> $var(x) = $var(x) + 1; } } xlog("L_INFO","Destination
>>> set is $var(ds)\n"); }
>>>
>>>
>>> Regards,
>>> --
>>> Anca Vamanu
>>> OpenSIPS Developer
>>>
>>>
>>> On 03/29/2011 01:00 AM, thrillerbee wrote:
>>>
>>>> I'm trying to get OpenSIPS to act as a REDIRECT server and have run into
>>>> a couple issues. I'm using the drouting module to do lookups. Essentially, a
>>>> dialed number could have potentially several routes, I want to return a 300
>>>> with these routes in the Contact header. Please tell me if this is foolish
>>>> and/or there are better methods.
>>>>
>>>> I'm running release version 1.6.4-2-notls.
>>>>
>>>> With that, I've configured the following in my script:
>>>> if (do_routing("1","2")) { if ($avp(s:dr_rules_attrs) == "2")
>>>> {
>>>> xlog("L_INFO","After 1, ds is $ds\n"); $var(x) = 2;
>>>> while (use_next_gw()) { append_branch();
>>>> xlog("L_INFO","After $var(x), ds is $ds\n");
>>>> $var(x) = $var(x) + 1; } } xlog("L_INFO","Destination set
>>>> is $ds\n"); }
>>>>
>>>> My relevant debug output is:
>>>> After 1, ds is Contact: sip:15552345678 at 1.1.1.1 <mailto:
>>>> sip%3A15552345678 at 1.1.1.1> After 2, ds is Contact: *
>>>> sip:2215552345678 at 2.2.2.2 <mailto:sip%3A2215552345678 at 2.2.2.2>,
>>>> sip:2215552345678 at 2.2.2.2 <mailto:sip%3A2215552345678 at 2.2.2.2>* After
>>>> 3, ds is Contact: *sip:5552345678 at 3.3.3.3 <mailto:
>>>> sip%3A5552345678 at 3.3.3.3>*, sip:2215552345678 at 2.2.2.2 <mailto:
>>>> sip%3A2215552345678 at 2.2.2.2>, *sip:5552345678 at 3.3.3.3 <mailto:
>>>> sip%3A5552345678 at 3.3.3.3>* After 4, ds is Contact: *
>>>> sip:15552345678 at 5.5.5.5 <mailto:sip%3A15552345678 at 5.5.5.5>*,
>>>> sip:2215552345678 at 2.2.2.2 <mailto:sip%3A2215552345678 at 2.2.2.2>,
>>>> sip:5552345678 at 3.3.3.3 <mailto:sip%3A5552345678 at 3.3.3.3>, *
>>>> sip:15552345678 at 5.5.5.5 <mailto:sip%3A15552345678 at 5.5.5.5>* After 5, ds
>>>> is Contact: *sip:4415552345678 at 4.4.4.4 <mailto:
>>>> sip%3A4415552345678 at 4.4.4.4>*, sip:2215552345678 at 2.2.2.2 <mailto:
>>>> sip%3A2215552345678 at 2.2.2.2>, sip:5552345678 at 3.3.3.3 <mailto:
>>>> sip%3A5552345678 at 3.3.3.3>, sip:15552345678 at 5.5.5.5 <mailto:
>>>> sip%3A15552345678 at 5.5.5.5>, *sip:4415552345678 at 4.4.4.4 <mailto:
>>>> sip%3A4415552345678 at 4.4.4.4>*
>>>> It seems that append_branch() deletes the first entry in the
>>>> destination set before adding the current RURI to the beginning and end. Is
>>>> there an easier or more predictable way to write to the destination set?
>>>>
>>>> Also, it seems the append_branch() function will not take variables or
>>>> avps as parameters. Is there a known way of setting different q-values as a
>>>> destination set is generated? The below obviously doesn't work but should
>>>> explain what I'm looking for:
>>>>
>>>> var(q) = 90;
>>>> while (use_next_branch())
>>>> {
>>>> append_branch("$ru","$var(q)");
>>>> $var(q) = $var(q) - 10;
>>>> }
>>>>
>>>> Thanks,
>>>> Ryan
>>>>
>>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>
>>
>> --
>> Bogdan-Andrei Iancu
>> OpenSIPS eBootcamp - 2nd of May 2011
>> OpenSIPS solutions and "know-how"
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20110329/be24f824/attachment.htm>
More information about the Users
mailing list