[asterisk-dev] app_queue missed calls per agent - caller hangup before timeout
marek cervenka
cervajs2 at gmail.com
Thu Dec 15 10:17:07 CST 2016
i think i foud possible solution. can you confirm if i'm on correct path?
sql data looks
+-----+----------------------------+-----------------+-----------+-------+---------+-------+-------+-------+-------+-------+
| id | time | callid | queuename | agent
| event | data1 | data2 | data3 | data4 | data5 |
| 165913 | 2016-12-14 11:01:20.965839 | 1481709660.56899 | queue1 |
NONE | ABANDON | 1 | 1 | 9 | | |
data3 contains ringtime but agent is filled as "NONE"
in app_queue there are 2 places which fills ABANDON
function queue_exec
stop:
if (res) {
if (res < 0) {
if (!qe.handled) {
record_abandoned(&qe);
* ast_queue_log(args.queuename,
ast_channel_uniqueid(chan), "NONE", "ABANDON", "%d|%d|%ld", qe.pos,
qe.opos, (long) (time(NULL) - qe.start));*
res = -1;
} else if (qcontinue) {
reason = QUEUE_CONTINUE;
res = 0;
}
} else if (qe.valid_digits) {
ast_queue_log(args.queuename, ast_channel_uniqueid(chan),
"NONE", "EXITWITHKEY",
"%s|%d|%d|%ld", qe.digits, qe.pos, qe.opos, (long)
(time(NULL) - qe.start));
}
BUT
in try_calling function
there is member filled
} else if (ast_check_hangup(qe->chan)) {
/* Caller must have hung up just before being connected */
ast_log(LOG_NOTICE, "Caller was about to talk to agent
on %s but the caller hungup.\n", ast_channel_name(peer));
* ast_queue_log(queuename,
ast_channel_uniqueid(qe->chan), member->membername, "ABANDON",
"%d|%d|%ld", qe->pos, qe->opos, (long) (time(NULL) - qe->start));*
record_abandoned(qe);
ast_channel_publish_dial(qe->chan, peer,
member->interface,
ast_hangup_cause_to_dial_status(ast_channel_hangupcause(peer)));
ast_autoservice_chan_hangup_peer(qe->chan, peer);
ao2_ref(member, -1);
return -1;
}
why isnt used the try_calling to fill ABANDON?
is it safe fill member (if exist) in queue_exec?
-------- Přeposlaná zpráva --------
Předmět: app_queue missed calls per agent - caller hangup before timeout
Datum: Wed, 14 Dec 2016 14:26:21 +0100
Od: marek cervenka <cervajs2 at gmail.com>
Komu: Asterisk Users Mailing List - Non-Commercial Discussion
<asterisk-users at lists.digium.com>
hi,
i'm trying get report about missed calls per agent. i'm using queue_log
and RINGNOANSWER event
but i found problem described here
---
https://www.thirdlane.com/forum/queue-log-problem
RINGNOANSWER only happens if the call TIMES OUT ringing the agent and it
returns to the queue. If your agent has a 30 second timeout and the
caller ABANDONS the call in 5 seconds it will log an ABANDON not a
RINGNOANSWER.
This is the only time ast_queue_log is executed with RINGNOANSWER. The
subsequent code of this function goes on to autopause the agent/member
if autopause is enabled. Not something that happens when callers hang up
when ringing the agents.
/*! \brief RNA == Ring No Answer. Common code that is executed when we
try a queue member and they don't answer. */
static void rna(int rnatime, struct queue_ent *qe, char *interface, char
*membername)
{
if (option_verbose > 2)
ast_verbose( VERBOSE_PREFIX_3 "Nobody picked up in %d ms\n", rnatime);
ast_queue_log(qe->parent->name, qe->chan->uniqueid, membername,
"RINGNOANSWER", "%d", rnatime);
---
any tips howto detect missed calls where caller hangup before timeout?
tnx
Marek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20161215/d5b822a8/attachment.html>
More information about the asterisk-dev
mailing list