[SR-Users] Contacts in 302

John Petrini jpetrini at coredial.com
Fri Nov 3 17:56:32 CET 2017


If you're trying to modify the contact on your branch I believe you need to
do that in a branch route. For example in branch_route[EVAPIRESPONSE] you
could modify the contact header and. Just make sure to set the branch route
in route[EVAPIRESPONSE].

Then instead of using a var you could use an avp. avp's work as a stack so
a single avp could hold all of your contacts. In your branch route you
could then do something like:

remove_hf('Contact');
append_hf('Contact: $avp(contact)');
pv_unset ("$avp(contact)"); # This will pop the first contact off the avp
so the next time you call this avp you'll get the second contact

I hope that's helpful and gives you some ideas.

On Fri, Nov 3, 2017 at 12:00 PM, Diego Nadares <dnadares at gmail.com> wrote:

> Hi john, thanks for your answer. I'm using this in route[EVAPIRESPONSE]
> because of async request with evapi.
>
> I tried what you said too with no success.
>
>                 #$var(first) = 0;
>
>                 #while ($var(i) < $var(contacts_len)){
>
>                 #       jansson_get("contacts[$var(i)]", "$var(evmsg)",
> "$var(contact)");
>
>                 #       if ($var(first) == 0){
>
>                 #               $ru = $var(contact);
>
>                 #               $var(first) = 1;
>
>                 #       }
>
>                 #       append_branch($var(contact), "0.5");
>
>                 #       $var(i) = $var(i) + 1;
>
>                 #}
>
>                 remove_hf('Contact');
>
>                 append_hf('Contact: <1111 at 188.111.111.113>');
>
>                 send_reply("302", "Moved Temporarily");
>
>                 exit;
>
>
> The result is ONLY the original uri in the contact. *Contact:
> <1111 at 188.111.111.112 <1111 at 188.111.111.112>>*
>
> Diego
>
>
>
> 2017-11-02 22:22 GMT-03:00 John Petrini <jpetrini at coredial.com>:
>
>> remove_hf('Contact') and then append_hf($var(contact)) should work. What
>> was the problem you were having? Were you using it in a branch route?
>>
>>
>> John
>>
>> John Petrini | Platforms Engineer
>>
>> jpetrini at coredial.com
>>
>> 215.297.440 <215-297-4400>0
>>
>> 751 Arbor Way, Hillcrest I, Suite 150
>> Blue Bell, PA 19422
>>
>> www.coredial.com <https://coredial.com/>
>> <https://twitter.com/coredial>
>> <https://www.linkedin.com/company/coredial-llc>
>> <https://plus.google.com/+Coredial> <https://success.coredial.com/blog>
>>
>> The information transmitted is intended only for the person or entity to
>> which it is addressed and may contain confidential and/or privileged
>> material. Any review, retransmission, dissemination or other use of, or
>> taking of any action in reliance upon, this information by persons or
>> entities other than the intended recipient is prohibited. If you received
>> this in error, please contact the sender and delete the material from any
>> computer.
>>
>> On Thu, Nov 2, 2017 at 6:40 PM, Diego Nadares <dnadares at gmail.com> wrote:
>>
>>> Hi again,
>>>
>>> I found a work around . Modifying $ru changes de first contact uri.
>>>
>>>  if($var(routing)=~"redirect"){
>>>                 jansson_get("contacts_len", "$var(evmsg)",
>>> "$var(contacts_len)");
>>>                 xlog("L_INFO", "Contacts len $var(contacts_len)");
>>>                 $var(i) = 0;
>>>
>>>                 *$var(first) = 0;*
>>>                 while ($var(i) < $var(contacts_len)){
>>>                         jansson_get("contacts[$var(i)]", "$var(evmsg)",
>>> "$var(contact)");
>>>                         if ($var(first) == 0){
>>>                                * $ru = $var(contact);*
>>>                               *  $var(first) = 1;*
>>>                         }
>>>                         #Appending anyway because of the q param
>>>                         append_branch($var(contact), "0.5");
>>>                         $var(i) = $var(i) + 1;
>>>                 }
>>>                 send_reply("302", "Moved Temporarily");
>>>                 exit;
>>>         }
>>>
>>> Contact: *<1111 at 188.111.111.112 <sip%3A1111 at 188.111.111.112>>*, <
>>> sip:1111 at 188.111.111.112>;q=0.5, <sip:1111 at 188.111.111.112>;q=0.5
>>>
>>>
>>> I think this is not the better way. Any suggestion will be very
>>> appreciated.
>>>
>>> Thanks again.
>>>
>>> Diego
>>>
>>>
>>> 2017-11-02 18:11 GMT-03:00 Diego Nadares <dnadares at gmail.com>:
>>>
>>>> Hi Guys,
>>>>
>>>> I'm generating a 302 reply from kamailio. In this 302 I append new
>>>> branches with new
>>>> contacts.
>>>>
>>>> if($var(routing)=~"redirect"){
>>>>                 jansson_get("contacts_len", "$var(evmsg)",
>>>> "$var(contacts_len)");
>>>>                 xlog("L_INFO", "Contacts len $var(contacts_len)");
>>>>                 $var(i) = 0;
>>>>                 while ($var(i) < $var(contacts_len)){
>>>>                         jansson_get("contacts[$var(i)]",
>>>> "$var(evmsg)", "$var(contact)");
>>>>                         append_branch($var(contact), "0.5");
>>>>                         $var(i) = $var(i) + 1;
>>>>                 }
>>>>                 send_reply("302", "Moved Temporarily");
>>>>                 exit;
>>>>         }
>>>>
>>>> The problem i'm facing is that I can't delete the original contact  *<sip:1111 at 188.111.111.111:5060
>>>> <http://sip:1111@188.111.111.111:5060>>*
>>>>
>>>> The resulting conctact:
>>>>
>>>> Contact: *<sip:1111 at 188.111.111.111:5060
>>>> <http://sip:1111@188.111.111.111:5060>>*, <sip:1111 at 188.111.111.112
>>>> >;q=0.5, <sip:1111 at 188.111.111.112>;q=0.5
>>>>
>>>> I all ready tried with remove_hf('Contact') and adding the new ones
>>>> after that but it doesn't worke either.
>>>>
>>>> The problem is that one gw takes the first contact over and over again
>>>> and never the other two.
>>>>
>>>> Thanks in advance.
>>>>
>>>> Diego.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Kamailio (SER) - Users Mailing List
>>> sr-users at lists.kamailio.org
>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users at lists.kamailio.org
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20171103/981bc714/attachment.html>


More information about the sr-users mailing list