Queue (AQA0)

Description

A call queue can hold several incoming calls and dispatch them to the available agents, receptionists or users according to a well defined call distribution policy.

Release notes

Version 3.5.0 - Early deployment
  • Improvement: Join/leave empty granularity (PC-120)
  • Dependency:
    • SMP v1.4+
    • Communication Server >= 3.24.0
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.1.0

Version 3.4.0 - Early deployment
  • Feature: Allow the caller to start a callflow during holdtime (M0022551)
  • Dependency:
    • SMP v1.4+
    • Communication Server >= 3.19.0 (backport in 3.3.14)
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.1.0

Version 3.3.1 - Early deployment
  • Bugfix: The number of static members were limited to 40 (M0)
  • Dependency:
    • SMP v1.4+
    • Communication Server >= 3.19.0 (backport in 3.3.14)
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.1.0

Version 3.3.0 - Early deployment
  • Improvement: In case of ringall ring directly member when they get available (M18271)
  • Dependency:
    • SMP v1.4+
    • Communication Server >= 3.19.0 (backport in 3.3.14)
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.1.0

Version 3.2.0 - Early deployment
  • Feature: Queue rules (M16973)
  • Dependency:
    • SMP v1.4+
    • Communication Server >= 2
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.1.0

Version 3.1.1 - Early deployment
  • Bugfix: Allow analogue ZDA devices registered in the queue to be called. (M11037)
  • Dependency:
    • SMP v1.4+
    • Communication Server >= 2
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.0.0

Version 3.1.0 - Early deployment
  • Improvement: Queue information variables are available. (M11167)
  • Dependency:
    • SMP v1.4+
    • Communication Server >= 2
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.0.0

Version 3.0.1 - General deployment
  • Feature: New option "loose" for "Join when empty" and "Leave when empty" parameters
  • Dependency:
    • SMP v1.4+
    • Communication Server 2
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.0.0

Version 3.0.0 - General deployment
  • Feature: Removed roundrobin strategy, replaced by linear and added wrandom (M6170)
  • Feature: Added support for queue weight on Communication Server (M5485)
  • Improvement: Easier selection of multiple permanent members (M4771)
  • Improvement: Do not show Device categories in Permanent members selection box on SMP 4.10 and higher (M4771)
  • Improvement: Possible to modify the order of permanent members (M4771)
  • Improvement: Possible to configure a penalty for each permanent member (M4771)
  • Limitation: Improvements only available with SMP v4.10+ (M4771)
  • Limitation: Active-active queue management not supported
  • Dependency:
    • SMP v1.4+
    • Communication Server 2
    • SOP API module v2.22+
    • Queue Action >= 2.0.0
    • QueueRule Resource >= 1.0.0

Version 2.3.0 - General deployment
  • Bugfix: queues.ini was not always (re)generated correctly (M4142)
  • Feature: New option "loose" for "Join when empty" and "Leave when empty" parameters
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.28.7
    • SOP API module v2.22+
    • Cluster & Active-Active Support v1.4.0+ (for active-active queue management)

Version 2.2 - General deployment
  • Feature: Active-active queue management (M0003601)
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.28.7
    • SOP API module v2.22+
    • Cluster & Active-Active Support v1.4.0+ (for active-active queue management)

Version 2.1 - General deployment
  • Improvement: Increased permanent members select box size.
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.28.7
    • SOP API module v2.22+

Version 2.0 - General deployment
  • Improvement: removed the deprecated 'callflow X' fields.
  • Improvement: The queue resources will only be created on the SOPs that have been configured.
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.28.7
    • SOP API module v2.22+

Version 1.10 - General deployment
  • Feature: add device-idle-time: minimum time a phone needs to be idle before a new call is offered to it (M0003012)
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.28.7
    • SOP API module v2.22+

Version 1.9 - General deployment
  • Feature: configurable leave when empty policy (M0002958)
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.19+
    • SOP API module v2.22+

Version 1.8 - General deployment
  • Potential update impact level 2 DONE: in the event this update contains a bug, it might have critical impact. Respect dependencies and retest your most important callflows and applicative integrations.: Queues are only generated on the specified SOPs. Please make sure the SOP1 and SOP2 fields are correctly configured before applying changes.
  • Feature: Queue only created on primary and secondary SOP (M0002511)
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.19+
    • SOP API module v2.22+

Version 1.7 - General deployment
  • Feature: member wrap up time (238)
  • cleaned up debug log
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.19+
    • SOP API module v2.22+

Version 1.6 - General deployment
  • Implements input validation for queue names: refusing special characters and white spaces, and refusing queues with duplicate names.
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.19+
    • SOP API module v2.22+

Version 1.5 - General deployment
  • Added optional periodic announcement
  • Added optional position announcement combined with optional hold time announcement
  • Default 'Join when empty policy' has been set to 'strict'
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.19+
    • SOP API module v2.22+

Version 1.4 - General deployment
  • Improved agent state notification for applications such as the net.Console
  • Added IAX and analog support for permanent members
  • Added the possibility to force the scanning of all the members in case of a BUSY, CONGESTION or NOANSWER reply from an agent
  • Dependency:
    • SMP v1.4+
    • Asterisk 1.2x module v2.19+
    • SOP API module v2.22+

Version 1.3 - General deployment
  • Improved call distribution avoiding a single Ringing member from blocking the queue for the other members
  • Option added to decide whether a member can receive a second call when already in use (ring in use).
  • Dependency:
    • SMP >= v1.4
    • Asterisk 1.2x >= v2.15

Version 1.2 - General deployment
  • allow not to specify musiconhold so that it can be set from the callflow

Version 1.1 - General deployment

Version 1.00 - General deployment

Version 0.2 - General deployment
  • Allow the possibility to set the music-on-hold in the callflow

Version 0.1 - General deployment
  • Minor music-on-hold improvements

Version 0.0 - General deployment
  • Initial version

Resource configuration interface

GUI unavailable.

Resource configuration parameters

  • Queue name: the queue name is obligatory, it must be unique on the cluster and it should only contain letters and digits (alphanumerical characters). Underscores are allowed but no special characters or white space are permitted.
  • Music on hold: specify the folder in the File Manager from which to play music(s) on hold (drop down list). If you prefer to specify the music on hold within the callflow, select '(set in callflow)'. More information over MOH configuration can be found here.
  • Ring strategy: calls are distributed among the members using one of several strategies. Penalties are taken into account in all ring strategies:
    • ringall (default): ring all available agents until one answers. If the members have different penalties, only the members with the lowest penalty will ring. The members with higher penalties are called only if there isn't any available member with lower penalty.
    • random: send randomly the call to any member
    • rrmemory: take turns ringing each available interface for new incoming calls in the order they were added to the queue. The next phone will ring in case there is a new call, or because an agent did not answer the current call to be distributed. Last phone that rang is kept in memory. Every call to distribute will go to the next agent.
    • leastrecent: ring agent which was least recently called by this queue
    • fewestcalls: send the call to member having handled the fewest amount of calls
    • roundrobin (deprecated): take turns ringing each available agent for new incoming calls in the order they were added to the queue. With Advanced Call Distribution strategy disabled, similar behaviour than rrmemory (slower and impact of reject). With Advanced Call Distribution strategy enabled, if last call timed out on one agent, a new call will go to agent following first one who did not answer (even if that agent answered last call). If configured with Communication Server 2 the strategy applied will be rrmemory.
    • linear (new in 3.0.0): rings members in the order specified in the resource. If you use dynamic members, the members will be rung in the order in which they were added.
    • wrandom (weighted random - new in 3.0.0): rings a random member, but uses the member's penalty as a weight when calculating their metric. So a member with penalty 0 will have a metric somewhere between 0 and 1000, and a member with penalty 1 will have a metric between 0 and 2000, and a member with penalty 2 will have a metric between 0 and 3000. Please note, if using this strategy, the member penalty is not the same as when using other queue strategies. It is only used as a weight for calculating metric. Adding a metric means that a member will get a higher or lower chance to be selected instead of being completely randomly selected.
  • Timers:
    • Member ringing time: time in seconds during which a queue member is called. After the timeout, the retry timer is started
    • Member wrap up time: time in seconds during which a queue member does not receive any call after answering one
    • Ringall retry: When the ringall strategy is used, the time after which the queue will check if there is no newly idle agent to call
  • Retry: time in seconds during which the queue is waiting before calling a new member. The minimal value is 1. The default value is 5 if no valid value has been provided.
  • Weight: Integer that defines the queue priority regarding other queues. The default value is 0. See the "Queue Weights" section below for more information. This feature is available only on Communication Server.
  • Callflow x (Deprecated!): by selecting a callflow, all primary phones of the extension currently in this callflow are being placed as members in the queue. This selection is only based upon the callflow as defined in the SMP and is not adapted in realtime following a status change by a member on the SOP.
  • Permanent members: select the members (phones) to be placed in the queue
  • Member availability criteria
    • Criteria used on join: Callers will only enter the queue if there are available members, based on the criteria listed here. Empty means they will enter even if there is no available member.
    • Criteria used on leave: Caller will leave the queue if there are no more available members, based on the criteria listed here. Empty means they will stay in the queue even if there are no available members.
    • See below for the list of possible criteria.
  • Ring in use policy: set to 'no' if you want the queue to avoid sending calls to members whose phones are known to be 'in use'
  • Advanced call distribution strategy: Apply an advanced call distribution strategy that will distribute the calls more evenly over the available members. If an agent rejects a call, the answer-timeout will be reset. It also changes the behaviour of the roundrobin strategy (see above).
  • Announcements: Various announcements can be played to the caller while in the queue. Note that announcements will never be played if 'Ringtone' instead of 'Music' is selected in the callflow pointing to the queue. See also: Periodic Announcements Alternative below.
    • Periodic announcements: In the Queue action configurable audio message can be played at regular intervals while the caller is waiting in a queue. Note that if an agent is being called no periodic announcement is play since the priority is given to ringing the agent. In particular, the first call in a queue does not get any announcement if some agent are called. It can be the case of subsequent calls depending of the ring strategy and the queue rule used as long as the queue is able to ring an agent.
      • Time between announcements: Frequency of the announcement to be played, in seconds. If not set or 0, no periodic announcements will be played. See also: Announcements Frequency below.
      • Announcement to play: A customized announcement containing the filename (preferably located in the prompt directory of the file manager) to be played. This corresponds to an actual absolute path on the filesystem. This file must be a .wav and comply with these specifications. If you want to use a prompt from the global parameters, you need to prefix this with "prompt/". If left empty, the default announcement will be played requesting the caller to hold.
      • DTMF context output: The caller of the queue can press a single digit to interrupt the queue. The call will then be taken out of the queue and sent to the extension corresponding to the digit pressed by the user for the configured context. If this context is not configured, the queue announcement cannot be interrupted.
    • Queue position announcements: The position of the caller in the queue can be announced at regular intervals, such as when the position in the queue changes or when a certain duration since the last announcement has passed.
      • Maximum time between announcements: At most this much time in seconds since the last queue position announcement may pass before a new queue position announcement is played. If not set or 0, no queue position announcements will be played.
      • Minimum time between announcements: At least this much time in seconds since the last queue position announcement will need to pass before a new queue position announcement is played. If not set or 0, no queue position announcements will be played.
      • Play estimated hold time: When set to 'no', the estimated hold time will never be announced. When set to 'yes', the caller will, in addition to the position in the queue, hear the estimated remaining holding time if the following conditions are met:
        • The estimated remaining hold time is more than 2 minutes
        • "Maximum time between announcements" and "Minimum time between announcements" are set.
  • Device idle time: a device in the queue will only be offered a new call when it has been idle for X seconds
  • Active-active queue synchronization: the state of the queue members will be replicated on the second SOP.
  • Device Penalty: For each device selected as a permanent/dynamic member of the queue, you can select a penalty. The various strategies will use this value to distribute calls: the agent with the lower penalty will be preferred with all ring strategies while members with higher penalties will be considered last.
  • Default queue rule: The Queue Rule to apply to calls coming into this queue, by default. This will always be overridden by a queue rule specified in the Queue Action.

Dependencies

  • Asterisk-1.2 v2.17+, to support 'Ring in use policy' and 'Join when empty policy'
  • Asterisk-1.2 v2.19+ to support 'On no answer reset timeout'
  • Asterisk-1.2 v2.28.7 to support the 'Device idle time in queues'
  • Asterisk-1.2 v.2.33.0 to support the 'Active-active queue synchronization'
  • Asterisk-1.2 v.2.33.1 to support the 'Periodic Announcements Alternative'

Periodic Announcements Alternative

Periodic Announcements are never interrupted, so no queue member is called while an announcement is playing.

Practically, this means that if you were the first caller to enter the queue and have been waiting until you hear the periodic announcement, then another caller enters the queue and an operator suddenly becomes available, this other call is susceptible to be taken by the operator while you are still listening to the announcement, regardless the fact that you entered the queue first!!!

If this is not what you want, you can instead upload the audio files of your various announcements in a music on hold folder. Queue member will then be able to pick-up a call even during an announcement, as they will be part of the music on hold.

Each file will be played one at a time (in alphabetical order).

Example: in Folder1
File Duration
1_MusicA.mp3 1:30
2_Info.mp3 0:10
2_MusicB.mp3 1:00
3_Advert.mp3 0:15

The caller will then hear the first announcement after 1 minute and 30 seconds of music, then the second one after 1 minute, and so on.

See HowTo Configure Music on Hold for more informations.

Announcements frequency

Each type of announcements offers a different way of configuring the frequency which is explained in the table below.

Type of announcement All members busy At lease one member free
Periodic announcement Each 'Time between announcements' seconds Each 'Time between announcements' seconds OR each ('Timeout' + 'Retry') seconds, which ever is the longest.
Queue position announcement Each ('Maximum time between announcements') seconds OR each ('Minimum time between announcements' (when the caller's queue position has changed)) seconds A combination of the conditions in the left and upper cell

Example for periodic announcement when at least one member is available in the queue:
Member ringing time Periodic announcement time Periodic announcement result
10 5 10
5 10 10
7 10 14
120 5 120

Roundrobin distribution

If you choose a roundrobin strategy, roundrobin or rrmemory, a ring will be defined containing all the agents in a specific order. The order can be seen in the asterisk console. Just type show queue <queue_name>. The order for the distribution is the order the members are appearing in the list.

With Asterisk 1.2 permanent members are in the reverse order of resource ids defined on the SMP.
With Communication Server 2 permanent members are in the same order of resource ids defined on the SMP.

Dynamic members (login/logout) are added at the end after each login.

Queue Weights

Queue weights can be used to prioritize calls in a given queue compared to other queues by giving it a higher weight. Note that this will only impact agents that are in multiple queues with different weights.

Example 1 :

  • Queue A has weight 0 and several call waiting
  • Queue B has weight 1 and several call waiting
  • Agent X logs in queue A and B
  • => Agent X will only receive calls from Queue B until there is no more call waiting into Queue B. Only at this point will he start to receive calls from Queue A.

Note that for the example above, if Agent X's phone is already ringing from a call in Queue A and a new call arrives in Queue B, Agent X's phone will only start ringing with the call from Queue B once the call from Queue A rings on another phone, is taken or is abandoned.

Queue member availability criteria

Since version 3.5.0, the following criteria can be combined to form the join and leave policies for the queue.

  • paused: a member is not considered available if he is paused
  • penalty: a member is not considered available if his penalty is less than QUEUE_MAX_PENALTY
  • inuse: a member is not considered available if he is currently on a call
  • ringing: a member is not considered available if his phone is currently ringing
  • invalid: Do not consider a member to be available if he has an "invalid" device state (e.g. phone is not registered)
  • unknown: Do not consider a member to be available if we are unable to determine the member's current device state.
  • wrapup: A member is not considered available if he is currently in his wrapuptime after taking a call.

In previous versions, these were grouped into yes,no,strict,loose values. Although deprecated, they can still be used for now.

Value Join Leave
yes (empty) penalty,paused,invalid
no penalty,paused,invalid (empty)
strict penalty,paused,invalid,unavailable
loose penalty,invalid
Copyright © Escaux SA