Ring Group type behaviour in Queues - can it be done?


I have an AsteriskNOW 1.7.1 install updated to the latest modules as of 13.02.2011, configured as follows:

10 incoming routes with DDI’s
20 ring groups - 2 for each incoming route
30 extensions

Currently the PBX is set up to work as follows.

A call comes in from one of the incoming routes ROUTE-A and hits the corresponding ring group RING_GROUP-A1. This ring group contains 2 extensions and rings for 20 seconds. It then fails over to the second ring group RING_GROUP-A2, which contains the first 2 extensions and 3 others. This ring group continues to ring for a further 10 seconds then fails over to voicemail.

This is replicated for all 10 incoming routes and works with no problems.

However, what I now need to try and achieve is the ability for agents/extensions to log in and out so that instead of being permanently present in the ring group(s) for a particular incoming route, they can choose not to be, as they may not want their phone to ring for a particular route on certain days/times etc.

Now I know this can be achieved if I simply create 10 Queues for the incoming routes and get rid of the ring groups altogether. However, I need the ring group type behaviour of 2 extensions ringing first for a set period, then a further 3 extensions ringing alongside the first 2 extensions for a set period. There doesn’t appear to be any way in the Queue configuration to specify this.

My question is, can this be done?



I’ve never tried this and it would require some customization but you could experiment with the QUEUE_MAX_PENALTY / QUEUE_MIN_PENALTY channel variable in conjunction with the queuerules.conf.

This will require Asterisk 1.6 or above I believe.

Conceptually you would have say 2 agents with penalty 1 and the other 3 additional ones with penalty 2.

Then your queue call would look something like:


you would also have to associate some rules with that queue. Then your rules would look something like:

penaltychange => 20,2

And then you would setup your queue appropriately for agent ring times and overall timeout. Alternatively you could do this with:

Queue() ; configured to ring for 20 seconds
Queue(); configured to ring for 10 seconds

The examples are conceptual since as mentioned would not be possible with stock FreePBX. We are looking into adding some of this ability to 2.9, possibly the association if queuerules.conf rules though at the present there would be no module to configure a set of rules.

Hi Pjilippe

Thanks for the quick response. I think I’ll have to tell the customer they can have either rings groups with no logging in and out or queues with logging in and out but all the extensions will have to ring at once.

Either way I’m looking forward to seeing how FreePBX develops in 2.9!

Kind regards