<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>i think i foud possible solution. can you confirm if i'm on
      correct path?</p>
    <p>sql data looks</p>
    <p>+-----+----------------------------+-----------------+-----------+-------+---------+-------+-------+-------+-------+-------+<br>
      | id  | time                       | callid          | queuename |
      agent | event   | data1 | data2 | data3 | data4 | data5 |<br>
      | 165913 | 2016-12-14 11:01:20.965839 | 1481709660.56899  | queue1
          | NONE  | ABANDON | 1     | 1     | 9     |       |       |<br>
    </p>
    <p>data3 contains ringtime but agent is filled as "NONE"<br>
    </p>
    <p><br>
    </p>
    <p>in app_queue there are 2 places which fills ABANDON<br>
    </p>
    <p><br>
    </p>
    <p>function queue_exec<br>
    </p>
    <p>stop:<br>
          if (res) {<br>
              if (res < 0) {<br>
                  if (!qe.handled) {<br>
                      record_abandoned(&qe);<br>
      <b>                ast_queue_log(args.queuename,
        ast_channel_uniqueid(chan), "NONE", "ABANDON",   "%d|%d|%ld",
        qe.pos, qe.opos,  (long) (time(NULL) - qe.start));</b><br>
                      res = -1;<br>
                  } else if (qcontinue) {<br>
                      reason = QUEUE_CONTINUE;<br>
                      res = 0;<br>
                  }<br>
              } else if (qe.valid_digits) {<br>
                  ast_queue_log(args.queuename,
      ast_channel_uniqueid(chan), "NONE", "EXITWITHKEY",<br>
                      "%s|%d|%d|%ld", qe.digits, qe.pos, qe.opos, (long)
      (time(NULL) - qe.start));<br>
      }<br>
    </p>
    <p><br>
    </p>
    <p>BUT <br>
    </p>
    <p>in try_calling function<br>
    </p>
    <p>there is member filled</p>
    <p>} else if (ast_check_hangup(qe->chan)) {<br>
                      /* Caller must have hung up just before being
      connected */<br>
                      ast_log(LOG_NOTICE, "Caller was about to talk to
      agent on %s but the caller hungup.\n", ast_channel_name(peer));<br>
      <b>                ast_queue_log(queuename,
        ast_channel_uniqueid(qe->chan), member->membername,
        "ABANDON", "%d|%d|%ld", qe->pos, qe->opos, (long)
        (time(NULL) - qe->start));</b><br>
                      record_abandoned(qe);<br>
                      ast_channel_publish_dial(qe->chan, peer,
      member->interface,
      ast_hangup_cause_to_dial_status(ast_channel_hangupcause(peer)));<br>
                      ast_autoservice_chan_hangup_peer(qe->chan,
      peer);<br>
                      ao2_ref(member, -1);<br>
                      return -1;<br>
      }<br>
    </p>
    <p><br>
    </p>
    <p>why isnt used the try_calling to fill ABANDON?<br>
    </p>
    <p>is it safe fill member (if exist) in queue_exec?<br>
    </p>
    <br>
    <br>
    -------- Přeposlaná zpráva --------
    <table class="moz-email-headers-table" border="0" cellpadding="0"
      cellspacing="0">
      <tbody>
        <tr>
          <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Předmět: </th>
          <td>app_queue missed calls per agent - caller hangup before
            timeout</td>
        </tr>
        <tr>
          <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Datum: </th>
          <td>Wed, 14 Dec 2016 14:26:21 +0100</td>
        </tr>
        <tr>
          <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Od: </th>
          <td>marek cervenka <a class="moz-txt-link-rfc2396E" href="mailto:cervajs2@gmail.com"><cervajs2@gmail.com></a></td>
        </tr>
        <tr>
          <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Komu: </th>
          <td>Asterisk Users Mailing List - Non-Commercial Discussion
            <a class="moz-txt-link-rfc2396E" href="mailto:asterisk-users@lists.digium.com"><asterisk-users@lists.digium.com></a></td>
        </tr>
      </tbody>
    </table>
    <br>
    <br>
    <pre>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

---
<a class="moz-txt-link-freetext" href="https://www.thirdlane.com/forum/queue-log-problem">https://www.thirdlane.com/forum/queue-log-problem</a>

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
</pre>
  </body>
</html>