System information
Advanced Queues
In this section we’ll take a look at some of the finer-grained queue controls, such as
options for controlling announcements and when callers should be placed into (or
removed from) the queue. We’ll also look at penalties and priorities, exploring how we
can control the agents in our queue by giving preference to a pool of agents to answer
the call and increase that pool dynamically based on the wait times in the queue. Finally,
we’ll look at using Local channels as queue members, which gives us the ability to
perform dialplan functionality prior to connecting the caller to an agent.
Priority Queue (Queue Weighting)
Sometimes you need to add people to a queue at a higher priority than that given to
other callers. Perhaps the caller has already spent time waiting in a queue, and an agent
has taken some information but realized the caller needed to be transferred to another
queue. In this case, to minimize the caller’s overall wait time, it might be desirable to
transfer the call to a priority queue that has a higher weight (and thus a higher prefer-
ence), so it will be answered quickly.
Setting a higher priority on a queue is done with the weight option. If you have two
queues with differing weights (e.g., support and support-priority), agents assigned to
both queues will be passed calls from the higher-priority queue in preference to calls
from the lower-priority queue. Those agents will not take any calls from the lower-
priority queue until the higher-priority queue is cleared. (Normally, there will be some
agents who are assigned only to the lower-priority queue, to ensure that those calls are
dealt with in a timely manner.) For example, if we place queue member James Shaw
into both the support and support-priority queues, callers in the support-priority
queue will have a preferred standing with James over callers in the support queue.
Let’s take a look at how we could make this work. First, we need to create two queues
that are identical except for the weight option. We can use a template for this to ensure
that the two queues remain identical if anything should need to change in the future:
[support_template](!)
musicclass=default
strategy=rrmemory
joinempty=no
leavewhenempty=yes
ringinuse=no
[support](support_template)
weight=0
[support-priority](support_template)
weight=10
With our queues configured (and subsequently reloaded using module reload
app_queue.so from the Asterisk console), we can now create two extensions to transfer
Advanced Queues | 283