Automatic Call Distribution (ACD), or call queuing, provides a
way for a PBX to queue up incoming calls from a group of users: it
aggregates multiple calls into a holding pattern and assigns each call a
rank that determines the order in which that call should be delivered to an
available agent (typically, first in first out). When an agent becomes
available, the highest-ranked caller in the queue is delivered to that
agent, and everyone else moves up a rank.

If you have ever called an organization and heard
“all of our representatives are busy,” you have experienced ACD. The
advantage of ACD to the callers is that they don’t have to keep dialing back
in an attempt to reach someone, and the advantages to the organizations are
that they are able to better service their customers and to temporarily
handle situations where there are more callers than there are
agents.[126]

Note

There are two types of call centers: inbound and outbound. ACD refers to the technology that
handles inbound call centers, whereas the term Predictive Dialer refers
to the technology that handles outbound call centers. In this book we
will primarily focus on inbound calling.

We’ve all been frustrated by poorly designed and
managed queues: enduring hold music from a radio that isn’t in tune,
mind-numbing wait times, and pointless messages that tell you every 20
seconds how important your call is, despite that fact that you’ve been
waiting for 30 minutes and have heard the message so many times you can
quote it from memory. From a customer service perspective, queue design may
be one of the most important aspects of your telephone system. As with an
automated attendant, what must be kept in mind above all else is that
your callers are not interested in holding in a
queue. They called because they want to talk to
you. All your design decisions must keep this crucial fact
front-and-center in your mind: people want to talk to other people; not to
your phone system.[127]

The purpose of this chapter is to teach you how to
create and design queues that get callers to their intended destinations as
quickly and painlessly as possible.

Note

In this chapter, we may flip back and forth
between the usage of the terms queue
members and agents. Unless we are talking about agents logged in via chan_agent (using AgentLogin()), we’re almost certainly talking
about queue members as added via AddQueueMember() or the CLI commands (which
we’ll discuss in this chapter). Just know that there is a difference in
Asterisk between an agent and a queue
member, but that we’ll use the term agent
loosely to simply describe an endpoint as called by a Queue().

[126] It is a common misconception that a queue can allow you to handle
more calls. This is not strictly true, in that your callers will still
want to speak to a live person, and they will only be willing to wait
for so long. In other words, if you are short-staffed, your queue could
end up being nothing more than an obstacle to your callers. The ideal
queue is invisible to the callers, since their calls get answered
immediately without them having to hold.

[127] There are several books available that discuss call center metrics
and available queuing strategies, such as James C. Abbott’s
The Executive Guide to Call Center Metrics (Robert
Houston Smith).