Queue strategy ringall

Hi,

I dynamically add queue members with AGI.

The config I’m pasting below works fine if the queue is in any strategy except “ringall”. When set to “ringall” the caller is being denied acces to the queue even if there are free queue members.
What I need is to ring all queue memebrs at once. Is the ringall strategy incompatible with dynamic agents?

[q1000]
autofill = yes
; strategy = ringall
; ringall startegy does not work as expected in my case! I get a 'can't access queue' message.
strategy = rrmemory
retry = 0
timeout = 20
weight = 0
wrapuptime = 0
joinempty = penalty,paused,invalid,unavailable,inuse,ringing
leavewhenempty = penalty,paused,invalid,unavailable,inuse,ringing
announce-position = no
announce-holdtime = no
# asterisk -rx "queue show q1000"
q1000 has 0 calls (max unlimited) in 'rrmemory' strategy (77s holdtime, 80s talktime), W:0, C:10, A:8, SL:0.0%, SL2:0.0% within 0s
   Members:
      Operator web1002 (PJSIP/web1002) with penalty 1 (ringinuse enabled) (dynamic) (Unavailable) has taken no calls yet (login was 4477 secs ago)
      Operator web1003 (PJSIP/web1003) with penalty 1 (ringinuse enabled) (dynamic) (Not in use) has taken 3 calls (last was 950 secs ago) (login was 4477 secs ago)
      Operator web1004 (PJSIP/web1004) with penalty 1 (ringinuse enabled) (dynamic) (Not in use) has taken 2 calls (last was 1313 secs ago) (login was 4477 secs ago)
      Operator web1026 (PJSIP/web1026) with penalty 1 (ringinuse enabled) (dynamic) (Unavailable) has taken 5 calls (last was 2936 secs ago) (login was 4477 secs ago)
      Operator 1004 (PJSIP/1004) with penalty 1 (ringinuse enabled) (dynamic) (Unavailable) has taken no calls yet (login was 4477 secs ago)
      Operator 1002 (PJSIP/1002) with penalty 1 (ringinuse enabled) (dynamic) (Unavailable) has taken no calls yet (login was 4477 secs ago)
      Operator 1026 (PJSIP/1026) with penalty 1 (ringinuse enabled) (dynamic) (Unavailable) has taken no calls yet (login was 4477 secs ago)
      Operator 1003 (PJSIP/1003) with penalty 1 (ringinuse enabled) (dynamic) (Unavailable) has taken no calls yet (login was 4477 secs ago)
   No Callers

Asterisk ending (0).

Thanks

“can’t access” isn’t in app_queue. You’d need to show actual dialplan execution trying to enter the Queue.

It seems that the ring strategy (ringall) issue I reported was a red herring.

Users have reported that some callers are being “forced out” of a queue somehow.

The dialplan snippet is the following:

same => n,NoOp(There are ${QUEUE_MEMBER(q7000,free)} free agents, ${QUEUE_MEMBER(q7000,logged)} logged, ${QUEUE_MEMBER(q7000,ready)} ready and ${QUEUE_MEMBER(q7000,count)} total accounted for before entering queue 7000)
same => n,Queue(q7000,twx,,)
same => n,NoOp(There are ${QUEUE_MEMBER(q7000,free)} free agents, ${QUEUE_MEMBER(q7000,logged)} logged, ${QUEUE_MEMBER(q7000,ready)} ready and ${QUEUE_MEMBER(q7000,count)} total accounted for after leaving queue 7000)

The queue is configured as:

[q7000]
autofill = yes
strategy = ringall
retry = 0
timeout = 20
weight = 0
wrapuptime = 0
joinempty = penalty,paused,invalid,unavailable,inuse,ringing
leavewhenempty = penalty,paused,invalid,unavailable,inuse,ringing
announce-position = no
announce-holdtime = no

Looking in the logs I see the following which makes me think I should review the leavewhenempty option (but how?):

"There are 0 free agents, 2 logged, 2 ready and 8 total accounted for after leaving queue 7000"

I pasted here below the log lines above my NoOp message until I got the previous one:

Do you see anything wrong there?

Why would the caller be kicked out of the queue when free=0 but logged or ready=2?

Does leavewhenempty = inuse,ringing mean that the caller is kicked out of the queue when all agents/members are either inuse or ringing?

Does joinempty = penalty,paused,invalid,unavailable,inuse,ringing mean that the caller can join the queue “even if” all agents/members are in any of those states?

So, joinempty means “join the queue even if ALL the agents are in the following states” and leavewhenempty means “leave the queue when ALL the agents are in any of the following states”, correct?

If so I guess I’ll try with:

joinempty = paused,inuse,ringing
leavewhenempty = paused,invalid,unavailable

Any suggestions?

Thanks,

Vieri

Finally got to making this option work for me, hopefully.