[asterisk-bugs] [Asterisk 0014173]: Agent shows "(In use)" and will not receive queue calls while agent is logged in waiting for queue calls (1.4.22)

Asterisk Bug Tracker noreply at bugs.digium.com
Tue Jan 27 15:55:04 CST 2009


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=14173 
====================================================================== 
Reported By:                nathan
Assigned To:                putnopvut
====================================================================== 
Project:                    Asterisk
Issue ID:                   14173
Category:                   Applications/app_queue
Reproducibility:            random
Severity:                   major
Priority:                   normal
Status:                     ready for review
Target Version:             1.4.24
Asterisk Version:           1.4.22 
Regression:                 No 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2009-01-05 13:54 CST
Last Modified:              2009-01-27 15:55 CST
====================================================================== 
Summary:                    Agent shows "(In use)" and will not receive queue
calls while agent is logged in waiting for queue calls (1.4.22)
Description: 
I have a queue with approximately 50 total agents, about 20 of which will
be logged in at any given time.  Seemingly randomly (if there's a pattern,
I haven't discovered it), sometimes after an agent completes an inbound
call the agent status (as displayed in "show queue x") changes to "(In
use)" and the agent never again receives a call until that agent logs off
and logs back into the queue.  

This will happen about 15-20 times every day with seemingly random agents
at seemingly random times.  It happens when there's only one agent logged
in or when we have a full 20 logged in.  I can't identify a pattern that
would cause this problem.

This causes a huge problem, because we are missing calls and breaking our
SLA agreements with clients even though we have enough capacity and people
sitting waiting for calls.  As a workaround we are trying to get each agent
to log off the queue and log back on the queue after each call, but they
often forget.
====================================================================== 

---------------------------------------------------------------------- 
 (0098907) svnbot (reporter) - 2009-01-27 15:55
 http://bugs.digium.com/view.php?id=14173#c98907 
---------------------------------------------------------------------- 
Repository: asterisk
Revision: 171689

U   branches/1.4/channels/chan_agent.c

------------------------------------------------------------------------
r171689 | mmichelson | 2009-01-27 15:55:03 -0600 (Tue, 27 Jan 2009) | 39
lines

Fix devicestate problems for "always-on" agent channels

A revision to chan_agent attempted to "inherit" the device
state of the underlying channel in order to report the
device state of an agent channel more accurately.

The problem with the logic here is that it makes no sense to
use this for always-on agents. If the agent is logged in, then
to the underlying channel, the agent will always appear to be
"in use," no matter if the agent is on a call or not. The reason
is that to the underlying channel, the channel is currently in use
on a call to the AgentLogin application.

The most common cause that I found for this issue to occur was for
a SIP channel to be the underlying channel type for an Agent channel.
If the SIP phone re-registers, then the registration will cause the
device state core to query the device state of the SIP channel. Since the
SIP channel is in use, the Agent channel would also inherit this status.
Once the agent channel was set to "in use" there was no way that the
device
state could change on that channel unless the agent logged out.

The solution for this problem is a bit different in 1.4 than it is in the
other branches. In 1.4, there will be a one-line fix to make sure that
only
callback agents will inherit device state from their underlying channel
type.
For the other branches of Asterisk, since callback support has been
removed, there
is also no need for device state inheritance in chan_agent, so I will
simply be
removing it from the code.

In addition, the 1.4 source is getting a new comment to help the next
person who
edits chan_agent.c. I'm adding a comment that a agent_pvt's loginchan
field may be
used to determine if the agent is a callback agent or not.

(closes issue http://bugs.digium.com/view.php?id=14173)
Reported by: nathan
Patches:
      14173.patch uploaded by putnopvut (license 60)
Tested by: nathan, aramirez


------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=171689 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-01-27 15:55 svnbot         Note Added: 0098907                          
======================================================================




More information about the asterisk-bugs mailing list