Hello Jayesh,

For your purpose + needs, I would rather suggest to use, instead of multi-leg accounting, standard accounting + missed calls accounting - so in ACC table you will get a single record showing calls from caller to GWn (successful one), while in MISSED_CALLS table you will get one record per failure (with the corresponding reply info). Probably you can use db_extra to push more than the standard info into the accounting records.

Regards,
Bogdan

On 11/28/2011 12:57 PM, Jayesh Nambiar wrote:
Hi All,
I use failure_routes to failover the calls to multiple carriers. So if 1st carrier rejects the call, I route it to another carrier for the call to get completed. Now, I need the accounting of first carrier also in the acc table. Basically I need to know that this call was rejected from the 1st carrier and got connected on the second carrier. I am able to insert all the carrier related details in the acc table using multi-leg info parameter. But I get stuck on the standard acc columns like sip_code, sip_reason, to_tag etc. When the call gets connected on second carrier, the sip_code and sip_reason for the first row also shows 200 OK when in reality the sip_code and sip_reason for the first attempt was 503 Service Unavailable. Is it possible to maintain those standard values also in some variable/AVPs and insert appropriate values in appropriate rows??

I also tried a different approach of not using acc module and using avp_db_query for accounting on reply_routes. Basically this will insert a record for every initial INVITE and all BYEs after a reply for the method is received. Something like this gives me more control on what is to be inserted according to my requirements:

if(loose_route()) {
if(is_method("BYE")) {
   t_on_reply("1");
}
   t_relay();
}

if(is_method("INVITE")) {
<my logic>
    t_on_reply("1");
    t_relay();
}

onreply_route[1] {
   if(status =~ [2-6][0-9][0-9]) {
avp_db_query("insert into acc (sip_method, sip_to_tag,sip_callid,sip_code,sip_reason, calling_party, called_party, source_ip, dst_ip) values ('$rm', '$tt', '$ci', '$rs', '$rr', '$fU', '$avp(called_party)', '$avp(source_ip)', '$avp(dst_ip)' )");
   }
}
I set the appropriate AVPs like $avp(called_party), $avp(dst_ip) etc after the initial INVITEs according to my requirements. These are my questions:

1) First and foremost will this method insert proper INVITE and BYE for accounting purpose? 2) How much roughly will be the penalty on efficiency as compared to using the acc module? 3) Can AVP module take advantage of parameters like query_buffer_time and query_flush_time for performance reasons? 4) Can I use prepared_statements while inserting using avp_db_query for performance reasons?

Any help and suggestions regarding the above queries are very much appreciated.
Thanks in advance.

--- Jayesh


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


--
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
OpenSIPS solutions and "know-how"

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to