[Asterisk-Dev] Call Queue Completed calls and service level %
Asterisk
asterisk at dotr.com
Wed Jun 22 07:26:21 MST 2005
Further to the comments below, I beleive that the only change required
is that the q->callscompleted++; line should be removed from
update_status, as it is also updated in update_queue function which is
called on a connection.
I will modify the code and try it on our test system.
Julian.
Asterisk wrote:
> I've been looking at our call queue stats, and think that there may be
> some problems with the code - perhaps I am wrong (I am a "C" newbie)
> but would ask someone to look over my comments.
>
> The number of calls recorded in "Completed" is way too high - and the
> service level % is way too low :)
>
> I've looked at the code in app_queue.c and have the following questions:
>
> The "callscompleted" field is updated by the "update_status" function,
> as you can see below:
>
> static int update_status(struct ast_call_queue *q, struct member
> *member, int status)
> {
> struct member *cur;
>
> /* Since a reload could have taken place, we have to traverse
> the list to
> be sure it's still valid */
> ast_mutex_lock(&q->lock);
> cur = q->members;
> while(cur) {
> if (member == cur) {
> cur->status = status;
> if (!q->maskmemberstatus) {
> manager_event(EVENT_FLAG_AGENT,
> "QueueMemberStatus",
> "Queue: %s\r\n"
> "Location: %s\r\n"
> "Membership: %s\r\n"
> "Penalty: %d\r\n"
> "CallsTaken: %d\r\n"
> "LastCall: %ld\r\n"
> "Status: %d\r\n"
> "Paused: %d\r\n",
> q->name, cur->interface, cur->dynamic ?
> "dynamic" : "static",
> cur->penalty, cur->calls,
> cur->lastcall, cur->status, cur->paused);
> }
> break;
> }
> cur = cur->next;
> }
> q->callscompleted++;
> ast_mutex_unlock(&q->lock);
> return 0;
> }
>
> However, this function is called when there is a "busy" (and possibly
> no answer) on the extension being dialled - surely a call cannot be
> marked as completed until it has been put through to an agent ? I
> notice that there is a "handled" field that is incremented only if
> there is a connection made to an agent. So, should
> q->callscompleted++; be taken out of update_status and put where
> handled++; is ?
>
> As for the service level, I think that it is far too low because the
> callscompleted is far to high. I notice that the callscompletedinsl is
> being updated in recalc_holdtime, which is called when the call is
> actually put through to the agent.
>
> If callscompletedinsl is being updated here, shouldn't callscompleted
> be as well, and not in the update_status ?
>
> Go easy ... :)
>
> Julian.
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-dev
>
>
More information about the asterisk-dev
mailing list