Skip to main content

Chapter 22: Queues: FIFO and Call Center

FreeSWITCH provides two distinct mechanisms for queuing inbound calls: mod_fifo, a lightweight first-in-first-out holding application, and mod_callcenter, a full agent-management system with routing strategies, tiers, and lifecycle tracking. This chapter covers the operator-facing configuration of both and explains when each is appropriate.

Choosing Between FIFO and Call Center

Capabilitymod_fifomod_callcenter
Hold callers in orderYesYes
Named agents with status trackingNoYes
Routing strategiesNo (FIFO order only)Yes (8 strategies)
Agent tiers / priority groupsNoYes
Wrap-up time, no-answer handlingNoYes
DB-backed stateNoYes (SQLite or ODBC)

Use mod_fifo when you need a simple holding queue with minimal configuration. Use mod_callcenter when you need named agents, routing strategies, tier-based escalation, or agent state management.


mod_fifo: Configuration and the fifo Application

mod_fifo is loaded by default. Its configuration file is autoload_configs/fifo.conf.xml.

fifo.conf.xml Settings

The <settings> block contains global options for the module.

<configuration name="fifo.conf" description="FIFO Configuration">
<settings>
<param name="delete-all-outbound-member-on-startup" value="false"/>
</settings>
...
</configuration>
ParameterPurposeAccepted ValuesDefault
delete-all-outbound-member-on-startupRemove all outbound member records from the database when the module loads.true, falsefalse
outbound-strategyDefault outbound strategy applied to all FIFO nodes that do not specify their own outbound_strategy attribute.ringall, enterpriseringall
odbc-dsnODBC connection string for external database storage. Format: dsn:user:pass. When set, the module uses ODBC instead of the internal SQLite database.StringNone (SQLite used)
dbnameName or path of the SQLite database file.File pathfifo
allow-transcodingWhen true, allows transcoding between the caller and consumer legs.true, falsefalse
disable-dtmf-moh-keyWhen true, disables the 0 DTMF soft-hold feature for consumers.true, falsefalse
db-pre-trans-executeSQL statement run by the database queue manager immediately before the outer transaction begins. Used to apply per-connection pragmas or tuning.SQL stringNone
db-post-trans-executeSQL statement run immediately after the outer transaction completes.SQL stringNone
db-inner-pre-trans-executeSQL statement run immediately before each inner (batched) transaction begins.SQL stringNone
db-inner-post-trans-executeSQL statement run immediately after each inner (batched) transaction completes.SQL stringNone

Declaring a FIFO Node

FIFO nodes are declared under the <fifos> element. Each <fifo> element defines one named queue.

<fifos>
<fifo name="support@$${domain}" importance="0">
</fifo>
</fifos>

<fifo> Attributes

AttributePurposeAccepted ValuesDefault
nameUnique name for the queue; typically name@domain.StringRequired
importancePriority of this FIFO relative to others when a consumer selects from multiple. Higher values are served first, overriding wait-time ordering.Integer >= 00
outbound_strategyStrategy for calling outbound members: ringall calls members simultaneously and preserves caller ID; enterprise calls as many members as needed at the fastest rate without preserving caller ID.enterprise, ringallValue of the global outbound-strategy setting (default ringall)
outbound_per_cycleMaximum outbound members called per dispatch cycle. For ringall, limits the number of members rung simultaneously. For enterprise, limits the maximum agents dialed per caller.Integer >= 01
outbound_per_cycle_minMinimum outbound members to call per dispatch cycle regardless of need. Allows enterprise to ring more than one agent per caller.Integer >= 01
outbound_ring_timeoutSeconds to ring an outbound member before giving up. Must be > 10.Integer60
outbound_default_lagSeconds to wait before making the member available again after a call. Must be > 10.Integer30
outbound_priorityPriority when multiple FIFOs compete for the same outbound member. Range 1-10.Integer 1-105
outbound_nameCaller ID name prefix presented to outbound members.StringNone
retry_delaySeconds to wait before retrying a failed outbound attempt.Integer >= 00

Outbound Members

Static outbound members are defined as <member> children of a <fifo> node. The module stores them in its internal database on load.

<fifo name="support@$${domain}" importance="0">
<member timeout="60" simo="1" lag="20">{member_wait=nowait}user/1005@$${domain}</member>
</fifo>

<member> Attributes

AttributePurposeAccepted ValuesDefault
timeoutRing timeout in seconds for this member. Minimum 10; values below 10 fall back to the node outbound_ring_timeout.IntegerNode outbound_ring_timeout (default 60)
simoMaximum simultaneous calls to this member.Integer >= 11
lagSeconds before the member is available again after a call ends. Negative values fall back to the node outbound_default_lag.Integer10 (node outbound_default_lag used only when a negative value is given)
taking_callsWhether this member currently accepts calls. Values below 1 are clamped to 1. Set to a higher value or toggle at runtime to control whether the member is dialed.Integer >= 11

The member text body is the originate string. The channel variable member_wait (set as a channel pre-dial variable in the originate string) controls what the member does after answering: wait holds the call until a caller is available; nowait bridges immediately if a caller is already waiting and hangs up otherwise.

The fifo Dialplan Application

The fifo application places a channel into a named FIFO as either a caller (inbound, in mode) or a consumer/agent (outbound, out mode); it is also summarized in the dptools reference.

Syntax:

fifo <name>[!<importance>] [in [<announce>|undef] [<music>|undef] [early|noans]
| out [wait|nowait] [<announce>|undef] [<music>|undef]]

Argument reference:

ArgumentPositionPurposeValues
<name>1FIFO node name. Append !<n> to set or override importance at call time.String
in / out2Direction. in queues the caller; out makes this channel a consumer.in, out
<announce>3Audio file played to the channel on entry. Use undef to skip.File path, undef
<music>4Hold music file. Use undef to use the channel default.File path, undef
early / noans5 (in mode)Controls when the caller channel is answered. Default (no argument): channel is answered immediately on queue entry. noans: channel is never auto-answered by the fifo application. early: channel is answered when the consumer bridges to the caller.early, noans
wait / nowait3 (out mode)wait: consumer stays bridged until a caller arrives. nowait: consumer bridges immediately if a caller is waiting, otherwise returns.wait, nowait

The channel variables fifo_music and fifo_announce set the hold music and announcement file respectively for a caller. These are checked before the application arguments and take precedence.

Importance at call time: Appending !<n> to the FIFO name sets the importance for callers entered with in. If the node already exists, a lower importance value in the application argument is ignored; a higher value updates the node.

Example: caller enters queue

<action application="fifo" data="support@$${domain} in undef $${hold_music}"/>

Example: agent dials in as consumer

<action application="fifo" data="support@$${domain} out wait"/>

FIFO Channel Variables

Channel variables control per-call behavior within mod_fifo. Set them on the caller or consumer channel before invoking the fifo application.

Caller-side variables (in mode)

VariablePurposeValuesNotes
fifo_musicHold music played to the caller while waiting. Overrides the application argument.File path or streamRead before application <music> argument.
fifo_announceAudio file played to caller on entry. Overrides the application argument.File pathRead before application <announce> argument.
fifo_priorityPriority slot within the FIFO. Lower numbers are dequeued first.Integer 0-9Defaults to 0 if not set.
fifo_caller_exit_keyDTMF digit(s) that cause the caller to exit the queue. After exit the variable is overwritten with the digit that was pressed.DTMF digit stringNot set by default; no exit key.
fifo_caller_exit_to_orbitWhen true, a caller who presses an exit key is transferred to the orbit extension rather than hanging up. Requires fifo_orbit_exten.true, falseNot set by default.
fifo_orbit_extenExtension to transfer the caller to after a timeout or exit key event. Format: extension or extension:timeout_seconds. When no colon is present the timeout defaults to 60 seconds.extension[:timeout]Not set by default. Orbit does not fire without this variable.
fifo_orbit_dialplanDialplan to use for the orbit transfer.Dialplan nameDefaults to the channel's current dialplan.
fifo_orbit_contextDialplan context to use for the orbit transfer.Context nameDefaults to the channel's current context.
fifo_orbit_announceAudio file played to the caller immediately before the orbit transfer.File pathNot set by default.
fifo_chime_listComma-separated list of audio files played periodically to the caller while waiting.file1,file2,...Not set by default.
fifo_chime_freqInterval in seconds between chime file playbacks.Integer > 0Default 30 if fifo_chime_list is set and this variable is absent or non-positive.
fifo_vipWhen true, marks the caller as a VIP for priority dequeuing. Set automatically by the module when a caller is abandoned by an agent and re-queued.trueNot set by default.

Consumer-side variables (out mode)

VariablePurposeValuesNotes
fifo_consumer_exit_keyDTMF digit that causes the consumer to hang up the caller and exit.Single DTMF characterDefault *.
fifo_hold_musicMusic played to the consumer when the consumer places the caller on soft-hold (digit 0). Falls back to fifo_music, then the channel default.File path or streamNot set by default.
fifo_strategyNode selection strategy when a consumer is registered to multiple FIFO nodes. waiting_longer: serve the node that has been non-empty longest. more_ppl: serve the node with the most callers.waiting_longer, more_pplDefault waiting_longer.
fifo_pop_orderComma-separated priority slot numbers controlling the order in which the consumer pops callers from the node queues.0,1,2,...Default is ascending order 0 through 9.
fifo_consumer_wrapup_timeMilliseconds the consumer is held in wrap-up state after a call ends before returning to the pool. Set to 0 to disable the wrapup period.Integer (milliseconds)5000 (applies whenever this variable is not set)
fifo_consumer_wrapup_soundAudio file played to the consumer during wrap-up time.File pathNot set by default.
fifo_consumer_wrapup_keyDTMF digit the consumer can press to end wrap-up early.Single DTMF characterNot set by default.
fifo_record_templatePath template for recording a bridged call. Supports channel variables and strftime tokens.StringNot set by default.
fifo_outbound_announceAudio file played to the consumer before bridging to a caller that was an outbound callback (dial-url mode).File pathNot set by default.
fifo_override_announceSet on the caller's channel. When present, overrides the consumer's announce file for that specific bridge.File pathNot set by default.

The fifo_track_call Application

The fifo_track_call application registers a call against an outbound member record so that a bridge established outside of mod_fifo is still counted in the module's manual-call statistics. The call is added to the internal manual_calls queue and the member's use count is incremented; the count is decremented automatically when the channel hangs up.

Syntax:

fifo_track_call <fifo_outbound_uuid>

The single argument is the outbound member UUID (the fifo_outbound_uuid value, the same identifier returned for static and dynamically added outbound members). Outbound channels increment manual_calls_in_count; inbound channels increment manual_calls_out_count. Calling the application twice on the same channel is a no-op and logs a warning.

<action application="fifo_track_call" data="$${outbound_member_uuid}"/>

mod_fifo API Commands

mod_fifo registers four API commands, usable from fs_cli, the event socket, or api/bgapi dialplan applications.

fifo — Inspect FIFO node state.

Syntax:

fifo list|list_verbose|count|debug|status|has_outbound|importance [<fifo name>]|reparse [del_all]
Sub-commandPurpose
list [<fifo name>]XML report of one node, or all nodes when no name is given.
list_verbose [<fifo name>]As list but includes per-caller and per-consumer detail.
count [<fifo name>]Counters for one or all nodes, formatted name:consumer_count:caller_count:member_count:ring_consumer_count:idle_consumers.
debug [<level>]Show or set the module debug level. A negative level is clamped to 0.
statusDump full module state, including the caller-originate, consumer-originate, and bridge hashes.
has_outbound [<fifo name>]Report whether one or all nodes have outbound members, formatted name:0|1.
importance <fifo name> [<value>]Show or set the importance of a node. A negative value is clamped to 0.
reparse [del_all]Reload the configuration. With del_all, also deletes all outbound member records first.

fifo_member — Add or remove a dynamic outbound member at runtime.

Syntax:

fifo_member add <fifo_name> <originate_string> [<simo_count>] [<timeout>] [<lag>] [<expires>] [<taking_calls>]
fifo_member del <fifo_name> <originate_string>
ArgumentPurposeDefault
<fifo_name>Target FIFO node.Required
<originate_string>Member dial string.Required
<simo_count>Maximum simultaneous calls; values below 0 reset to 1.1
<timeout>Ring timeout in seconds; values below 0 reset to 60.60
<lag>Seconds before the member is available again; values below 0 reset to 5.5
<expires>Seconds from now after which the dynamic member record expires.0 (no expiry)
<taking_calls>Whether the member accepts calls; values below 1 are clamped to 1.1

fifo_add_outbound — Push a one-shot outbound call request onto a node at the given priority slot.

Syntax:

fifo_add_outbound <node> <url> [<priority>]

The <url> is dialed as a dial-url outbound request. <priority> is a slot number; values at or above the maximum are clamped to the highest valid slot, and a non-positive or absent value uses slot 0. The command returns the resulting queue depth of that priority slot (0 on failure).

fifo_check_bridge — Test whether a UUID or outbound member ID is currently in a FIFO bridge.

Syntax:

fifo_check_bridge <uuid>|<outbound_id>

Returns true if the given channel UUID or outbound member ID is part of an active bridge, otherwise false.


mod_callcenter: Concepts and Loading

mod_callcenter is not loaded by default. To enable it, uncomment the relevant line in autoload_configs/modules.conf.xml:

<load module="mod_callcenter"/>

The module introduces three object types:

  • Queue: A named holding pool for inbound calls. Each queue has a routing strategy, hold music, and wait-time limits.
  • Agent: A named endpoint (person or device) that can receive calls from queues. Agents carry status (Available, On Break, Logged Out, Available (On Demand)) and state managed by the module.
  • Tier: An assignment linking one agent to one queue, with a level (priority group) and position (ordering within that level).

State is stored in a SQLite database by default. An ODBC data source may be configured for shared access.

The XML configuration (callcenter.conf.xml) defines queues, agents, and tiers that are synchronized into the database at startup.

Important: XML agent and tier configuration is re-applied to the database on every restart. Agent XML resets level and position to the configured values if they were supplied. This behavior is not suitable for multi-FreeSWITCH shared-database deployments.


Call Center Queue Configuration

Queues are defined under the <queues> element of callcenter.conf.xml.

<queues>
<queue name="support@default">
<param name="strategy" value="longest-idle-agent"/>
<param name="moh-sound" value="$${hold_music}"/>
<param name="time-base-score" value="system"/>
<param name="max-wait-time" value="0"/>
<param name="max-wait-time-with-no-agent" value="0"/>
<param name="max-wait-time-with-no-agent-time-reached" value="5"/>
<param name="tier-rules-apply" value="false"/>
<param name="tier-rule-wait-second" value="300"/>
<param name="tier-rule-wait-multiply-level" value="true"/>
<param name="tier-rule-no-agent-no-wait" value="false"/>
<param name="discard-abandoned-after" value="60"/>
<param name="abandoned-resume-allowed" value="false"/>
</queue>
</queues>

The name attribute on <queue> is required. The conventional format is name@context (for example, support@default), matching the agent name format.

Queue Parameter Reference

ParameterPurposeAccepted ValuesDefault
strategyAgent selection algorithm.See table belowlongest-idle-agent
moh-soundHold music played to waiting callers.File path or streamNone
announce-soundAudio file announced to the caller periodically while waiting.File pathNone
announce-frequencySeconds between announce-sound playbacks. 0 disables.Integer 0-864000
record-templatePath template for recording bridged calls. Supports channel variables and strftime tokens.StringNone
time-base-scoreReference point for calculating a caller's wait-time score used in agent selection. queue counts from when the caller entered the queue; system counts from call origination.queue, systemqueue
max-wait-timeMaximum seconds a caller waits before being abandoned. 0 means unlimited.Integer 0-864000
max-wait-time-with-no-agentMaximum seconds a caller waits when no agents are logged in. 0 means unlimited.Integer 0-864000
max-wait-time-with-no-agent-time-reachedGrace period in seconds after max-wait-time-with-no-agent is reached before the caller is removed.Integer 0-864005
tier-rules-applyEnable tier-based wait-time rules (see below).true, falsefalse
tier-rule-wait-secondSeconds a caller must wait before advancing to the next tier level.Integer 0-864000
tier-rule-wait-multiply-levelWhen true, the wait time to reach tier level N is N * tier-rule-wait-second. When false, all higher tiers become reachable after a single tier-rule-wait-second interval.true, falsefalse
tier-rule-no-agent-no-waitWhen true, callers skip tier wait times if no agents are available in the current tier.true, falsetrue
discard-abandoned-afterSeconds after which an abandoned caller's record is removed from the database, preventing resume. 0 keeps it indefinitely.Integer 0-8640060
abandoned-resume-allowedWhen true, a caller who hung up and calls back within discard-abandoned-after seconds resumes their original position in the queue.true, falsefalse
agent-no-answer-statusStatus assigned to an agent who does not answer within the ring timeout.Available, Available (On Demand), On Break, Logged OutOn Break
ring-progressively-delayFor the ring-progressively strategy, seconds between each successive agent being added to the ring group.Integer 0-8640010
skip-agents-with-external-callsWhen true, agents already on a call outside the call center are not offered queue calls.true, falsetrue

Strategy values:

ValueBehavior
longest-idle-agentAgent who has been idle the longest receives the call.
round-robinAgents are offered calls in rotation, resuming where the previous call left off.
top-downAgents are always tried in tier order from the beginning; the highest-priority available agent always answers.
agent-with-least-talk-timeAgent with the fewest total talk-time seconds receives the call.
agent-with-fewest-callsAgent with the fewest answered calls receives the call.
sequentially-by-agent-orderAgents are selected by tier level and position, then by last_offered_call timestamp.
ring-allAll available agents in the eligible tier ring simultaneously.
ring-progressivelyAgents ring one at a time at the interval set by ring-progressively-delay, accumulating until one answers.

Agent Configuration

Agents are defined under the <agents> element of callcenter.conf.xml. XML agent configuration is applied to the database on restart; any runtime changes made via the API are overwritten.

<agents>
<agent name="1000@default"
type="callback"
contact="[leg_timeout=10]user/1000@default"
status="Available"
max-no-answer="3"
wrap-up-time="10"
reject-delay-time="10"
busy-delay-time="60" />
</agents>

The name attribute is required and typically follows the format extension@context.

Agent Parameter Reference

ParameterPurposeAccepted ValuesDefault
typeHow the module reaches the agent. Callback originates an outbound call to contact; uuid-standby bridges to an existing channel UUID specified in contact.Callback, uuid-standbyRequired
contactOriginate string (Callback type) or channel UUID (uuid-standby type) for the agent leg. Channel variables may be set in square brackets.StringRequired
statusInitial status applied to the agent when the XML configuration is loaded. Status controls whether the agent is offered calls.Available, Available (On Demand), On Break, Logged OutLogged Out
max-no-answerNumber of consecutive unanswered calls before the agent's status is changed to agent-no-answer-status. 0 disables the limit.Integer >= 00
wrap-up-timeSeconds the agent is unavailable after a call ends before returning to Available.Integer >= 0 (seconds)0
reject-delay-timeSeconds to wait before offering another call to an agent who rejected the previous one.Integer >= 0 (seconds)0
busy-delay-timeSeconds to wait before offering another call to an agent whose line returned busy.Integer >= 0 (seconds)0
no-answer-delay-timeSeconds to wait before offering another call to an agent who did not answer.Integer >= 0 (seconds)0
ready_timeUnix epoch timestamp before which the agent is not offered calls. Set automatically by the module after a no-answer event; also settable via the callcenter_config agent set ready_time API command.Integer (epoch seconds)0 (immediately available)

Status values:

StatusBehavior
AvailableAgent is offered calls normally.
Available (On Demand)Agent is only offered a call when explicitly requested (used with some external systems).
On BreakAgent is logged in but not accepting calls.
Logged OutAgent is not accepting calls and is not counted as available.

Tier Assignment

Tiers link an agent to a queue and define the agent's priority within that queue. Agents with a lower level number are offered calls before those with a higher number. Within the same level, position determines order.

Tiers are defined under the <tiers> element of callcenter.conf.xml.

<tiers>
<tier agent="1000@default" queue="support@default" level="1" position="1"/>
<tier agent="1001@default" queue="support@default" level="2" position="1"/>
</tiers>

If level or position is omitted, it defaults to 1. When tier configuration is applied on restart, supplied values overwrite any runtime changes to level and position. Omitting both attributes preserves existing database values.

Tier Parameter Reference

ParameterPurposeAccepted ValuesDefault
agentAgent name, matching an entry in <agents>.StringRequired
queueQueue name, matching an entry in <queues>.StringRequired
levelPriority group. Lower numbers are exhausted before higher numbers are tried (subject to tier-rules-apply).Integer >= 11
positionOrder within a level when strategies that use position (for example, top-down, sequentially-by-agent-order) are active.Integer >= 11

Tier rules and escalation: When tier-rules-apply is false (the default), callers are offered to all tiers simultaneously without delay. When tier-rules-apply is true, callers start at level 1 and advance to the next level only after waiting tier-rule-wait-second seconds (multiplied by the level number if tier-rule-wait-multiply-level is true). If no agents exist in the current tier and tier-rule-no-agent-no-wait is true, the caller advances immediately.


The callcenter Dialplan Application

The callcenter dialplan application places an inbound call into a named queue. The call waits until an available agent is found and the agent leg is bridged.

Syntax:

callcenter <queue_name>

Example:

<extension name="inbound-support">
<condition field="destination_number" expression="^5000$">
<action application="answer"/>
<action application="callcenter" data="support@default"/>
</condition>
</extension>

The call must be answered before invoking callcenter. The application blocks until the call is bridged to an agent or the caller abandons. Queue wait-time limits (max-wait-time, max-wait-time-with-no-agent) cause the application to return, at which point the dialplan can route the call elsewhere.

A companion application, callcenter_track, registers an externally originated call as a call center member for tracking purposes without placing it in the queue. This supports scenarios where a call was bridged outside of mod_callcenter but should be reflected in agent state.


Global Settings for mod_callcenter

The <settings> block in callcenter.conf.xml configures module-wide options.

<settings>
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
<!--<param name="dbname" value="/dev/shm/callcenter.db"/>-->
<!--<param name="cc-instance-id" value="single_box"/>-->
</settings>
ParameterPurposeAccepted ValuesDefault
odbc-dsnODBC connection string for external database storage. When set, the module uses ODBC instead of the internal SQLite database. Format: dsn:user:pass.StringNone (SQLite used)
dbnamePath or name of the SQLite database file.File pathcallcenter
cc-instance-idInstance identifier used to namespace database rows. Relevant in deployments where multiple FreeSWITCH instances share a database.Stringsingle_box
debugDebug verbosity level. Higher values log more detail.Integer0
reserve-agentsWhen true, an agent is reserved (state set to Reserved) before a call is offered, preventing the same agent from being offered to two callers simultaneously.true, falsefalse
truncate-tiers-on-loadWhen true, the tiers table is emptied on module load before XML tiers are applied.true, falsefalse
truncate-agents-on-loadWhen true, the agents table is emptied on module load before XML agents are applied.true, falsefalse
global-database-lockWhen true, the module serializes database access with a global lock. Set to false to allow finer-grained locking.true, falsetrue
agent-originate-timeoutSeconds to wait for an agent's Callback-type leg to answer when originating. A value of 0 falls back to the default.Integer (seconds)60

mod_callcenter API Commands

mod_callcenter exposes runtime management through the callcenter_config API and a separate callcenter_break API. Both are usable from fs_cli, the event socket, and api/bgapi dialplan applications. callcenter_config is also registered as a JSON API. Commands return +OK on success or a -ERR <reason> line on failure; get, list, and count commands return data instead.

The general form is:

callcenter_config <section> <action> <args>

Sections are agent, tier, and queue.

callcenter_config agent

CommandPurpose
agent add <name> <type>Create an agent. type is callback or uuid-standby.
agent del <name>Delete an agent.
agent reload <name>Reload the agent's definition from XML.
agent set status <agent_name> <status>Set agent status (Logged Out, Available, Available (On Demand), On Break). Setting Available resets talk time, answered-call count, and no-answer count.
agent set state <agent_name> <state>Set agent state (Waiting, Receiving, In a queue call, Idle, Reserved).
agent set contact <agent_name> <contact>Set the agent's originate string or standby UUID.
agent set ready_time <agent_name> <epoch>Hold the agent unavailable until the given Unix epoch time.
agent set reject_delay_time <agent_name> <seconds>Set the delay before re-offering after a rejected call.
agent set busy_delay_time <agent_name> <seconds>Set the delay before re-offering after a busy result.
agent set no_answer_delay_time <agent_name> <seconds>Set the delay before re-offering after a no-answer.
agent get status <agent_name>Return the agent's current status.
agent get state <agent_name>Return the agent's current state.
agent get uuid <agent_name>Return the agent's current channel UUID.
agent list [<agent_name>]List all agents, or one named agent, as pipe-delimited rows.

callcenter_config tier

CommandPurpose
tier add <queue_name> <agent_name> [<level>] [<position>]Assign an agent to a queue. level and position default to 1.
tier set state <queue_name> <agent_name> <state>Set the tier state (Ready, No Answer, Offering, Active Inbound, Standby).
tier set level <queue_name> <agent_name> <level>Set the tier's priority level.
tier set position <queue_name> <agent_name> <position>Set the tier's position within its level.
tier del <queue_name> <agent_name>Remove the agent from the queue.
tier reload <queue_name> <agent_name>Reload the tier from XML. Pass all as the queue name to reload every tier.
tier listList all tiers ordered by level then position.

callcenter_config queue

CommandPurpose
queue load <queue_name>Load a queue definition into memory.
queue unload <queue_name>Remove a queue from memory.
queue reload <queue_name>Unload then reload a queue.
queue listList all loaded queues as pipe-delimited rows.
queue list agents <queue_name> [<status>] [<state>]List agents in a queue, optionally filtered by status and then state.
queue list members <queue_name>List waiting callers in a queue, ordered by score (longest-waiting first).
queue list tiers <queue_name>List the tiers configured for a queue.
queue countReturn the number of loaded queues.
queue count agents <queue_name> [<status>] [<state>]Count agents in a queue, optionally filtered by status and then state.
queue count members <queue_name>Count waiting callers in a queue.
queue count tiers <queue_name>Count the tiers in a queue.

callcenter_break

callcenter_break stops the module from watching a channel UUID and releases the associated agent. It is used to break an agent out of a call that the module is tracking.

Syntax:

callcenter_break agent <uuid>

The <uuid> is the channel UUID to stop watching. The command flags the channel so that mod_callcenter ends its supervision on the next pass, freeing the agent.