[Kamailio-Users] ACC on Failure route

alex pappas rebel.pappas at gmail.com
Tue Jan 26 11:50:08 CET 2010


Hi Daniel,

Adding setflag(2) in Failure Route everything works PERFECT! ;-)
All my failure attempts are added in the database, in table missed_calls.

Thank you very match
Alex



On Tue, Jan 26, 2010 at 12:00 PM, Daniel-Constantin Mierla <
miconda at gmail.com> wrote:

>  Hi Alex,
>
> ok, checked the sources and in fact seems that the missed calls events can
> be accounted on each serial fork step. Try to set missed calls flags for
> each failure step and see if you get records in missed_calls table.
>
> Cheers,
> Daniel
>
>
> On 1/25/10 2:15 PM, alex pappas wrote:
>
>
>
>
>
>> 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/
>>>
>>>
>>
>
> --
> Daniel-Constantin Mierla
> * http://www.asipto.com/
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20100126/4adc7f9a/attachment.htm>


More information about the sr-users mailing list