Limit queue to one call?


Is it possible to limit the active calls in a queue to one person?

What I mean by this, is to have a queue, where there are for example 8 members to the queue (static members).

Callers call into the queue, but only one active call can take place at a time - ie one of the 8 members has taken a call from the queue, all other calls are queued until that call is complete.

As an additional nice to have - the ability for a member to be able to pick up an extra call from the queue.



I don’t believe such a facility exists. What is the problem that this would solve for you?

An incoming line, where a “ringall” policy is in place to a bunch of static members, however want to restrict incoming calls to only one at a time in order to prevent more than one person becoming tied up with incoming phone calls.


You could try making the queue have one member "Local/queue@queue\n

exten => queue,1,Dial(SIP/100&SIP/200)

then make sue the queue is set with ringinuse=no

worth a try …



I think I tried this, but will try again later tonight when I’m home. (perhaps not with the flag you suggest)

Memory is telling me that it considered the local channel to be an invalid member.


Local channels can’t be invalid members, as they are the preferred way of getting the AgentCallbackLogin function, now that is deprecated.

The problem I might expect is that they don’t have a device state, or don’t have a useful one.

I think you may be right on status David, but using teh local channel will allow groupcount to be used and return busy if more than 1



Can you expand on your thoughts a little for me, perhaps with an example?



Ok guys - with your suggestions I think I have it !

Starts off with my queue…

[support] musicclass=default strategy=ringall joinempty=no leavwhenempty=yes ringinuse=no member=Local/queue@support

So a user dials in to the auto-attendant, hit’s 1 for support…

exten => 1,1,Set(GROUP()=support)
same  => 1,n,GotoIf($[${GROUP_COUNT(support)} > 1]?maxcalls)
same  => 1,n,Queue(support)
same  => 1,n(maxcalls),Playback(vm-goodbye) ; example - send to Voicemail etc...
same  => 1,n,Hangup()

And the queue is dealt with by…

exten => queue,1,Noop(Received call to extension ${EXTEN})
exten => queue,n,Dial(SIP/rs_leon&SIP/rs_yoshi&SIP/rs_mobile)
exten => queue,n,Hangup()

Seems to work - any issues that you guys can see ?



Ok - so the example above is slightly different to what I had described in that it sends the 2nd, 3rd, 4th etc caller straight to voicemail (or any other action I choose).

By changing it slightly, only one call is placed through at a time as described above…

Add “/n” to the end of the member line in queues.conf
And remove the GROUP rules.

I guess, the best example here would be a combination of the two!