Queue

Description (v2.0.0)

INFO This action queues the caller while calling the members of the queue
INFO Calls are sent into the [Queue name] queue.
INFO They will remain in the queue for [Timeout] seconds.
INFO If the call has already entered [Maximum loop limit] times in the queue, it will go to the 'limitreached' output.
INFO Set the "Play Ringtone or Music to caller" variable in order to play a ringtone or music on hold to the caller.
INFO You may decide to exit the queue after the retry time.
INFO If set, the queue will try to ring this device first : [Preferred device]
INFO If set, a service is called when the parties are connected.

Release notes

Version 2.0.0 - Early deployment
  • Feature: Print QUEUEACCOUNTCODE in queue_log (M10885)
  • Improvement: A service can be called when the parties are connected (M11167)
  • Limitation: When using a Connecting Service, the member agent and the caller are bridged together once all the connecting service actions are finished, a lengthy action will delay the beginning of the communication.
  • Limitation: The last action of the Connecting Service callflow (if used) must be followed by a Return action for Communication Server >= 3.
  • Dependency:
    • Queue Resource >= 3.1.0
    • QueueRule Resource >= 1.0.0

Version 1.9.0 - Early deployment
  • Improvement: The preferred device option works with the Communication Server module (M5968)
  • Bugfix: The maximum loop limit was ignored
  • Dependency:
    • Limitation: The preferred device feature does not work with the Communication Server module before version 3.1.0
    • Uses the QueueOptions global parameter

Version 1.8.0 - 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.: Previous behaviour was to by default allow the called agent to transfer a call with the blind transfer feature key in the Asterisk-1.2x and Communication Server modules. With this version it is by default disabled and can be configured with the QueueOptions parameter
  • Bugfix: Reinvite never worked when calling to a queue (M5764)
  • Feature: Configurable action options with the QueueOptions parameter
  • Dependency:
    • The preferred device option needs Asterisk-1.2 <= 2.30.2 (not available for Communication Server)
    • QueueOptions parameter

Version 1.7.0 - General deployment
  • Improvement: Added drop down box for the 'preferred device' parameter
  • Improvement: WE do not need to add technical 'SIP/' prefix when setting a 'preferred device'
  • Dependency:
    • The preferred device option needs Asterisk-1.2 <= 2.30.2 (not available for Communication Server)

Version 1.6 - General deployment
  • Improvement: Compatibility with the Communication Server module
  • Dependency:
    • The preferred device option needs Asterisk-1.2 <= 2.30.2 (not available for Communication Server)

Version 1.05 - General deployment
  • Improvement: Added possibility to set a preferred device.
  • Dependency:
    • The preferred device option needs Asterisk-1.2 <= 2.30.2

Version 1.04 - General deployment
  • Improvement: Added possibility of skipping the queue after the retry time.

Version 1.03 - General deployment
  • Potential update impact level 1 DONE: no critical impact expected. Update can be applied without risk of breaking critical functionality.
  • Rename leave_queue by timeout
  • Add no_available_member exit. If no_available_member exit is not set failover to timeout exit

Version 1.02 - General deployment
  • Potential update impact level 1 DONE: no critical impact expected. Update can be applied without risk of breaking critical functionality.
  • Bug fix: When 'ringtone' is selected, the call should not be answered

Version 1.01 - General deployment
  • Potential update impact level 1 DONE: no critical impact expected. Update can be applied without risk of breaking critical functionality.
  • Queue entry count limitation added
  • Possibility to select either music on hold or ringtone being played to queued caller

Version 1.00 - General deployment

Version 0.0 - General deployment

Action parameters

  • Queue name: Route the call in this queue.
  • Timeout: The maximum time the call should stay in the queue. Note that the call can leave the queue while trying to locate a free member or while ringing a member. However, when the timeout occurs during a 'Retry' period (See Queue resource), the call will exit the queue only after the retry period. Exception on the timeout logic: See 'Exit after retry'.
  • Maximum loop limit: Maximum number of times the call is allowed to pass through this queue.
  • Play Ringtone or Music to caller: The caller can be presented with an ordinary ringtone or with music on hold while waiting for a member to accept the call.
  • Exit after retry : When set to 'no' (default), the queue will keep trying to locate a free member if the first one did not take the call. When set to 'yes', after waiting turn, only one available member will be tried and the call will then leave the queue at the latest after the 'Member ringing time' and 'Retry time' defined in the Queue resource, potentially disregarding the Timeout set in the action configuration.
  • Preferred device (action version >= 1.05) (useless for a ringall strategy) : When set, will first try to make this device ring.
  • Connecting service (action version >= 2.0): When set, a callflow is called when the calling and called parties are connected to each other (= a call is picked up by a member of the queue). The callfow has access to a number of variables about the call, the member of the queue who has taken the call as well as global information about the Queue. See the "Connecting Service" section below for more information.
  • Queue rule: The Queue Rule to apply to incoming calls. This will override any default Queue Rule set in the Queue resource.

Extra options with the QueueOptions parameter

ALERT! These options are case sensitive and are only available in Queue action >= 1.8.0!

  • C: Mark all calls as "answered elsewhere" when cancelled. This avoids a missed call on the phone if it supports it. ALERT! This option depends on the Communication Server module >= 2.0.0
  • I: Communication Server will ignore any connected line update requests or any redirecting party update requests it may receive on this dial attempt. ALERT! This option depends on the Communication Server module >= 2.0.0
  • i: Communication Server will ignore any forwarding request on this dial attempt
  • t: Allow the called user to transfer the calling user with a DTMF feature key (configurable in the Asterisk-1.2x and Communication Server module). Note that enabling this option will prevent any SIP ReINVITEs from occuring for this call.
  • T: Allow the calling user to transfer the call with a DTMF feature key(configurable in the Asterisk-1.2x and Communication Server module). Note that enabling this option will prevent any SIP ReINVITEs from occuring for this call.

To use these options, simply execute a SetVar action in your callflow for the QueueOptions parameter. e.g. to use options C and I, do a SetVar on variable QueueOptions, with value CI.

Action outputs

  • timeout (action version >= 1.03) or leave_queue (action version < 1.03) : This output will be triggered if the caller waits more or less [timeout] seconds. (see. Action parameters)
  • noavailablemember (action version >= 1.03): This output is triggered when there are "no member" in the queue. Please refer to the parameters 'Join when empty policy ' and 'Leave when empty policy' of the Queue resource for more informations about the various Queue behaviour.
  • limitreached: This output is triggered when the call was processed by the queue [max_limit] times.

Assigning priorities to callers

With a standard setup, each caller will be processed by agents on a FIFO basis (First In, First Out) meaning that the caller who has been waiting the longest will be handled as soon as an agent becomes available. Sometimes it is desirable to give specific callers a higher priority because they
  • Have called a high-cost number
  • Have called a high priority service
  • Are valued customers
  • ...

Assigning a priority to callers is simple. The queue will assign the value of QUEUE_PRIO to the caller. A higher value will result in the call being treated faster than a lower priority call, even if the high priority call arrived in the queue after the lower priority call.

The variable QUEUE_PRIO can be set with the action SetVar and should be an integer value between 0 and 100. If not set, the queue will assume priority '0'.

Using this value, in combination with the GetXPath action, we can utilize a powerful tool to query customer databases containing the SLA or sales volume of the caller when their telephone number is known.

Connecting Service

The following variables are available when using the Connecting Service feature:

  • About the Caller:
    • CID - The caller ID.
    • QEHOLDTIME - The caller's hold time.
    • QEORIGINALPOS - The original position of the caller in the queue.
  • About the Queue member:
    • MEMBERINTERFACE - The interface name (eg. Agent/1234).
    • MEMBERNAME - The member name (eg. Joe Soap).
    • MEMBERCALLS - The number of calls that interface has taken.
    • MEMBERLASTCALL - The last time the member took a call.
    • MEMBERPENALTY - The penalty of the member.
    • MEMBERDYNAMIC - Indicates if a member is dynamic or not.
    • MEMBERREALTIME - Indicates if a member is realtime or not.
  • About the Queue:
    • QUEUENAME - The name of the queue.
    • QUEUEMAX - Maximum number of calls allowed in the queue.
    • QUEUESTRATEGY - The strategy of the queue.
    • QUEUECALLS - Number of calls currently in the queue.
    • QUEUEHOLDTIME - Current average hold time.
    • QUEUECOMPLETED - Number of completed calls for the queue.
    • QUEUEABANDONED - Number of abandoned calls.
    • QUEUESRVLEVEL - Queue service level.
    • QUEUESRVLEVELPERF - Current service level performance.

Since the callflow runs on the called channel, channel variable from the caller channel (set before the Queue action) are not available unless inheritance is used (prefix variable name with underscore).

To access variables created or updated on the called channel later on from the caller channel (e.g. from a hangup handler) the function IMPORT(<called channel>,<variable name>) can be used. Usually as IMPORT(${BRIDGEPEER},<variable name>).

Steps to create a connecting service:

1. Create a callflow containing all actions that will use queue information. A notification can for example be sent to an API service using the member agent and the caller information. To achieve this, a callflow containing a GetXPath action needs to set up. An example URL could be: http://api-service.example.com/notifycall.php?queuename=${QUEUENAME}&membername=${MEMBERNAME}&callerid=${CID}

2. Terminate your callflow by a Return action. Without this action, the communication will stop after the Connecting Service call. The Return action does not require a return value.

3. Create a profile that will be associated to the callflow and create a callflow assignment with the previously created callflow

4. Create an extension in the Internal Directory that will be called when the queue member agent and the caller are connected.

5. Select the previously created extension in the Queue Action "Connecting service" field.

ALERT! Limitation: Be careful that the queue member and the caller are bridged once all the connecting service actions are finished. A time consuming action can delay the beginning of the communication.
Copyright © Escaux SA