7. Queues In Depth

In the last article it was mentioned that a full explanation of Queues was beyond the scope of the article. This article aims to provide everything you should practically need to know regarding queues, when to use them over Ring Groups, and the differences in ring strategies.

To queue, or not to queue?

Queues and Ring Groups can largely be used to achieve the same end goal: having an incoming call ring a group or series of extensions. The first thing you should do when considering adding either is to ask yourself a few quick questions to determine which one would be a better fit for the customer:

  1. Does the call always need to ring to the same people? if not, use a queue.
  2. Do you need to report hold time to agents or call position to callers? If so, use a queue.
  3. Will you need to specify a maximum incoming call capacity before rolling calls to an alternate destination? If so, use a queue.
  4. Do you require the fairest and/or most equal call distribution among agents? If so, use a queue.

There are additional edge cases, however these questions will largely determine whether you implement a queue or a ring group.

Why not always use queues?

Because queues can technically perform everything that a ring group can, perhaps you’re wondering why we don’t just disable ring groups and use queues exclusively. The answer is that because of the plethora of options available with queues, a substantially higher degree of human error is often present and configuration changes tend to take much longer. As a general rule, if you do not have a specific need for a queue just use a ring group.

Detailed Queue Configuration

Note that this section will not cover every possible queue configuration option, but it will cover most use cases you’ll encounter.

The first option you’ll find when adding a queue is for defining how agents will log into it. You can specify any series of digits here (preferably a short one) and dynamic agents will be able to dial that series of digits followed by the star key (*) to log into the queue or the star key twice (**) to log out. Note that the ability for agents to log in and out is the most common use case for queues among most Ringfree customers so this will often be one of the first things configured when adding a queue.

Moving on you’ll see the Queue Name (which should follow standard Ringfree naming conventions) and then a Queue Password. The password is optional and is used when you want to further restrict the ability of agents to log into specific queues. Due to availability of the Restrict Dynamic Agents feature (explained below), this option is rarely used.

Call Confirm and Call Confirm Announce are for when you need to play a message to the agent prior to receiving the call. Call Confirm enables the feature and Call Confirm Announce allows you to specify which system recording you’d like to play. This feature is especially useful in situations where extensions forward to numbers outside the phone system.

CID Name Prefix and Wait Time Prefix allow you to prefix the caller ID info for the incoming call with various bits of data. The CID prefix allows any arbitrary string whereas the wait time prefix will prepend the number of minutes the caller has been waiting (rounded to the nearest minute).

Alert Info is used in conjunction with the phone provisioning servers to provide a custom ring tone for calls coming from this queue.

Static Agents are extensions which are always in the queue and can not be logged out. Dynamic Agents are extensions which can be logged in and out. By default any other extension within the phone system can also be logged into the queue, however the Restrict Dynamic Agents option can be enabled to restrict the queue to only those extensions listed.

Agent Restrictions allows you to override the normal extension behavior for calls routed from the queue. There are three options here:

  1. Call As Dialed: Default Extension Behavior
  2. No Follow Me or Call Forward: This overrides all of the forwarding and Follow Me settings for the extensions.
  3. Extensions Only: This does the same as the above, but also ignores any non-extension number in the agent list.

Skip Busy Agents is an option that should almost always be enabled when configuring a queue. It tells the queue to skip any agents that are already on the phone. Given that most extensions have features such as call waiting enabled, it’s possible to have multiple incoming calls to the same extension from the same queue when this is not enabled.

Most of the rest of the configuration options for queues are extremely self explanatory and have ample documentation available via the pop-over text within FreePBX. The other major component that does deserve some additional clarification is Ring Strategies.

Ring Strategies

Ring strategies define the behavior of how an incoming call rings a group or list of numbers. You’ll find them in use in a few places throughout FreePBX, most notably queues, ring groups, and Follow Me. Note that queues offer different ring strategies than ring groups and Follow Me. Different ring strategies can have wildly different ramifications depending on the use case, so it’s extremely important to both understand all of the available options and be able to work with a customer to find the best solution for their needs. Detailed descriptions of the various ring strategies can be found in the pop-over text in the FreePBX interface.

There’s one major caveat when it comes to ring strategies: in the version of FreePBX most commonly deployed within Ringfree, ring strategies other than ringall can sometimes behave erratically. That said, it’s generally wise to test a ring strategy prior to implementing it in a live customer PBX. Testing can easily be done by adding a few temporary extensions, sticking them all in a temporary queue, and registering them all to a desktop sip client like Zoiper.