[SR-Users] modify To header, prefix + ip, using dispacher module.

Carsten Bock carsten at ng-voice.com
Mon Feb 17 16:59:35 CET 2014


Hi Helena,

try the following (simplified):

route[FROMPHONE] {
 [...]
        if(!ds_select_domain("1", "8"))
        {
                 send_reply("404", "No destination");
                 exit;
        }
        t_on_failure("RTF_DISPATCH");
       t_on_branch("MODIFY_TO");

         subst_uri('/^sip:(.*)/sip:0199\1/i'); # add prefix to URI
        $avp(s:new_to) = "sip:0199"+$rU+"@"+"$rd";

         route(RELAY);
         exit;
}

branch_route[MODIFY_TO] {
  uac_replace_to("",  $avp(s:new_to));
}

failure_route[RTF_DISPATCH] {
         if (t_is_canceled()) {
                exit;
        }
         if (t_check_status("500") or (t_branch_timeout() and
!t_branch_replied()))
         {
                 if(ds_next_domain())
                 {
                        t_on_failure("RTF_DISPATCH"); #in case of
                        t_on_branch("MODIFY_TO");
                        $avp(s:new_to) = "sip:"+$tU+"@"+$td;
                        route(RELAY);
                        exit;
                 }
         }
}

This way, uac_replace_to() gets only called once per destination.

Kind regards,
Carsten

2014-02-17 14:14 GMT+01:00 Helena Garcia-Nieto <helena.gnieto at morodo.co.uk>:
> Hi Carsten,
>
> I am sorry,  I am not sure if I am understanding you correctly. Thank you
> very much for all the tips.
>
> I still have the same problem, the second time I try to manipulate the TO it
> appends the new value instead of substitute it.
>
> My code is at the end (bit different because it is now on a different test
> environment).
>
> When gw 1(X.X.X.102) is not responding to INVITEs, after the timer the
> server send the new request to gw2(X.X.X.180), set RURI fine but the TO has
> strange format (not correct) It is appending the new value to the value set
> on the DISPATCH route
>
> To: SET_TO <sip:XXXXX69 at X.X.X.102SET_TO <sip:XXXXXX69 at X.X.X.180>>
>
> The problem is only when I do it twice (on distich routine and on
> branch/failure). If I don't touch the TO on the DISPATCH routine, then the
> uac function on the branch works fine. The problem is that I need that the
> TO is equal to the RURI on both cases!
>
> Thanks again, Could you tell me if that was not what you meant? Or if I am
> not using the function properly?
>
> BR
>
> Helena
>
> route[DISPATCH] {
>
>         # round robin dispatching on gateways group '1'
>         if(!ds_select_domain("1", "8"))
>         {
>                 send_reply("404", "No destination");
>                 exit;
>         }
>
> subst_uri('/^sip:999(.*)/sip:\1/i'); # delete the 00
> subst_uri('/^sip:00(.*)/sip:\1/i'); # delete the 00
> subst_uri('/^sip:\+(.*)/sip:\1/i'); # delete the +
>
> uac_replace_to("SET_TO","sip:$rU@$rd");
>
>         t_on_failure("RTF_DISPATCH");
>
> route(RELAY);
>         return;
> }
>
>
> branch_route[SET_TO] {
>   uac_replace_to("SET_TO","sip:$rU@$rd");
>  }
>
> # Sample failure route
> failure_route[RTF_DISPATCH] {
>         if (t_is_canceled()) {
>                 exit;
>         }
>
> #marking the gw as failed and set state proving
>          ds_mark_dst("p");
>         # next DST - only for 500 or local timeout
>         if (t_check_status("500")
>                         or (t_branch_timeout() and !t_branch_replied()))
>         {
>                 if(ds_next_domain())
>                 {
>                         t_on_failure("RTF_DISPATCH");
>                         t_on_branch("SET_TO");
>                         route(RELAY);
>                         exit;
>                 }
>         }
> }
>
>
> -----Original Message-----
> From: sr-users-bounces at lists.sip-router.org
> [mailto:sr-users-bounces at lists.sip-router.org] On Behalf Of Carsten Bock
> Sent: lunes, 17 de febrero de 2014 10:24
> To: Kamailio (SER) - Users Mailing List
> Subject: Re: [SR-Users] modify To header, prefix + ip, using dispacher
> module.
>
> Hi Helena,
>
> Just a quick note:
> If you do a failover from failure_route(), this will also create a new
> branch and the branch_route() would be executed, too.
>
> Kind regards,
> Carsten
>
> 2014-02-17 10:15 GMT+01:00 Helena Garcia-Nieto <helena.gnieto at morodo.co.uk>:
>> Hey all,
>>
>> Does any of you have any other idea on how to modify the TO header.
>> Every option I try on failure route is appending the values together
>> instead of replacing it.
>>
>> Could that be because I am trying to modify the TO header twice? (Once
>> on the normal routing once in the failure routing?)
>>
>> Is there any parameter I can set so the TO header always copy the RURI
>> domain?
>>
>> Thanks in advanced!
>>
>> Helena
>>
>> -----Original Message-----
>> From: sr-users-bounces at lists.sip-router.org
>> [mailto:sr-users-bounces at lists.sip-router.org] On Behalf Of Helena
>> Garcia-Nieto
>> Sent: viernes, 14 de febrero de 2014 14:24
>> To: 'Kamailio (SER) - Users Mailing List'
>> Subject: Re: [SR-Users] modify To header, prefix + ip, using dispacher
>> module.
>>
>> Hi Carsten
>>
>> Thanks for the info, but I cannot use a branch route, because it is a
>> failure route, and I need to execute the dispatcher funcitonst to set
>> the destination to proving and to select the next destination.
>>
>> Does anyone know how to set the TO header to use always the same
>> username and domain than the RURI, even on failures?
>>
>> Thanks in advanced
>>
>> Helena
>>
>> -----Original Message-----
>> From: sr-users-bounces at lists.sip-router.org
>> [mailto:sr-users-bounces at lists.sip-router.org] On Behalf Of Carsten
>> Bock
>> Sent: jueves, 13 de febrero de 2014 14:43
>> To: Kamailio (SER) - Users Mailing List
>> Subject: Re: [SR-Users] modify To header, prefix + ip, using dispacher
>> module.
>>
>> Hi Helena,
>>
>> we do it the following way:
>>
>> In the main route:
>> t_on_branch("some_route");
>>
>> branch_route[some_route] {
>>  uac_replace_to(....);
>> }
>>
>> This way, the uac_* functions get executed for each branch individually.
>>
>> Kind regards,
>> Carsten
>>
>> 2014-02-13 13:40 GMT+01:00 Helena Garcia-Nieto
> <helena.gnieto at morodo.co.uk>:
>>> Hi,
>>>
>>> Thanks for the tip, but  I cannot manage it to work...
>>>
>>> I hadn't uac module loaded, I loaded it and added
>>>
>>> #MORODO TEST TO MODIFICATION
>>> loadmodule "uac.so"
>>> modparam("uac","restore_mode","none")
>>>
>>> The uac function cannot be used on the failure rutine (it gives an
>>> error when restarting) so I chaged the order:
>>>
>>> That is the default routing
>>> route[FROMPHONE] {
>>> [...]
>>>         if(!ds_select_domain("1", "8"))
>>>         {
>>>                 send_reply("404", "No destination");
>>>                 exit;
>>>         }
>>>         t_on_failure("RTF_DISPATCH");
>>>
>>>        #MORODO Add profix to ISKRATEL: 0199
>>>                 subst_uri('/^sip:(.*)/sip:0199\1/i'); # add prefix to URI
>>>         uac_replace_to("","sip:0199$rU@$rd");
>>>
>>>         route(RELAY);
>>>         exit;
>>>
>>> }
>>>
>>> That is the failure function
>>>
>>> failure_route[RTF_DISPATCH] {
>>>         if (t_is_canceled()) {
>>>                 exit;
>>>         }
>>>
>>>         #marking the gw as failed and set state proving, to send options
>>>         ds_mark_dst("p");
>>>
>>>         # next DST - only for 500 or local timeout
>>>         if (t_check_status("500") or (t_branch_timeout() and
>>> !t_branch_replied()))
>>>         {
>>>                 if(ds_next_domain())
>>>                 {
>>>                         t_on_failure("RTF_DISPATCH"); #in case of
>>> fail again it would try the next option
>>>
>>>                 #MORODO, update IP on TO header
>>>
>>>                 subst_hf("To", "/(.*)@(.*)$/\1@$rd>/", "a");
>>>                         route(RELAY);
>>>                         exit;
>>>                 }
>>>         }
>>> }
>>>
>>> But the result TO header is the same strange thing... mix of what it
>>> was on normal routine + what I wanted after the failure...
>>>
>>> To: <sip:0199XXXXX10 at 10.X.X.39>sip:0199XXXXX10 at 10.X.X.38
>>>
>>> It is like once the TO is modified, It does not modify it ok anymore...
>>>
>>> Would you do it any other way that could be better?
>>>
>>> Helena
>>>
>>>
>>> -----Original Message-----
>>> From: sr-users-bounces at lists.sip-router.org
>>> [mailto:sr-users-bounces at lists.sip-router.org] On Behalf Of Daniel
>>> Tryba
>>> Sent: miércoles, 12 de febrero de 2014 18:30
>>> To: sr-users at lists.sip-router.org
>>> Subject: Re: [SR-Users] modify To header, prefix + ip, using
>>> dispacher module.
>>>
>>> On Wednesday 12 February 2014 17:37:46 Helena Garcia-Nieto wrote:
>>>> I tried modifying again the TO header with:
>>>> subst_hf("To", "/(.*)@(.*)$/\1@$rd>/", "a")
>>>>
>>>> before the route(relay) on the failure routine, but it does not work
>>>> properly, I am getting strange TO header like:
>>>>
>>>> To: <sip:0199XXXX at 10.X.X.39> <sip:XXXXXX at 10.X.X.38>
>>>>
>>>> It looks like it is not parsing the to header it has before but
>>>> adding a parsed version of the original header at the end of the
>>>> other
>> one....
>>>> I tried with subst as well but the result is more or less the same.
>>>>
>>>> Probably there is a better way to set the prefix and the correct IP
>>>> on
>>>  the to header... I'll appreciate any help with this issue.
>>>
>>> How about just using uac_replace_to()?
>>>
>>> http://kamailio.org/docs/modules/stable/modules/uac.html#uac.f.uac_re
>>> p
>>> lace_t
>>> o%28display,uri%29
>>>
>>> 4.4.  uac_replace_to(display,uri)
>>>
>>> Replace in TO header the display name and the URI part.
>>>
>>> display and URI parameters can include pseudo-variables.
>>>
>>> This function can be used from REQUEST_ROUTE and from BRANCH_ROUTE.
>>>
>>> --
>>>
>>> POCOS B.V. - Croy 9c - 5653 LC Eindhoven
>>> Telefoon: 040 293 8661 - Fax: 040 293 8658
>>> http://www.pocos.nl/   - http://www.sipo.nl/
>>> K.v.K. Eindhoven 17097024
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>>> list sr-users at lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>>> list sr-users at lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>>
>> --
>> Carsten Bock
>> CEO (Geschäftsführer)
>>
>> ng-voice GmbH
>> Schomburgstr. 80
>> D-22767 Hamburg / Germany
>>
>> http://www.ng-voice.com
>> mailto:carsten at ng-voice.com
>>
>> Office +49 40 34927219
>> Fax +49 40 34927220
>>
>> Sitz der Gesellschaft: Hamburg
>> Registergericht: Amtsgericht Hamburg, HRB 120189
>> Geschäftsführer: Carsten Bock
>> Ust-ID: DE279344284
>>
>> Hier finden Sie unsere handelsrechtlichen Pflichtangaben:
>> http://www.ng-voice.com/imprint/
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>> list sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>> list sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>> list sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
> --
> Carsten Bock
> CEO (Geschäftsführer)
>
> ng-voice GmbH
> Schomburgstr. 80
> D-22767 Hamburg / Germany
>
> http://www.ng-voice.com
> mailto:carsten at ng-voice.com
>
> Office +49 40 34927219
> Fax +49 40 34927220
>
> Sitz der Gesellschaft: Hamburg
> Registergericht: Amtsgericht Hamburg, HRB 120189
> Geschäftsführer: Carsten Bock
> Ust-ID: DE279344284
>
> Hier finden Sie unsere handelsrechtlichen Pflichtangaben:
> http://www.ng-voice.com/imprint/
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users



-- 
Carsten Bock
CEO (Geschäftsführer)

ng-voice GmbH
Schomburgstr. 80
D-22767 Hamburg / Germany

http://www.ng-voice.com
mailto:carsten at ng-voice.com

Office +49 40 34927219
Fax +49 40 34927220

Sitz der Gesellschaft: Hamburg
Registergericht: Amtsgericht Hamburg, HRB 120189
Geschäftsführer: Carsten Bock
Ust-ID: DE279344284

Hier finden Sie unsere handelsrechtlichen Pflichtangaben:
http://www.ng-voice.com/imprint/



More information about the sr-users mailing list