Queues

FreePBX - Applications Menu

What is the Queues Module used for?

The Queues Module is a more advanced version of the Ring Groups Module.  Like the Ring Groups Module, the Queues Module is used to create an extension number that your users can dial in order to ring multiple extensions at the same time.  It also creates a destination to which you can send calls that will ring those multiple extensions.

However, you can program a Queue with some additional features.  Individual extensions (called Dynamic Members) can be permitted to log-in and log-out of the Queue, so that when the phone is not occupied by a staff member who can answer calls, that phone will not ring.  You can program the Queue to route each call to one open extension or all extensions, and use other ring strategies as well.  A password can be required before a caller can enter a Queue.  When a caller enters a queue, the system can play a music on hold recording instead of the usual ringing sound.  Callers can hear expected wait times.  They can be given the option to exit the Queue and have their call routed to another destination.  Calls can time-out so that if the call is not answered in a certain amount of time, the call will go somewhere else.  

For example, you could create a Queue that will allow your local phones to dial 600, and then the call will be routed to the next Queue member that becomes free.  While the call is waiting, the caller can hear a special music on hold recording that is interrupted regularly with hold times, and with the option to press 5 and then leave a message.

How is the Queues Module related to the other Modules?

Because the Queues module creates a destination to which you can route calls, the Queues Module is related to the any module that can route calls to a destination, including the Inbound Routes Module, the IVR Module, the Time Conditions Module, etc.  Because the Queues module is used to Ring Extensions, it is also related to the Extensions Module.  Because you can set an optional destination to send calls to if nobody picks up after a certain amount of time, the Queues Module is also related to any Module that can be used as a destination for a call.

Introduction

Automatic Call Distribution (ACD) or call queuing provides a way for a PBX to queue incoming calls. A queue is a “stack” or “line” of calls that need to be answered. When a call is directed into the queue, by default, the calls are answered in a first in, first out order. Call queues are useful for when you have more callers than people available to answer calls. Callers placed into a queue will hear music or advertising until someone is available to answer their call. The Queues module allows you to create and design queues that allow callers to speak with agents as quickly and painlessly as possible.

  • Queues Consist of:
  • Callers - Incoming calls being placed in the queue
  • Agents - Members that answer the queue calls (extensions or users that login as agents)
  • Ring Strategy - A strategy for how to handle the queue and divide calls between queue members
  • MoH - Music or advertisements played for callers while waiting in the queue
  • Announcements - Played for callers and members

Adding a Queue

Base options

Queue Number

Use this number to dial into the queue or transfer callers to this number to put them into the queue.

Icon
Agent Queue Login in Toggle Mode

Agents can log into all queues in which they are members by dialing “*45” and dialing it again to log out. The system will give them voice prompts to the status of their queue login.

  • *45 = Log in to all queues
  • *45 = Log out of all queue

 

Queue Name

Give the queue a brief name to help you identify it.

Queue Password

You can require agents to enter a password before they can login to this queue. The password is only used when logging in with the legacy queue * code. When using the toggle codes, you must use the “Restrict Dynamic Agents” option in conjunction with the dynamic members list to control access.

Generate Device Hints

If checked, individual hints and dialplans will be generated for each SIP and IAX2 device that could be part of this queue. These are used in conjunction with programmable BLF phone buttons to log in and out of a queue and generate BLF status as to the current state.

The format is: 45ddd*qqq

Where “45” is the currently defined toggle feature code, “ddd” is the device number (typically the same as the extension number) and “qqq” is this queue’s number. By default this should be off unless you are using non Aastra phones and want to program BLF buttons that will let you log in and out of the queue. With Aastra phones, this is handled through a XML application on your phone called “ACD Agents.” This option is not required to be on. If enabled, it will add more time to reloads and can affect large call centers with more overhead.

Call Confirm

If checked, any queue member that is actually an outside telephone number, any extensions Follow-Me or call forwarding that are pursued and leave the PBX will be forced into call confirmation mode where the member must acknowledge the call before it is answered and delivered.

Call Confirm Announce

Announcement played to the queue member announcing the queue call and requesting confirmation prior to answering. If set to default, the standard call confirmation default message will be played unless the member is reached through a Follow-Me and there is an alternate message provided in the Follow-Me. This message will override any other message specified. To add additional recordings please use the “System Recordings” MENU.

CID Name Prefix

You can optionally prefix the caller ID name of callers to the queue. ie: If you prefix with “Sales:,” a call from John Doe would display as “Sales:John doe” on the extensions that ring.

Wait Time Prefix

When set to “Yes,” the CID name will be prefixed with the total wait time in the queue so the answering agent is aware how long they have been waiting. It will be rounded to the nearest minute, in the form of “Mnn:” where “nn” is the number of minutes. If the call is subsequently transferred, the wait time will reflect the time since it first entered the queue or reset if the call is transferred to another queue with this feature set.

Alert Info

This can be used for distinctive ring with SIP devices.

Static Agents

  • Static agents are extensions that are assumed to always be in the queue. Static agents do not need to “log in” to the queue, and cannot “log out” of the queue.
  • List extensions to ring, one per line.
  • You can include an extension on a remote system or an external number (outbound routing must contain a valid route for external numbers). You can put a “,” after the agent followed by a penalty value.
Icon

An advanced mode has been added which allows you to prefix an agent number with S,X,Z,D or A. This will force the agent number to be dialed as an Asterisk device of type SIP, IAX2, XAP, or DAHDI respectively. This mode is for advanced users and can cause known issues in the PBX as you are by-passing the normal dialplan. If your “Agent Restrictions” are not set to “Extension Only” you will have problems with subsequent transfers to voicemail. Other issues may also exist.

Extension Quick Pick

Choose an extension to append to the end of the static agents list above.

Dynamic Members

Dynamic members are extensions or callback numbers that can log in and out of the queue. When a member logs in to a queue, their penalty in the queue will be specified here. Extensions included here will NOT automatically be logged in to the queue.

Extension Quick Pick

Choose an extension to append to the end of the dynamic member list above.

Restrict Dynamic Agents

Restrict dynamic queue member logins to only those listed in the dynamic members list above. When set to “Yes,” members not listed will be DENIED ACCESS to the queue.

Agent Restrictions

  • When set to “Call as Dialled,” the queue will call an extension just as if the queue were another user. Any Follow-Me or call forward states active on the extension will result in the queue call following these call paths.
  • When set to “No Follow-Me or Call Forward,” all agents that are extensions on the system will be limited to ringing their extensions only. Follow-Me and call forward settings will be ignored. Any other agent will be called as dialled. This behaviour is similar to how extensions are dialled in ring groups.
  • When set to “Extensions Only,” the queue will dial extensions as described for “No Follow-Me or Call Forward.” Any other number entered for an agent that is NOT a valid extension will be ignored. No error checking is provided when entering a static agent or when logging on as a dynamic agent. The call will simply be blocked when the queue tries to call it. For dynamic agents, see the “Agents Regex Filer” to provide some validation.

Queue General Options

Ring Strategy

ringall

Ring all available agents until someone answers (default). If using penalties, all agents will start with a penalty of 0 for the defined ring time as defined in the “Agent Timeout” setting below. Then all agents with a 1,2,3 and so forth.

least recent

Ring agent who was least recently called by this queue.

fewest calls

Ring the agent with the fewest completed calls from this queue.

random

Ring random agent.

rrmemory

Round robin with memory (remember where we left off last ring pass).

rrordered

Same as rrmemory, except the queue member order from config file is preserved.

linear

Rings agents in the order specified (for dynamic agents in the order they logged in).

wrandom

Random, using the member’s penalty as a weighting factor.

Autofill

If this is checked, and multiple agents are available, the PBX will send one call to each waiting agent (depending on the ring strategy). Otherwise, it will hold all calls while it tries to find an agent for the top call in the queue making other calls wait.

Skip Busy Agents
  • When set to “Yes,” agents who are on an occupied phone will be skipped as if the line were returning busy. This means that call waiting or multi-line phones will not be presented with the call. In various hunt style ring strategies, the next agent will be attempted.
  • When set to “Yes + (ringinuse=no),” the queue configuration flag “ringinuse-no” is set for this queue in addition to the phone’s device status being monitored. This results in the queue tracking remote agents (agents who are a remote PSTN phone, called through Follow-Me and other means) as well as PBX connected agents. So, the queue will not attempt to send another call if they are already on a call from any queue.
  • When set to “Queue calls only (ringinuse=no),” the queue configuration flag “ringinuse=no” is set for this queue also, but the device status of locally connected agents is not monitored. The behavior is to limit an agent belonging to one or more queues to a single queue call. If they are occupied from other calls, such as outbound calls they initiated, the queue will consider them available and ring them since the device state is not monitored with this option.
Icon

WARNING: When using the setting that set the “ringinuse=no” flag, there is a NEGATIVE side effect. An agent who transfers a queue call will remain unavailable by any queue until that call is terminated as the call still appears as “inuse” to the queue UNLESS “Agent Restrictions” is set to “Extensions Only.”

Queue Weight

Gives queues a “weight” option to ensure calls waiting in a higher priority queue will deliver its calls first if there are agents common to both queues.

Music on Hold Class

MoH played to the caller while they wait in line for an available agent. Choose “inherit” if you want the MoH class to be what is currently selected, such as by the inbound route. “MoH Only” will play music until the agent answers. Agent ringing will play MoH until an agent’s phone is presented with the call and is ringing. If they don’t answer, MoH will return. “Ring Only” makes callers hear a ringing tone instead of MoH, ignoring any MoH class selected as well as any configured periodic announcements. This music is defined in the “Music on Hold” menu.

Join Announcement

Announcement played to callers prior to joining the queue. This can be skipped if there are agents ready to answer a call (meaning they still may be wrapping up from a previous call) or when they are free to answer the call right now. To add additional recordings please use the “System Recordings” menu.

Call Recording

List recording format options.

  • wav49 - Small size, good quality, format will have a .WAV extension
  • wav - An uncompressed sound format with a .wav extension, file is very large
  • gsm - About the same file size and audio quality as wav49, may not be supported on many devices
  • No - No recording action will be defined here
Recording Mode

Choose to “Include Hold time” in the recording so it starts as soon as they enter the queue, or to defer recording until “After Answered” and the call is bridged with a queue member.

Caller Volume Adjustment

Adjust the recording volume of the caller +4 to -4.

Agent Volume Adjustment

Adjust the recording volume of the agent +4 to -4.

Mark Calls Answered Elsewhere

Enable this option and all calls will be marked as “answered elsewhere” when cancelled. The effect is that missed queue calls are NOT shown on the phone (if the phone supports it).

Timing and Agent Options

Max Wait Time

Defines the maximum number of seconds a caller can wait in a queue before being pulled out. (0 for unlimited).

Max Wait Time Mode

Set the PBX time out priority. In “Strict” mode, when the “Max Wait Time” of a caller is hit, they will be pulled out of the queue immediately. In “Loose” mode, if a queue member is currently ringing with this call, then the PBX will wait until the queue stops ringing this queue member or otherwise the call is rejected by the queue member before taking the caller out of the queue. This means that the “Max Wait Time” could be as long as “Max Wait Time” + “Agent Timeout” combined.

Agent Timeout

The number of seconds an agent’s phone can ring before we consider it a timeout. Unlimited or other timeout values may still be limited by system ringtime or individual extension defaults.

Agent Timeout Restart

If “timeoutrestart” is set ot “Yes,” then the timeout for an agent to answer is reset if a BUSY or CONGESTION is received. This can be useful if agents are able to cancel a call with reject or similar.

Retry

The number of seconds we wait before trying all the phones again. Choosing “No Retry” will exit the queue and go to the failover destination as soon as the first attempted agent times-out. Additional agents will not be attempted.

Wrap-Up-Time

After a successful call, how many seconds to wait before sending a potentially free agent another call (default is 0, or no delay). You can also set the “Honor Wrapup Time” across queues on the Advanced Setting page so that this is honored across queues for members logged on to multiple queues.

Member Delay

If you wish to have a delay before the member is connected to the caller (or before the member hears any announcement messages), set this to the number of seconds to delay.

Agent Announcement

Announcement played to the agent prior to bridging in the caller.

Icon

Example: “The following call is from the Sales Queue” or “This call is from the Technical Support Queue.”

To add additional recordings, please use the “System Recording” MENU. Compound recordings composed of 2 or more sound files are not displayed as options since this feature cannot accept such recordings.

Report Hold Time

If you wish to report the caller’s hold time to the caller before they are connected, set this to “Yes.”

Auto Pause

Auto pause an agent in this queue (or all queues they are a member of) if they don’t answer a call. Specific behavior can be modified by the “Auto Pause Delay” as well as “Auto Pause Busy/Unavailable” settings.

Auto Pause on Busy

When set to “Yes,” agents’ devices that report busy upon a call attempt will be considered as a missed call and auto paused immediately or after the auto pause delay, if configured.

Auto Pause on Unavailable

When set to “Yes,” agents’ devices that report congestion upon a call attempt will be considered as a missed call and auto paused immediately or after the auto pause delay if configured.

Auto Pause Delay

This setting will delay the auto pause of an agent by auto pause delay seconds from when it last took a call. For example, if this is set to 2 minutes and a new call is presented to the agent 1.5 minutes after they last took a call, they will not be auto paused if they don’t answer the call. If presented with a call 2 minutes or later after answering the last call, they will then be auto paused. If they have taken no calls, this will have no affect.

Capacity Options

Max Callers

Define the maximum number of people waiting in the queue (0 for unlimited).

Join Empty

Determines if new callers will be admitted to the queue. If not, the fail over destination will be immediately pursued. The options include:

  • Yes - Always allows the caller to join the queue.
  • Strict - Same as “Yes,” but more strict. Simply speaking, if no agent could answer the phone then don’t admit them. If agents are inuse or ringing someone else, the caller will still be admitted.
  • Ultra Strict - Same as “Strict” plus a queue member must be able to answer the phone NOW to let them in. Simply speaking, available agents that could answer but are currently on the phone or ringing on behalf of another caller will be considered unavailable.
  • No - Callers will not be admitted if all agents are paused, show an invalid state for their device or have penalty values less then “QUEUE_MAX_PENALTY” (not currently set in PBX dialplan).
  • Loose - Same as “NO,” except callers will be admitted if there are paused agents who could become available.

Leave Empty

Determines if callers should be exited prematurely from the queue in situations where it appears no one is currently available to take the call. The options include:

  • Yes - Callers will exit if all agents are paused, show an invalid state for their device or have penalty values less than “QUE_MAX PENALTY” (not currently set in PBX Dialplan).
  • Strict - Same as “Yes,” but more strict. Simply speaking, if no agent could answer the phone, then have them leave the queue. If agents are inuse or ringing someone else, the caller will still be held.
  • Ultra Strict - Same as “Strict” plus a queue member must be able to answer the phone NOW to let them remain. Simply speaking, any available agents that could answer but are currently on the phone or ringing on behalf of another caller will be considered unavailable.
  • Loose - Same as “Yes,” except callers will remain in the queue if there are paused agents who could become available.
  • No - Never have a caller leave the queue until the “Max Wait Time” has expired.

Penalty Members Limit

A limit can be set to disregard penalty settings, allowing all members to be tried, when the queue has too few members. No penalty will be weighed in if there are only “X” or fewer queue members.

Queue Announcement Options

Frequency

Define how often to announce queue position and estimated holdtime (0 to disable announcements).

Announce Position

Announce position of caller in the queue.

Announce Hold Time

Include the estimated hold time in position announcements: either “Yes,” “No” or “Only once.” Hold time will not be announced if <1 minute.

IVR Break Out Menu

You can optionally present an existing IVR as a “Break Out” menu.

This IVR must only contain single-digit “dialed options.” The recording set for the IVR will be played at intervals specified in “Repeat Frequency” below.

Repeat Frequency

How often to announce a voice menu to the caller (0 to disable announcements).

Events Stats and Advanced

Event When Called

When this option is set to “Yes,” the following manager events will be generated: AgentCalled, AgentDump, AgentConnect and AgentComplete. This is needed if you want to use QXact Reports, Xactview or iSymphony.

Member Status Event

When set to “Yes,” the following manager event will be generated: QueueMemberStatus.

Service Level

Used for service level statistics (calls answered within service level time frame).

Agent Regex Filter

Provides an optional regex expression that will be applied against the agent callback number. If the callback number does not pass the regex filter, then it will be treated as invalid. This can be used to restrict agents to extensions within a range, not allow callbacks to included keys like “*” or any other use that may be appropriate.

An example input might be:

  • ^([2-4][0-9]{3})$- This would restrict agents to extensions 2000-4999.
  • ^([0-9]+)$- This would allow any number of length, but restrict the * key.
Icon

WARNING: Make sure you understand what you are doing or otherwise leave this blank!

Fail Over Destination

Define a destination to send the caller when the call times out or exited by a rule from above.

Other Option Sections

Other Modules such as QXact Reports, Xactview or iSymphony may hook in to the queues module and have their own options. These modules will vary by install and use case and are covered under the umbrella of their own documentation.