[Kamailio-Users] ACC on Failure route

alex pappas rebel.pappas at gmail.com
Mon Jan 25 14:15:20 CET 2010


> Hi Daniel,
>
> This is my ACC configuration:
>
> # ----- acc params -----
> /* what sepcial events should be accounted ? */
> modparam("acc", "early_media", 1)
> modparam("acc", "report_ack", 1)
> modparam("acc", "report_cancels", 1)
> /* by default ww do not adjust the direct of the sequential requests.
>    if you enable this parameter, be sure the enable "append_fromtag"
>    in "rr" module */
> modparam("acc", "detect_direction", 0)
> /* account triggers (flags) */
> *modparam("acc", "failed_transaction_flag", 3)*
> modparam("acc", "log_flag", 1)
> modparam("acc", "log_missed_flag", 2)
> modparam("acc", "log_extra",
>
> "src_user=$fU;src_domain=$fd;dst_to_user=$tU;dst_user=$rU;dst_domain=$rd;diversion_uri=$di;destination_uri=$du;display_name=$fn;orig_src_domain=$od;orig_req_uri=$ou;orig_username=$oU;prefered_identity=$pd;display_name_pref_ident=$pn;proxy_ip=$Ri;proxy_port=$Rp;src_ip=$si;dst_dom_uri=$td;user_agent=$ua")
> /* uncomment the following lines to enable DB accounting also */
> modparam("acc", "db_flag", 1)
> modparam("acc", "db_missed_flag", 2)
> modparam("acc", "db_url",
>         "mysql://openser:openserrw@localhost/openser10")
> modparam("acc", "db_extra",
>
> "src_user=$fU;src_domain=$fd;dst_to_user=$tU;dst_user=$rU;dst_domain=$rd;diversion_uri=$di;destination_uri=$du;display_name=$fn;orig_src_domain=$od;orig_req_uri=$ou;orig_username=$oU;prefered_identity=$pd;display_name_pref_ident=$pn;proxy_ip=$Ri;proxy_port=$Rp;src_ip=$si;dst_dom_uri=$td;user_agent=$ua")
>
> I run kamailio-1.5.3 no TLS
>
> What exactly is iirc?
>
> When i call from an user to an other and the call is passing in case of
> failure from failure route1 then I get an extra cdr from the failure route1
> BUT when I call pstn and the call goes to Failure route2 then I don't get
> the extra CDRs. One important diference between Failure route1 and 2 is that
> in the Failure route2 I have an extra  *append_branch();*
>
>  Failure Route 1 (default)
>
> failure_route[1] {
>         xlog("alx ------- Failure Route 1 -------");
> #n#     if (is_method("INVITE")
> #n#                     && (isbflagset(6) || isflagset(5))) {
> #n#             unforce_rtp_proxy();
> #n#     }
>
>         if (t_was_cancelled()) {
>                 exit;
>         }
>
>         # uncomment the following lines if you want to block client
>         # redirect based on 3xx replies.
>         ##if (t_check_status("3[0-9][0-9]")) {
>         ##t_reply("404","Not found");
>         ##      exit;
>         ##}
>
>         # uncomment the following lines if you want to redirect the failed
>         # calls to a different new destination
>         ##if (t_check_status("486|408")) {
>         ##      sethostport("192.168.2.100:5060");
>         ##      append_branch();
>         ##      # do not set the missed call flag again
>         ##      t_relay();
>         ##}
> }
>
> Failure Route2
>
>
> failure_route[2] {
>
>   if(t_was_cancelled()) {
>         exit;
>   }
>
>   if(t_check_status("4[0-9][0-9]|5[0-9][0-9]"))
>   {
>
>      #xlog("ACCOUNTING:
> src_user=$fU;src_domain=$fd;dst_to_user=$tU;dst_user=$rU;dst_domain=$rd;diversion_uri=$di;destination_uri=$du;display_name=$fn;orig_src_domain=$od;orig_req_uri=$ou;orig_username=$oU;prefered_identity=$pd;display_name_pref_ident=$pn;proxy_ip=$Ri;proxy_port=$Rp;src_ip=$si;dst_dom_uri=$td;user_agent=$ua;sip_replay_reson=$rr;sip_replay_status=$T_reply_code");
>
>      if(ds_next_domain())
>      {
>           xlog("alx ------------------------------------- The final RU is
> $rU and the cust_prefix:$avp(s:cust_prefix) --------");
>           xlog("alx ------- [ FAILURE ROUTE 2 ] First part of failure with
> rd = $rd and prefix = $(ru{uri.param,prefix}) ---");
>             # more destinations from same dispatcher group
>
>             # add prefix if set and remove the param from R-URI
>             if($(ru{uri.param,prefix})!=null)
>             {
>                 $ru = "sip:" + $avp(s:cust_prefix) +
> $(ru{uri.param,prefix}) + $avp(s:user) + "@" + $rd;
>             } else {
>                 $ru = "sip:" + $avp(s:cust_prefix) + $avp(s:user) + "@" +
> $rd;
>             }
>             #rewriteport(5065);
>             #setport("5065");
>             t_on_failure("2");
>             *append_branch();*##################################################################### This
> is different !!!!!!!!!!!!!!!!!!
>             t_relay();
>             exit;
>      } else {
>             # go to next dispatcher group
>             xlog("alx ------- This is the next DST group = $avp(s:dstgrp)
> -------");
>
>
>             if($avp(s:dstgrp)!=null)
>             {
>                  # select destination
>                  if(ds_select_domain("$avp(s:dstgrp)", "4"))
>                  {
>                      xlog("alx ------- [ FAILURE ROUTE 2 ] Second part of
> failure with rd = $rd and prefix = $(ru{uri.param,prefix}) ---");
>                      xlog("alx ------------------------------------- The
> final RU is $rU and the cust_prefix:$avp(s:cust_prefix) --------");
>                      # add prefix if set and remove the param from R-URI
>                      if($(ru{uri.param,prefix})!=null)
>                      {
>                          $ru = "sip:" + $avp(s:cust_prefix) +
> $(ru{uri.param,prefix}) + $avp(s:user) + "@" + $rd;
>                      } else {
>                          $ru = "sip:" + $avp(s:cust_prefix) + $avp(s:user)
> + "@" + $rd;
>                      }
>                      $avp(s:dstgrp) = null;
>                      xlog("alx ------- This is the next DST group after
> NULL = $avp(s:dstgrp) -------");
>                      xlog("alx ------- The final RURI is $ru ------- ");
>                      t_on_failure("2");
>                      *append_branch();*#####################################################################
> This is different !!!!!!!!!!!!!!!!!!
>                      t_relay();
>                      exit;
>                 }
>          } else {
>                 t_reply("444", "No more tries for you!");
>                 }
>     }
> }
>
>
>
> Thanks
> Alex
>
>
>
>
> On Mon, Jan 25, 2010 at 12:39 PM, Daniel-Constantin Mierla <
> miconda at gmail.com> wrote:
>
>>  Hi Alex,
>>
>>
>> On 1/25/10 11:03 AM, alex pappas wrote:
>>
>> Hi Daniel,
>>
>> We make a call and the call tries from the Failure Route 5 times new
>> gateway (with dispatcher) but  WITHOUT success in termination. In every try
>> we get back 503 Congestion. In this case how many CDRs we should see in our
>> LOG.
>>
>> We have the modparam("acc", "failed_transaction_flag", 6) and we
>> setflag(6) for every INVITE.
>>
>> iirc, at some point was an option to get all failed legs accounted. I
>> don't remember using it so I have to check the sources (you are on 1.5.x,
>> right?).
>>
>> For next version I plan to make acc functions available on rest of the
>> routes, should be few updates to take sip method from cseq header and ignore
>> r-uri if it is a reply processed, in failure route should work by default, I
>> see no reasons now what could be the problem.
>>
>> Cheers,
>> Daniel
>>
>>
>> On Fri, Jan 22, 2010 at 3:33 PM, Daniel-Constantin Mierla <
>> miconda at gmail.com> wrote:
>>
>>> Hello,
>>>
>>>
>>> On 1/22/10 1:08 PM, alex pappas wrote:
>>>
>>>> Dear Friends,
>>>>
>>>> In case of a call failure I'm trying from failure route to send the call
>>>> through other gateways with Dispatcher module.
>>>> I would like to have ACC for all failures that a call can possibly pass.
>>>> If the call fails in the 3 first gateways  I want them also in my mysql ACC
>>>> table. I tried that with AVPs in the syslog and it works fine BUT is there
>>>> any way that I can simply setflag(1) for accounting and I can have ACC for
>>>> every try?
>>>>
>>>> I tryied to add  in failure route :
>>>>
>>>> setflag(1); # do accounting ...
>>>> setflag(3); # ... even if the transaction fails
>>>>
>>>> but I'm getting ACC only the last try.
>>>>
>>>>   last failed try? Or what you mean by "the last try"? IIRC, failed
>>> transaction flag should be set for each leg if you want all failures.
>>>
>>> Cheers,
>>> Daniel
>>>
>>> --
>>> Daniel-Constantin Mierla
>>> * http://www.asipto.com/
>>>
>>>
>>
>> _______________________________________________
>> Kamailio (OpenSER) - Users mailing list
>> Users at lists.kamailio.orghttp://lists.kamailio.org/cgi-bin/mailman/listinfo/usershttp://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>
>>
>> --
>> Daniel-Constantin Mierla
>> * http://www.asipto.com/
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/users/attachments/20100125/21867710/attachment-0001.htm>


More information about the Users mailing list