Summary:ASTERISK-10013: A rejection of an incoming call to a dynamic queue member causes the caller in the queue to be dropped
Reporter:Leif Madsen (lmadsen)Labels:
Date Opened:2007-08-02 11:23:33Date Closed:2011-06-07 14:08:19
Versions:Frequency of
Description:When the Queue() application distributes a caller from a queue to a dynamic queue member, with the timeoutrestart=yes (or set to 'no'), then when a call is rejected by the queue member with the reject button on the Polycom, a 603 Declined is sent back and the caller is hung up on.

I am using dynamic queue members from realtime, along with dynamic queues (also from realtime).


From queues.conf.sample:

; If timeoutrestart is set to yes, then the timeout for an agent to answer is
; reset if a BUSY or CONGESTION is received.  This can be useful if agents
; are able to cancel a call with reject or similar.
; timeoutrestart = no
Comments:By: Leif Madsen (lmadsen) 2007-08-02 14:39:44

Determined this is not an issue with realtime, but rather with the use of the Local channel on the member:

   -- SIP/u301#xfertest-0a292bd0 is busy
[Aug  2 15:32:05] WARNING[13367]: chan_sip.c:3100 update_call_counter: Inringing for peer 'u301#xfertest' < 0?
 == Everyone is busy/congested at this time (1:1/0/0)
   -- Executing [check_agent@queue_member_delivery:9] Busy("Local/u301#xfertest@queue_member_delivery-32aa,2", "") in new stack
 == Spawn extension (queue_member_delivery, check_agent, 9) exited non-zero on 'Local/u301#xfertest@queue_member_delivery-32aa,2'

If you change the member to just SIP/u301#xfertest, then when you reject, the caller goes back into the Queue() as expected.

Here is my flatfile queue for your reference:

member => SIP/u301#xfertest

And the context the Local channel is calling (simplified):

exten => _.,1,NoOp()
exten => _.,n,Set(E=${EXTEN})
exten => _.,n,GotoIf($[${E} != h]?check_agent,1)
exten => _.,n,NoOp()

exten => check_agent,1,NoOp()
exten => check_agent,n,Answer()
exten => check_agent,n,Dial(SIP/${E})
exten => check_agent,n(done),Busy()
exten => check_agent,n,Hangup()

By: Mark Michelson (mmichelson) 2007-08-03 09:07:05

So if I understand you correctly, the flatfile you specified works. If you were to change the member to

member => local/whatever@queue_member_delivery

then that's when it would fail?

Oh, and also, this doesn't really have anything to do with the bug, but for future reference, if you have the strategy as ringall, timeoutrestart doesn't do anything.

By: Joshua C. Colp (jcolp) 2007-08-03 09:18:04

This is a configuration issue. You are answering the call in queue_member_delivery so app_queue considers the agent as having answered. Remove the Answer() and it will work as advertised.