Hints and Tips - Setting Queue Limits within a Dialogue


What is the best way to stop people coming into a Contact Centre Queue if there are too many people waiting or the wait time is greater than what we would like?

Great question, to which my typical response is “why on earth would you want to stop people from contacting you?”.

Which is something you should always ask before thinking about limiting contact with your customers. Imagine how you would feel, phoning an organisation only to be told, they cannot deal with your call as they are far too busy and then push the emphasis back to you to call back. The only issue is you have no idea when to do so as they are always busy. Not a great experience and we are all about improving the customers’ experiences.

This is why we have tools such as CallBack which offers you QueueBuster, to queue the call for the customer, to then get a call back when an Agent is available, or CallMeBack, which is a web form that customers can fill in to organise a time and day that suits them to speak to you (a very underutilised aspect of the system). - Remember CallBack is included as standard in all Liberty Converse Contact Centre systems.

But there are valid reasons for doing so, like having limited resources where utilising CallBack wouldn’t work. A great example could be a small service of say 5 staff, being overwhelmed because of annual leave or sickness or staff changes (You still need staff to be able to answer a CallBack). What then?

Well, the best way is to do some checking within your Dialogue before transferring the call to your ContactCentre. The reason to do this in the Dialogue is that you can:

  • Report on these calls within your Dialogue reports.

  • They do not affect your Contact Centre reports, because the call is not transferred to the Contact Centre.

So now you know about the best way, let’s look at how you can set this up.

The Dialogue

Here is my Dialogue, and as you can see, I have set up a pre-transfer check to see the current number of callers in a Queue and also the number of available Agents, the Dialogue then checks to see if it is within the Limits I have set and then either transfers to the Contact Centre or plays a messaging saying I can’t deal with the call and call back later.

So how did I do this? Let’s break it down - Just a note of caution, do not try this if you are unfamiliar with how Dialogues are created/edited. I recommend you take a look at the Dialogue Builder Essentials course within our eLearning platform if you want to know how to get started with Dialogue Builder.

Query Block

The first thing I needed to do was to add a Query Block - these blocks allow Dialogues to run queries on both internal Liberty Converse data but also external data sources (Advanced Dialogue Builder Course coming soon). To add a Query Block, use the Create a new… drop-down and select Query Block.

Doing so will bring up a new Query Bloc, I give this a meaningful name, and also add an optional description so that you know what the block is doing within the Dialogue.

Then I get to work selecting the options I need. (The image below is the final setup, take a look at the number descriptions under the image.)

  1. From the Service drop-down list, I select Contact Centre > Get Live Queue Queue Stats by Queue - the reason being is I want to check the number of live callers waiting in a particular Queue.

  2. Next, I need to tell the Input Parameters what Contact Centre Group and Queue to query. This needs to be exact, so the best way is to copy and paste the name of your Group and Queue from their respective settings.

  3. I need to store this lookup into a variable (variables are bits of data a Dialogue can reference). I call this %callersinsouthqueue%. Where % marks the start and end of the variable name.

  4. Finally I need to tell the Dialogue what to do next. Regardless of whether this query is successful or not I want the Dialogue to now check the number of available Agents by Skill are in my Contact Centre Group. So I set up the dialogue to Go To a new Query block and set my Title and click Ok and Ok to close.

Within my new Query block, much like the previous one, I give it a meaningful name (if not done so already), add in an optional description and then like before set the block parameters.

  1. This time I use the Contact Centre > Get Live Agent Stats by Skill - this will allow me to check the number of Agents currently available with the Skill I desire. (any Agents marked as Busy are not marked as Available, only those in a Ready/Interacting/Wrap up state are classed as Available).

  2. I need to tell the Input Parameters what Contact Centre Group and Skill to query. This needs to be exact, so the best way is to copy and paste the name of your Group and Skill from their respective settings.

  3. I store this lookup into a variable. I call this %availableagentssouth% (because the Skill name I am looking for is South).

  4. Again, regardless of whether this query is successful or not I want the Dialogue to now Go To a new Logic block so I can set and check against my parameters and route the caller as desired.

Logic Block

The Logic block is where you can now reference and apply conditions to your Variables. After creating the new Logic Block from my previous Query Block, I go into this and make sure I give this a meaningful name and a good optional description so I can see this from within the Dialogue.

  1. This is my first Condition. I want to check if the numbers waiting in the South Queue are greater than 10.

  2. This is my second Condition. I need the system to check if the number of Available Agents is less than 1.

If either (this is an OR statement, not an AND statement) of these two conditions match then I am going to route these calls to my Queue Capacity Reach message block.

  1. If the above two conditions are not met, then the call will automatically transfer to my Contact Centre and queue for an Agent.

So how do I call on these Variables?. First click on the Variable button, then select your Variable and next to this, will display the list of available options for you to utilise as a Condition. Select the one you want, in this case .Waiting.

Then using the middle drop-down list select the option you require, in this example, I choose the Greater than option.

Then I set the value, and what I want to do if this condition is met.

To add another Condition I click the Add Condition button at the bottom of my Logic block

I then do the same with my next variable

And again set my option and value, and set where I want this to go if this condition is met.

Things to note

There you have it, how you can use Query blocks to check the current live state of your Contact Centre and then store this information as a variable, then use a Logic block to apply conditions to then route your callers based on those conditions.

What you do with those callers is down to you, and of course, you should remember to set up your reporting outcomes and adjust your Dialogue Reports to that you can display this information. And don’t forget to check the complete Dialogue so that you load these new blocks and of course use the inbuilt Dialogue Testing IVR to ensure it works before you publish this to live.

Ideas on what to do with the callers

So knowing that you can do this, raises the question “what should you say or do to callers?” Here are some of my ideas but do comment below any ideas you may have or indeed want to know more about.

  • Play a message asking them to call back later (perhaps advising them when a good time maybe?).

  • Send them to CallBack.

  • Give them an Email Address or Website to contact instead.

  • Text them a link to your Liberty Connect Chat Bot/Website/Email to help them communicate with you differently.

Did you know Dialogue Builder can do that? - Maybe more of that on another post.

So let me know if you have any questions, ideas or additions.


Jonathan Redsell


Thanks for this really useful tip Jonathan.

We’ve experienced a cyber attack recently and we had to shut all of our phone lines down as office-based staff could not access our wifi network in public buildings. However, I had the same amount of staff sat at home that could still access our network and could have handled calls whilst office-based staff returned home.

Using this tip, we’ve now got a more dynamic approach to managing call demand during incidents like the above. However, we have also used it, and expanded some of the parameters , to manage demand during peak periods. Many of our services have seasonal peaks - we used to record ‘ad-hoc’ messages to say, as an example, “Council Tax bills have been posted this week so we are busier than usual and you may be waiting a while to speak to us”. I’ve now got ‘generic’ high demand messages that are triggered by service-specific parameter, that have been deployed on all dialogues. No more ad-hoc messages.

You’ve killed two birds with one stone - really appreciate this!

1 Like