[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
Wed Jan 14 13:16:42 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:                     feedback
Asterisk Version:           1.4.22 
Regression:                 No 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             2009-01-05 13:54 CST
Last Modified:              2009-01-14 13:16 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.
====================================================================== 

---------------------------------------------------------------------- 
 (0097773) putnopvut (administrator) - 2009-01-14 13:16
 http://bugs.digium.com/view.php?id=14173#c97773 
---------------------------------------------------------------------- 
Based on what I was seeing here, it makes perfect sense that this would
happen to your 2:00 AM shift people more often, since I assume they are
called much less frequently than your other workers. What I see is that if
a SIP phone registers while an agent is not on a call, then the new logic
in the agent channel driver to "inherit" device state from the underlying
SIP device causes the Agent to become "in use." If an agent is currently on
a call when this occurs, then it is not a problem because when the agent
ends the call by pressing '*' he effectively overrides this "in use"
status. Thus it is my opinion that this bug is inversely load-based.

The reason for this is that to the SIP channel driver, since the person is
off hook and on a call to the AgentLogin application, the phone appears to
be "in use." While this is perfectly valid for describing the SIP endpoint,
it is not accurate when describing the Agent channel. When the SIP phone
re-registers, this is an instance where the SIP channel driver tells the
core that the device state has changed. The Agent channel driver is hooked
into this state change and thus inherits the "in use" status.

So first off, the workaround I told you should work, but I also have
another one in mind in case you don't like the first one I told you. The
other workaround is to remove the call-limit from all your sip peers. This
will cause the SIP channel driver to never report an "in use" device state
and therefore never cause the Agent channel driver to inherit such a
state.

My thinking when solving this is to turn this device state inheritance off
for Agents who have called in using the AgentLogin application (as opposed
to those who call in with AgentCallbackLogin). The reason why is that at
all times, no matter what, the underlying channel driver will think that
the phone is in use, so inheriting this device state makes no sense at all.
The tricky part about this is that the Agent channel driver is written so
badly that it is not easy to distinguish between the two types of agents.
As soon as I have a patch ready, I will test it and put it up here for you
to try as well.

Thanks for all the information you have provided on this. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-01-14 13:16 putnopvut      Note Added: 0097773                          
======================================================================




More information about the asterisk-bugs mailing list