A few question;
Firstly
With mod acc and acc_cdr i see the default fields logged is only start_time, end_time, duration.
This is an actual entry logged.
start_time, end_time, duration 1515353126, 1515353135, 9.660000
Why is the duration 9.660000?
It seems wrong because it is more then the difference in time
1515353135 - 1515353126 = 9
Secondly
What is a reliable way to capture and log start time, answer time, and end time. How do I get the duration info. a) start time to end time. b) answer to end time.
Is there an built in variable that store this info?
Thirdly
dialog events listed as:
event_route[dialog:start] event_route[dialog:end] event_route[dialog:failed]
There does not seems to be a event for answer so then how to be notified when a dialog is answered?
Regards
Hello!
Regarding the second and third question. I once did like this:
route { route(checks); route(reqinit); .. route(class4); }
route[reqinit] { ....
if (has_totag() && (uri == myself) && is_method("INVITE|ACK|BYE|UPDATE")) { if(match_dialog()) { # sequential request -> obey Route indication if(is_method("BYE")) { t_on_reply("manage_reply_class4"); xlog("[$ci] INFO BYE DIALOG_DID=$DLG_did DLG_lifetime=$DLG_lifetime \n"); route(acc_stop);
} else if(is_method("INVITE")) { xlog("[$ci] INFO Re-Invite has come for: $fU"); if(match_dialog()) { xlog("[$ci] INFO dialog matched"); t_relay(); exit; } } #loose_route(); t_relay(); exit; } if ( is_method("ACK") ) { if ( t_check_trans() ) { # non loose-route, but stateful ACK; must be an ACK after # a 487 or e.g. 404 from upstream server route(acc_stop); t_relay(); exit; } else { # ACK without matching transaction -> # ignore and discard exit; } } xlog("[$ci] INFO No such dialog\n"); } # handle cancel and re-transmissions if ( is_method("CANCEL") ) { xlog("[$ci] INFO Cancel message from: $fU\n"); if ( t_check_trans() ) { route(acc_stop); t_relay(); } exit; } }
route[class4] { if is_method("INVITE") { ..... route(acc_start); } .. }
onreply_route[manage_reply_class4] { if (is_method("INVITE") && t_check_status("200") || t_check_status("[4|5|6][0-9][0-9]") && !t_check_status("1[0-9][0-9]")) { $avp(call_time_setup) = $Ts - $avp(call_time_created_Ts); route(acc_update); } }
route[acc_start] { $avp(time_call_created) = $time(%F %T); $avp(call_time_created_Ts) =$Ts; $avp(call_fuo) = $fU; $avp(call_tuo) = $tU; $avp(call_mi) = $mi; avp_db_query("insert into acc (method, from_tag, callid, time, created, ruo, fuo, tuo, mi, fgw) values ('$rm', '$ft', '$ci', '$avp(time_call_created)', '$avp(time_call_created)', '$avp(call_ruo)', '$avp(call_fuo)', '$avp(call_tuo)', '$avp(call_mi)', '$avp(call_gw_source)')"); }
route[acc_update] { avp_db_query("select callid from acc where callid='$ci'","$avp(call_id)"); if($avp(call_id)) { avp_db_query("update acc set to_tag = '$tt', sip_code = '$rs', sip_reason = '$rr', setuptime = '$avp(call_time_setup)', tgw = '$avp(call_gw_dest)', ru = '$avp(call_ru)', fu = '$fU', tu = '$tU' where callid='$ci'"); }
}
route[acc_stop] { avp_db_query("select callid from acc where callid='$ci'","$avp(call_id)"); if($avp(call_id)) { avp_db_query("update acc set duration = '$DLG_lifetime' where callid = '$ci'"); } }
Понедельник, 8 января 2018, 0:50 +03:00 от voipspace voipspace voipspace@yandex.com:
A few question;
Firstly
With mod acc and acc_cdr i see the default fields logged is only start_time, end_time, duration.
This is an actual entry logged.
start_time, end_time, duration 1515353126, 1515353135, 9.660000 Hello!
Regarding the second and third question. I once did like this: Why is the duration 9.660000?
It seems wrong because it is more then the difference in time
1515353135 - 1515353126 = 9
Secondly
What is a reliable way to capture and log start time, answer time, and end time. How do I get the duration info. a) start time to end time. b) answer to end time.
Is there an built in variable that store this info?
Thirdly
dialog events listed as:
event_route[dialog:start] event_route[dialog:end] event_route[dialog:failed]
There does not seems to be a event for answer so then how to be notified when a dialog is answered?
Regards
Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users