Hi,
On Tue, Sep 13, 2011 at 8:46 AM, Daniel-Constantin Mierla <miconda(a)gmail.com
wrote:
Hello,
just to be sure, you used flag 2 for missed calls, right? I can see it set
in onreply_route.
Yes, I've used #!define FLT_ACCMISSED 2 and setflag(FLT_ACCMISSED) for
missed calls. I checked the flag in onreply_route and failure route and they
are properly set.
That means the flags are ok now, the issue seems to be
in other place. You
don't set any of the accounting flags in request route block, isn't it? I
mean, the first accounting flag (like accounting answered calls or missed
calls) is set in failure route. If so, the acc does not register itself for
a tm callback that is used for handling accounting events.
Actually, I do set other accounting flags in following routes:
#!define FLT_ACC 1
#!define FLT_ACCMISSED 2
#!define FLT_ACCFAILED 3
#MAIN ROUTE
if (is_method("INVITE")) setflag(FLT_ACC);
route[WITHINDLG] {
if (has_totag()) {
if (loose_route()) {
if (is_method("BYE")) {
setflag(FLT_ACC); # do accounting ...
setflag(FLT_ACCFAILED); # ... even if the
transaction fails
}
.....
route[LOCATION] {
# only for people who don't have multiple contacts (no serial
forking, not used in reported scenario)
if ( is_method("INVITE") && !(isflagset(FLT_USRPREF)))
setflag(FLT_ACCMISSED);
}
#called only for serial forked calls
failure_route[FAIL_FORK] {
.....
# if second branch set flag
setflag(FLT_ACCMISSED);
t_flush_flags();
....
# if 3rd branch (voicemail) reset flag
resetflag(FLT_ACCMISSED);
t_flush_flags();
....
}
Now that you've mentioned it, I've removed all other setflag() functions and
kept only the ones in FAIL_FORK failure route. There is still no logging of
the second branch.
Try to set acc flag for writing to syslog in route
{...}, you can reset it
in failure route or onreply_route. Of course, this as an workaround for now,
I will look for a proper solution in case this is the problem.
I'm not sure I can implement needed logic this way. I don't want to account
1st branch. If I set FLT_ACCMISSED flag in route {...} and reset it in
on_reply and failure route, it will be too late, the missed call will
already be accounted. Or, I'm missing something?
Cheers
Ozren
On 9/12/11 3:29 PM, Ozren Lapcevic wrote:
I have attached log file. I have single onreply_route[REPLY_ONE] used for
all replies. Grep "REPLY_ONE, FLAGS" to find where the flags are printed.
Grep "FAIL FORK" for logs from failure route.
Let me know if you need anything else.
Cheers
Ozren
--
Daniel-Constantin Mierla --
http://www.asipto.com
Kamailio Advanced Training, Oct 10-13, Berlin:
http://asipto.com/u/kat
http://linkedin.com/in/miconda --
http://twitter.com/miconda