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