Queue member idle but shows "unavailable"

Quick question about some statically configured queue members:

I have a queue member using a custom state interface to indicate if it’s available. All was working well until I restarted Asterisk, and now that queue member is never rung, even though it’s in the queue and idle.

voip*CLI> core show hints:

2127@hints-cen: PJSIP/ATAxLA2         State:Idle            Presence:not_set         Watchers  6

----------------
- 12 hints registered
voip*CLI> queue show test
test has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0%, SL2:0.0% within 12s
   Members:
      231 (Local/112@to-queue-member from hint:2127@hints-all) with penalty 5 (ringinuse disabled) (Unavailable) has taken no calls yet
   No Callers

Additionally, if I `NoOp(${DEVICE_STATE(${HINT(2127@hints-all)})}) before going to Queue(), it reports “NOT_INUSE”.

Am I missing something basic here, as to why this device is assumed “Unavailable” by the queue? I have tried reloading the queue entirely, reloading PJSIP, etc. to try to get the correct device state to register with the queue. As I mentioned, it was working when I set it up, until I restarted, so it seems like something changed at that point. I can’t remove the queue member and add it back, this being a static queue, so I’m not sure what else to try here…

The only way I have found to “fix” this is to remove the member from queues.conf, queue reload all, then uncomment the member, reload queues again, and voila, now it’s working as it should be. I’m puzzled at how this behavior got stuck with such a simple setup, and wondering what I may be doing wrong here, since this seems like too simple a setup for this to be a bug.

What version of Asterisk are you using?
Can you please post the queue config as well as the hint dialplan?

Asterisk 18.4.0.

[test-template](!)
musicclass = test
strategy = ringall
servicelevel = 12
timeoutpriority = app
weight=0 ; queue weight: higher weights - more important
wrapuptime=0
autofill=yes
autopause=no
maxlen=0 ; unlimited
retry = 0
setinterfacevar=yes
setqueuevar = yes
announce-frequency = 0 ; disable announcements
ringinuse = no

[test](test-template)
member => Local/2127@to-queue-member,5,231,hint:2127@hints-all,no
[hints-all]
include => hints-test-1

[hints-test-1]
exten => 2127,hint,PJSIP/ATAxLA2

The member, which is in multiple queues, becomes unavailable in ALL queues. Removing the queue member from just one queue, reloading, adding back, and reloading again will fix the issue, and the member is then available in all queues again.

Here is one hint in the log about why queues.conf needs to be modified before the issue is resolved:

NOTICE[13103] app_queue.c: queuerules.conf has not changed since it was last loaded. Not taking any action.

It seems that app_queue’s sense of what is available is stale, possibly static, for static queue members, and thus the files needs to be modified (in any arbitrary way) and “queue reload all” run before it will pick up that queue members indeed are available.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.