QueueRule (AQR0)


Release notes

Version 1.2.0 - Early deployment
  • Feature: Added QUEUE_RAISE_PENALTY feature (M21060)
  • Dependency:
    • Queue Action >= 2.0.0
    • Queue Resource >= 3.0.0
    • Communication Server 3.24.0

Version 1.1.0 - Early deployment
  • Feature: Complete queue rules definition available (M16973)
  • Dependency:
    • Queue Action >= 2.0.0
    • Queue Resource >= 3.0.0

Resource configuration interface

GUI unavailable.

Resource configuration parameters

  • Description: an informative label
  • Queue Rule Definition: a list of "penaltychange" statements, one by line, describing the change to make to the maximum and minimum penalties after a certain amount of time. Syntax: penaltychange => (1),(2),(3),(4)
    1. number of seconds into the call
    2. absolute (just an integer without sign) or relative (sign + or - and integer) change to QUEUE_MAX_PENALTY
    3. absolute or relative change to QUEUE_MIN_PENALTY (optional)
    4. absolute value for QUEUE_RAISE_PENALTY

Each call has its own QUEUE_MIN_PENALTY, QUEUE_MAX_PENALTY and QUEUE_RAISE_PENALTY, defined as channel variable. Default value is zero. You can use the SetVar action to set an initial value to each of the QUEUE_[MIN|MAX|RAISE]_PENALTY on a call.


A QueueRule allows to dynamically change the min and max penalties of a call entering in a queue. Only the members whose penalty is between the min and max penalties will be considered as avaiable. This can be useful to manage a queue with members who have penalties and still have a linear behaviour, based on the penalties instead of the order.

For example, consider the following queue :

  • Member A, penalty 0
  • Member B, penalty 1
  • Member C, penalty 2

When member A joins the queue, he takes all incoming calls. When member B joins the queue, member A still takes all incoming calls, but if he does not answer after a certain delay, the call goes to member B. When member C joins the queue, the queue acts the same as above, but if member B does not answer after a certain delay, the call goes to member C.

Considering those data, we can define a minimum penalty and a maximum penalty : 0 and 2. By increasing the minimum penalty of the call every x seconds, we can exclude the members for the next ringing :
  • At 20 seconds, the min penalty changes to 1, A is excluded
  • At 40 seconds, the min penalty changes to 2, A and B are excluded
  • At 60 seconds, the min penalty changes to 0, everyone can receive the call

By repeating the above schema, a call can be dispatched to several levels without losing its position in the queue.

The variable QUEUE_RAISE_PENALTY enables to consider all the members with penalty lower or equal to QUEUE_RAISE_PENALTY as if they had the min penalty. This can be used to make sure that we keep on expanding the group of members to ring.
Copyright © Escaux SA