Queue hierarchy


I have a customer with 21 offices, all with their own DID numbers (dental offices). They have a “call center” such that any calls that are not answered by the front desk of one of the offices get a “second chance” to talk to someone in the call center that can schedule appointments, etc. We were doing this with a simple cascading ring group, i.e. one ring group rings the appropriate front desk phones, then fails to a ring group of call center phones. We just discovered this has a large problem - if the call center phones are all ringing, the next call just fails back to the front desk ring group and ends up in voicemail immediately.

I thought I could solve this with a queue. The call center ring group is now a queue, and the agents login and logout at will, and all is working well, but… if they don’t get to the caller, the call follows the failover destination of the queue, instead of falling back to the ring group that entered the queue. I haven’t found a way to make it work like the old ring group.

My next idea was to create a hierarchy of queues, and am looking for some advice here. If I create a queue for every office, can I have a queue that they all feed into somehow, and have the agents login once to get the calls? Or do they literally have to login to all of the queues every morning? This setup would allow me to specify a different failover destination for every queue, and the voicemails would end up at the right desks.

Any other ideas?


Jeff LaCoursiere

Could you not just keep the call in queue until its answered? That’s one of the benefits in my opinion, it can keep ringing until answered. If you had multiple queues for whatever reason, you can log in and out all at the same time. Take a look at the manual.


Lastly, well worth the cost is the Queues Pro commercial module. IT lets you do some interesting things from the GUI, including specialized failover destinations and virtual queuing. Take a look:


Queue pro would let you do this with virtual queue feature it has.

After some noodling I came up with a solution that I think is at least the simplest, though perhaps a bit of a pain to maintain. I created a “custom destination” and wrote some dialplan code to redirect the call to the appropriate front desk voicemailbox based on the DNID information. That is now the failover destination of the single queue and also the destination for the breakout IVR. Works a charm! I just need to maintain the mapping of DIDs and voicemail boxes in the extensions_custom.conf file.

There is always a way, eh?



A few weeks ago, there was some really good discussion about creating Modules for FreePBX.

I have two suggestions for you in this vain:

  1. Create a module to manage the mapping.
  2. Put the extension/DID mapping into the Asterisk Database so you don’t have to modify your custom dial plan whenever a number changes.

Of course, the implied 3) is to make is available as a custom module, but that’s kind of up to you.

That’s a really good idea - we will look into it. Would be happy to publish as a custom module once we have it.



Doh! I just read the queue docs and realized I may be making this way more difficult then it needs to be. Apparently *45 logs you into ALL queues you are a member of, so I simply need to make a queue for each office, each queue having its own failover destination as I wanted. This also implies that I need a breakout IVR for each queue as well, but that isn’t the end of the world.

I guess my question is… if all queues have the same (default) priority, do the callers reach agents in the correct order between queues? I would assume so, but would be good to confirm before I go creating all this.



There is no reason you couldn’t make it so. I don’t see why you would need breakout IVR. Can you explain further what you are trying to do from origination to end?

The breakout IVR is to let the caller choose to leave a message rather than continue holding. I have tested it fairly well in the past few days - its slick. I defined the IVR with a single option ‘1’ that goes straight to the appropriate voicemailbox, and they can press that ‘1’ at any time, even during the hold music.

The owners were very upset that hold times were > 8 minutes for a majority of calls, and the callers that ended up in the queue were basically forced to wait or hangup, and MANY of them hungup. Much better to at least get a message from them.

The IVR announcement is a short blurb that basically says “We’re sorry - we are still working with other customers. Please press 1 at any time to leave a message, or continue holding and your call will be answered in the order it was received”. I have it playing every 30 seconds…



There is also a queue callback, I think with Queues Pro, very nice option for customers instead of waiting on hold.


As a caller, it’s kinda annoying to frequently. I would play it every 2 minutes or so.

1 Like

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