Call Center Quick Start

1. Requirements

ItemRequirement
RustPBX version≥ 0.4.4, compiled with --features contact-center
DatabaseMySQL 8.0+ or PostgreSQL 14+ (recommended; SQLite supported but MySQL/PgSQL recommended for production)
Addon dependenciesAutomatically included: ivr-editor, voicemail, endpoint-manager, enterprise-auth, telemetry

2. Enable Call Center

In config.toml:

[proxy]
addons = ["cc"]

[proxy.cc]
# Autonomous mode: agents manage state independently via cc-phone
autonomous_enabled = true
heartbeat_interval_secs = 5
heartbeat_timeout_count = 3

# Transfer configuration
blind_transfer_enabled = true
consult_timeout_secs = 30
conference_on_transfer = true
allow_agent_to_agent = true

# Voicemail and IVR extension numbers
voicemail_extension = "*97"
ivr_extension = "ivr"

# After-call work timeout (seconds)
wrapup_timeout_secs = 60

3. Database Initialization

CC automatically creates the following tables on startup:

TablePurpose
cc_agentsAgent definitions
cc_agent_endpointsAgent endpoint bindings
cc_agent_statsAgent statistics
cc_callsCall center call records
cc_call_recordsDetailed records
cc_skill_groupsSkill groups
cc_queue_snapshotsQueue snapshots
cc_csatCustomer satisfaction ratings
cc_monitor_recordsMonitoring records
cc_cast_resultOutbound call results

4. Minimal Setup Flow

Step 1: Create a Skill Group

Call Center → Skill Groups → New:

FieldExample
Namesales
DescriptionSales team
Skill tagssales, chinese

Step 2: Create an Agent

Call Center → Agents → New:

FieldExample
Agent IDagent-001
Display nameJohn
Extension1001
Skill groupsales
Max concurrent1

Step 3: Register Agent Endpoint

The agent registers extension 1001 to RustPBX using a SIP softphone.

Alternatively, use the built-in cc-phone page (/cc/phone) as a Web softphone.

Step 4: Configure a Queue

Define an ACD queue in config/queue/:

# config/queue/sales_queue.toml
[[queue]]
name = "sales-queue"
strategy = "parallel"
max_wait_secs = 300
max_size = 50
moh = "default"

[queue.agent_match]
skill_group = "sales"

[queue.no_answer]
action = "voicemail"

Step 5: Configure Routing

In config/routes/, route inbound calls to the queue:

[[route]]
name = "to-sales"
action = "queue"
queue = "sales-queue"

[route.match]
to_user = "^4000$"

Step 6: Verify

Dial 4000 → enter queue → agent 1001 rings → answer → call established.

5. CC Phone

CC Phone is the built-in Web softphone (/cc/phone), providing:

FeatureDescription
RegistrationSIP registration to RustPBX
Status toggleIdle / Away / Break / Offline
Incoming callPop-up call notification
In-call actionsMute / Hang up / Transfer / Consult transfer
After-call workEnter Wrapup state after call ends
Break typesLunch / Training / Meeting / Personal (customizable)

6. Console Entry

The Call Center console (/cc) is a SPA page containing:

PageFunction
DashboardOverview: queue count, active calls, SLA
Agent managementCRUD, status, statistics
Skill groupsConfigure skill groups and routing rules
Real-time monitoringCurrent queue, agent status, active calls
ReportsCall reports, agent reports, SLA trends
ACD configurationStrategy, priority, overflow rules