I’ve encountered a strange situation with joining a queue under a specific set of circumstances. If there is one agent in the queue talking on an active queue call and a second call begins ringing the queue, a third call that rings the queue while the second call is still ringing the queue will not be allowed to join the queue (it will be sent to the fail over destination), even when ringinuse=yes. If the agent places the first call on hold and answers the second call, the third call is able to join the queue, so this only happens when the second call is actively ringing the queue.
If the agent is not on an active call and one call begins ringing the queue, a second (and even third) call can ring the queue successfully, even if none of the calls are actually answered.
I’ve verified that the endpoint itself isn’t rejecting the third call by dialing the extension directly instead of the queue the extension is associated with. I’ve also verified that this happens with both static and dynamic agents as well as both SIP and PJSIP agents. In fact, the only way I’ve been able to get the third call to successfully join the queue under the above circumstances is by setting joinempty=yes; any other setting for joinempty results in the third call failing to join the queue.
I believe this has something to do with the way in which the queue reports the states of the agents. When looking at ‘queue show 500’, I see:
(Local/1305@from-queue/n from hint:1305@ext-local) (ringinuse enabled) (dynamic) (Not in use)
when the agent is idle.
(Local/1305@from-queue/n from hint:1305@ext-local) (ringinuse enabled) (dynamic) (in call) (In use)
when the agent is on the active first call.
(Local/1305@from-queue/n from hint:1305@ext-local) (ringinuse enabled) (dynamic) (in call) (Invalid)
when the second call begins ringing the queue, but before the second call is answered. Note that now the queue reports the agent’s state as “Invalid”. At this point, if a third call tries to join the queue I see this in the CLI:
WARNING[C-00000004]: app_queue.c:8031 queue_exec: Unable to join queue '500'
I realize that this might be an edge case, but we encounter this situation daily. Has anyone else run into this situation?
This is on Asterisk v13.25.0 and Yealink T46G and T48G endpoints.
Here is my queue.conf:
 announce-frequency=0 announce-holdtime=no announce-position=no autofill=no autopause=no autopausebusy=no autopausedelay=0 autopauseunavail=no joinempty=strict leavewhenempty=yes maxlen=0 memberdelay=0 min-announce-frequency=15 penaltymemberslimit=0 periodic-announce-frequency=0 queue-callswaiting=silence/1 queue-thereare=silence/1 queue-youarenext=silence/1 reportholdtime=no retry=0 ringinuse=yes servicelevel=60 strategy=ringall timeout=0 timeoutpriority=app timeoutrestart=no weight=0 wrapuptime=0 context=