[OpenSIPS-Users] variable "counter" parameter to diversion Header

Mickael HUBERT mickael at winlux.fr
Fri May 3 14:00:33 CEST 2013


Hi,
it's ok now, I've delete all headers and after write news.

my code:
/route[diversion]//
//{//
//    if(is_present_hf("Diversion"))//
//    {//
//
//        if($(hdrcnt(Diversion)) > 5)//
//        {//
//            xlog("L_INFO","Diversion header = $(hdrcnt(Diversion)) is 
 > 5, hungup call\n");//
//            sl_send_reply("482","Loop Detected");//
//            exit;//
//        }//
//
//        $var(i) = 0;//
//        $var(sumcounter) = 0;//
///*remove_hf("Diversion");*/
//        while ($var(i) < $(hdrcnt(Diversion)))//
//        {//
//            xlog("L_INFO"," dip: 
$(hdr(Diversion)[$var(i)]{param.value,privacy}) \ dir: 
$(hdr(Diversion)[$var(i)]{param.value,reason}) \ counter: 
$(hdr(Diversion)[$var(i)]{param.value,counter}{s.int}) \ di: 
$(hdr(Diversion)[$var(i)]{nameaddr.uri}) \ number of Diversion header : 
$(hdrcnt(Diversion))\n");//
//
//if(!$(hdr(Diversion)[$var(i)]{param.value,counter}{s.int}))//
//                {//
//                    $var(counter) = 1;//
//                    $var(sumcounter) = $var(sumcounter) + $var(counter);//
//                }//
//                else//
//                {//
//                    $var(counter) = 
$(hdr(Diversion)[$var(i)]{param.value,counter}{s.int});//
//                    $var(sumcounter) = $var(sumcounter) + 
$(hdr(Diversion)[$var(i)]{param.value,counter}{s.int});//
//                }//
//
//if(!$(hdr(Diversion)[$var(i)]{param.value,privacy}))//
//                {//
//                    $var(privacy) = "off";//
//                }//
//                else//
//                {//
//                    $var(privacy) = 
$(hdr(Diversion)[$var(i)]{param.value,privacy});//
//                }//
//
//if(!$(hdr(Diversion)[$var(i)]{param.value,reason}))//
//                {//
//                    $var(reason) = "unknown";//
//                }//
//                else//
//                else//
//                {//
//                    $var(reason) = 
$(hdr(Diversion)[$var(i)]{param.value,reason});//
//                }//
//
//                xlog("L_INFO","$ci Remove Diversion Header and add 
Diversion header with counter=$var(counter)\n");////
//                append_hf("Diversion: 
<$(hdr(Diversion)[$var(i)]{nameaddr.uri})>;reason=$var(reason);privacy=$var(privacy);counter=$var(counter)\r\n"); 
//
//
//            $var(i) = $var(i) + 1;//
//        }//
//
//        if($var(sumcounter) > 5)//
//        {//
//            xlog("L_INFO","Diversion header = Sum Counter is 
$var(sumcounter) > 5, hungup call\n");//
//            sl_send_reply("482","Loop Detected");//
//            exit;//
//        }//
//    }//
//    return;//
//}/


Le 03/05/2013 13:23, Răzvan Crainea a écrit :
> Hi, Mickael!
>
> remove_hf() removes all headers, so it should remove both first and 
> the second one. Then you can simply add a new header(using append_hf() 
> function[1]) with the desired information.
>
> [1] 
> http://www.opensips.org/html/docs/modules/1.9.x/sipmsgops.html#id249181
>
> Best regards,
>
> Razvan Crainea
> OpenSIPS Core Developer
> http://www.opensips-solutions.com
>
> On 05/03/2013 10:58 AM, Mickael HUBERT wrote:
>> some details:
>>
>> remove_hf delete all Diversion header, how can I delete or rewrite good
>> header ?
>>
>> Le 03/05/2013 10:48, Mickael HUBERT a écrit :
>>> Hi,
>>> I have coded with while for treat all diversion headers.
>>>
>>> Ex:
>>> ....
>>> /while ($var(i) < $(hdrcnt(Diversion)))//
>>> //{//
>>> //if(!$(hdr(Diversion)[$var(i)]{param.value,counter}{s.int}) ||
>>> !$(hdr(Diversion)[$var(i)]{param.value,privacy}) ||
>>> !$(hdr(Diversion)[$var(i)]{param.value,reason}))//
>>> //    {//
>>> //        ..../
>>>
>>> after all these treatments, I can not replace the good diversion
>>> header, if I have multiple diversion.
>>>
>>> Ex:
>>> If I have:
>>>
>>> /Diversion: <sip:******@hexanet.fr>; reason="user-busy";
>>> privacy="full" ;counter=3//
>>> //Diversion: <sip:******@hexanet.fr>; reason="user-busy"; 
>>> privacy="off"/
>>>
>>> and if I use:
>>> remove_hf("Diversion"), to rewrite the second diversion header.
>>> Opensips delete the first diversion header.
>>>
>>> How can I rewrite the good diversion header, here the second ?
>>>
>>> thanks
>>>
>>> Le 02/05/2013 19:21, Saúl Ibarra Corretgé a écrit :
>>>> On May 2, 2013, at 4:20 PM, Mickael HUBERT wrote:
>>>>
>>>>> Thank you very much, it's perfect ;)
>>>>>
>>>>> but, if I have many Diversion header in the same INVITE ? This 
>>>>> command works ?
>>>>>
>>>> You can index the call to hdr(Diversion), IIRC there is an example 
>>>> in the transformations page showing how to iterate through a list 
>>>> of headers with the same name.
>>>>
>>>> -- 
>>>> Saúl Ibarra Corretgé
>>>> AG Projects
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.opensips.org
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>
> _______________________________________________
> 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/20130503/0e21104b/attachment.htm>


More information about the Users mailing list