The queues.conf File

We’ve mentioned the queues.conf file already, but there are many options in this file, and we figured it would be right and proper for us to go over some of them with you.

Table 13.1, “Available options for [general] section of queues.conf” contains the options available in the [general] section of queues.conf.

Table 13.1. Available options for [general] section of queues.conf

OptionsAvailable valuesDescription
persistentmembersyes, noSet this to yes to store dynamically added members to queues in the AstDB so that they can be re-added upon Asterisk restart.
autofillyes, noWith autofill disabled, the queue application will attempt to deliver calls to agents in a serial manner. This means only one call is attempted to be distributed to agents at a time. Additional callers are not distributed to agents until that caller is connected to an agent. With autofill enabled, callers are distributed to available agents simultaneously.
monitor-typeMixMonitor, <unspecified>If you specify the value MixMonitor the MixMonitor() application will be used for recording calls within the queue. If you do not specify a value or comment the option out, the Monitor() application will be used instead.
updatecdryes, noSet this to yes to populate the dstchannel field of the CDR records with the name of a dynamically added member on answer. The value is set with the AddQueueMember() application. This option is used to mimic the behavior of chan_agent channels.
shared_lastcallyes, noThis value is used for members logged into more than one queue to have their last call be the same across all queues, in order for the queues to respect the wrap up time of other queues.

Table 13.2, “Available options for defined queues in queues.conf” describes the options available for configuring queue contexts.

Table 13.2. Available options for defined queues in queues.conf

OptionsAvailable valuesDescription
musicclassMusic class as defined by musiconhold.confSets the music class to be used by a particular queue. You can also override this value with the CHANNEL(musicclass) channel variable.
announceFilename of the announcementUsed for playing an announcement to the agent that answered the call, typically to let him know what queue the caller is coming from. Useful when the agent is in multiple queues, especially when set to auto-answer the queue.
strategyringall, leastrecent, fewestcalls, random, rrmemory, linear, wrandom
  • ringall: rings all available callers (default)

  • leastrecent: rings the interface that least recently received a call

  • fewestcalls: rings the interface that has completed the fewest calls in this queue

  • random: rings a random interface

  • rrmemory: rings members in a round-robin fashion, remembering where we left off last for the next caller

  • linear: rings members in the order specified, always starting at the beginning of the list

  • wrandom: rings a random member, but uses the members’ penalties as a weight.

servicelevelValue in secondsUsed in statistics to determine the service level of the queue (calls answered within the service level time frame).
contextDialplan contextAllows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there.
penaltymemberslimitValue of 0 or greaterUsed to disregard penalty values if the number of members in the queue is lower than the value specified.
timeoutValue in secondsSpecifies the number of seconds to ring a member’s device. Also see timeoutpriority.
retryValue in secondsSpecifies the number of seconds to wait before attempting the next member in the queue if the timeout value is exhausted while attempting to ring a member of the queue.
timeoutpriorityapp, confUsed to control the priority of the two possible timeout options specified for a queue. The Queue() application has a timeout value that can be specified to control the absolute time a caller can be in the queue. The timeout value in queues.conf controls the amount of time (along with retry) to ring a member for. Sometime these values conflict, so you can control which value takes precedence. The default is app, as this is the way it works in previous versions.
weightValue of 0 or higherDefines the weight of a queue. A queue with a higher weight defined will get first priority when members are associated with multiple queues.
wrapuptimeValue in secondsThe number of seconds to keep a member unavailable in a queue after completing a call.
autofillyes, noSame as defined in the [general] section. This value can be defined per queue.
autopauseyes, no, allEnables/disables the automatic pausing of members who fail to answer a call. A value of all causes this member to be paused in all queues she is a member of.
maxlenValue of 0 or higherSpecifies the maximum number of callers allowed to be waiting in a queue. A value of zero means an unlimited number of callers are allowed in the queue.
setinterfacevaryes, noIf set to yes, the following channel variables will be set just prior to connecting the caller with the queue member:
  • MEMBERINTERFACE: the member’s interface, such as Agent/1234

  • MEMBERNAME: the name of the member

  • MEMBERCALLS: the number of calls the interface has taken

  • MEMBERLASTCALL: the last time the member took a call

  • MEMBERPENALTY: the penalty value of the member

  • MEMBERDYNAMIC: indicates whether the member was dynamically added to the queue or not

  • MEMBERREALTIME: indicates whether the member is included from real time or not

setqueueentryvaryes, noIf set to yes, the following channel variables will be set just prior to the call being bridged:
  • QEHOLDTIME: the amount of time the caller was held in the queue

  • QEORIGINALPOS: the position the caller originally entered the queue at

setqueuevaryes, noIf set to yes, the following channel variables will be set just prior to the call being bridged:
  • QUEUENAME: the name of the queue

  • QUEUEMAX: the maximum number of calls allowed in this queue

  • QUEUESTRATEGY: the strategy method defined for the queue

  • QUEUECALLS: the number of calls currently in the queue

  • QUEUEHOLDTIME: the current average hold time of callers in the queue

  • QUEUECOMPLETED: the number of completed calls in this queue

  • QUEUEABANDONED: the number of abandoned calls

  • QUEUESRVLEVEL: the queue service level

  • QUEUESRVLEVELPERF: the queue’s service level performance

membermacroName of a macro defined in the dialplanDefines a macro to be executed just prior to bridging the caller and the queue member.
announce-frequencyValue in secondsDefines how often we should announce the caller’s position and/or estimated hold time in the queue. Set this value to zero to disable.
min-announce-frequencyValue in secondsSpecifies the minimum amount of time that must pass before we announce the caller’s position in the queue again. This is used when the caller’s position may change frequently, to prevent the caller hearing multiple updates in a short period of time.
periodic-announce-frequencyValue in secondsIndicates how often we should make periodic announcements to the caller.
random-periodic-announceyes, noIf set to yes, will play the defined periodic announcements in a random order. See periodic-announce.
relative-periodic-announceyes, noIf set to yes, the periodic-announce-frequency timer will start from when the end of the file being played back is reached, instead of from the beginning. Defaults to no.
announce-holdtimeyes, no, onceDefines whether the estimated hold time should be played along with the periodic announcements. Can be set to yes, no, or only once.
announce-positionyes, no, limit, moreDefines whether the caller’s position in the queue should be announced to her. If set to no, the position will never be announced. If set to yes, the caller’s position will always be announced. If the value is set to limit, the caller will hear her position in the queue only if it is within the limit defined by announce-position-limit. If the value is set to more, the caller will hear her position if it is beyond the number defined by announce-position-limit.
announce-position-limitNumber of zero or greaterUsed if you’ve defined announce-position as either limit or more.
announce-round-secondsValue in secondsIf this value is nonzero, we’ll announce the number of seconds as well, and round them to the value defined.
queue-thankyouFilename of prompt to playIf not defined, will play the default value (“Thank you for your patience”). If set to an empty value, the prompt will not be played at all.
queue-youarenextFilename of prompt to playIf not defined, will play the default value (“You are now first in line”). If set to an empty value, the prompt will not be played at all.
queue-thereareFilename of prompt to playIf not defined, will play the default value (“There are”). If set to an empty value, the prompt will not be played at all.
queue-callswaitingFilename of prompt to playIf not defined, will play the default value (“calls waiting”). If set to an empty value, the prompt will not be played at all.
queue-holdtimeFilename of prompt to playIf not defined, will play the default value (“The current estimated hold time is”). If set to an empty value, the prompt will not be played at all.
queue-minutesFilename of prompt to playIf not defined, will play the default value (“minutes”). If set to an empty value, the prompt will not be played at all.
queue-secondsFilename of prompt to playIf not defined, will play the default value (“seconds”). If set to an empty value, the prompt will not be played at all.
queue-reportholdFilename of prompt to playIf not defined, will play the default value (“Hold time”). If set to an empty value, the prompt will not be played at all.
periodic-announceA set of periodic announcements to be played, separated by commasPrompts are played in the order they are defined. Defaults to queue-periodic-announce (“All representatives are currently busy assisting other callers. Please wait for the next available representative”).
monitor-formatgsm, wav, wav49, <any valid file format>Specifies the file format to use when recording. If monitor-format is commented out, calls will not be recorded.
monitor-typeMixMonitor, <unspecified>Same as monitor-type as defined in the [general] section, but on a per-queue basis.
joinemptypaused, penalty, inuse, ringing, unavailable, invalid, unknown, wrapupControls whether a caller is added to the queue when no members are available. Comma-separated options can be included to define how this option determines whether members are available. The definitions for the values are:
  • paused: members are considered unavailable if they are paused.

  • penalty: members are considered unavailable if their penalties are less than QUEUE_MAX_PENALTY.

  • inuse: members are considered unavailable if their device status is In Use.

  • ringing: members are considered unavailable if their device status is Ringing.

  • unavailable: applies primarily to agent channels; if the agent is not logged in but is a member of the queue, it is considered unavailable.

  • invalid: members are considered unavailable if their device status is Invalid. This is typically an error condition.

  • unknown: members are considered unavailable if device status is unknown.

  • wrapup: members are considered unavailable if they are currently in the wrapup time after the completion of a call.

leavewhenemptypaused, penalty, inuse, ringing, unavailable, invalid, unknown, wrapupUsed to control whether callers are kicked out of the queue when members are no longer available to take calls. See joinempty for more information on the assignable values.
eventwhencalledyes, no, varsIf set to yes, the following manager events will be sent to the Asterisk Manager Interface (AMI):
  • AgentCalled

  • AgentDump

  • AgentConnect

  • AgentComplete

If set to vars, all channel variables associated with the agent will also be sent to the AMI.

eventmemberstatusyes, noIf set to yes, the QueueMemberStatus event will be sent to AMI. Note that this may generate a lot of manager events.
reportholdtimeyes, noEnables reporting of the caller’s hold time to the queue member prior to bridging.
ringinuseyes, noUsed to avoid sending calls to members whose status is In Use. Recall from our discussion in the preceding section that only the SIP channel driver is currently able to accurately report this status.
memberdelayValue in secondsUsed if you want there to be a delay prior to the caller and queue member being connected to each other.
timeoutrestartyes, noIf set to yes, resets the timeout for an agent to answer if either a BUSY or CONGESTION status is received from the channel. This can be useful if the agent is allowed to reject or cancel a call.
defaultruleRule as defined in queuerules.confAssociates a queue rule as defined in queuerules.conf to this queue, which is used to dynamically change the minimum and maximum penalties, which are then used to select an available agent. See the section called “Changing Penalties Dynamically (queuerules.conf)”.
memberDeviceUsed to define static members in a queue. To define a static member, you supply its Technology/Device_ID (e.g., Agent/1234, SIP/0000FFFF0001, DAHDI/g0/14165551212).