Call Center 完整案例

本节演示搭建一个完整的客服中心,包含 IVR、ACD 排队、技能组路由、监听和满意度评价。

场景描述

公司:某电商客服中心,50 个坐席,3 个技能组

技能组:

组坐席数技能职责
sales20sales, chinese售前咨询
support20support, technical售后技术支持
vip10vip, sales, support, englishVIP 客户

需求:

  1. 400 热线接入,先播放 IVR 导航
  2. 按 1 进入售前,按 2 进入售后
  3. VIP 客户优先路由到 VIP 组
  4. 支持 supervisor 监听/密语/强插
  5. 通话结束后自动 CSAT 评价

Step 1:数据库

mysql -u root -p <<EOF
CREATE DATABASE rustpbx CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'rustpbx'@'%' IDENTIFIED BY 'CcP@ss2026';
GRANT ALL ON rustpbx.* TO 'rustpbx'@'%';
FLUSH PRIVILEGES;
EOF

Step 2:config.toml

http_addr = "0.0.0.0:8080"
database_url = "mysql://rustpbx:CcP@ss2026@dbhost:3306/rustpbx"
external_ip = "203.0.113.10"

[proxy]
addr = "0.0.0.0"
udp_port = 5060
modules = ["acl", "auth", "registrar", "call", "presence"]
media_proxy = "auto"
addons = ["cc"]

[proxy.cc]
autonomous_enabled = true
heartbeat_interval_secs = 5
heartbeat_timeout_count = 3
blind_transfer_enabled = true
consult_timeout_secs = 30
conference_on_transfer = true
voicemail_extension = "*97"
ivr_extension = "ivr"

[[proxy.cc.phone.break_types]]
id = "lunch"
label_zh = "午休"
label_en = "Lunch"

[[proxy.cc.phone.break_types]]
id = "training"
label_zh = "培训"
label_en = "Training"

[[proxy.cc.phone.break_types]]
id = "meeting"
label_zh = "会议"
label_en = "Meeting"

[console]
session_secret = "cc-console-secret-2026"

Step 3:运营商中继

config/trunks/carrier.toml:

[[trunk]]
name = "carrier-inbound"
direction = "inbound"
inbound_hosts = ["198.51.100.10"]
codec = ["pcmu", "pcma"]
max_calls = 100

Step 4:创建分机

在控制台 Extensions 中批量创建 50 个分机(1001-1050):

  • 密码随机生成
  • 注册到 RustPBX

Step 5:创建技能组

Call Center → 技能组 → 新建:

ID名称技能
sales售前组sales, chinese
support售后组support, technical
vipVIP 组vip, sales, support, english

或创建 config/cc/skill_groups.toml:

[[skill_group]]
id = "sales"
name = "售前组"
skills = ["sales", "chinese"]

[[skill_group]]
id = "support"
name = "售后组"
skills = ["support", "technical"]

[[skill_group]]
id = "vip"
name = "VIP 组"
skills = ["vip", "sales", "support", "english"]

Step 6:创建坐席

Call Center → 坐席 → 批量创建:

坐席 ID分机技能组最大并发
agent-001 ~ agent-0201001-1020sales1
agent-021 ~ agent-0401021-1040support1
agent-041 ~ agent-0501041-1050vip2

Step 7:配置队列

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"

config/queue/support_queue.toml:

[[queue]]
name = "support-queue"
strategy = "parallel"
max_wait_secs = 300
max_size = 50
moh = "default"

[queue.agent_match]
skill_group = "support"

[queue.no_answer]
action = "voicemail"

config/queue/vip_queue.toml:

[[queue]]
name = "vip-queue"
strategy = "parallel"
max_wait_secs = 60
max_size = 20
moh = "default"

[queue.agent_match]
skill_group = "vip"

[queue.no_answer]
action = "fallback_skill"
fallback_skill_group = "sales"

Step 8:配置 IVR

使用 IVR Editor 或手动创建 IVR 配置:

config/ivr/main_ivr.toml(简化版):

[[ivr]]
name = "main-ivr"
greeting = "welcome"
timeout = 10
max_retries = 3

[[ivr.menu]]
key = "1"
action = "queue"
target = "sales-queue"

[[ivr.menu]]
key = "2"
action = "queue"
target = "support-queue"

[[ivr.menu]]
key = "0"
action = "queue"
target = "vip-queue"

Step 9:路由配置

config/routes/inbound.toml:

[[route]]
name = "400-hotline"
action = "application"
application = "ivr:main-ivr"

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

Step 10:ACD 策略

通过控制台 Call Center → ACD 配置:

[acd]
enabled = true
default_policy = "default"

[acd.policies.default]
name = "default"

[acd.policies.default.strategy]
strategy_type = "longest_idle"
max_concurrent_calls = 1

[acd.policies.default.priority]
wait_time_weight = 1.5
fifo_within_same_priority = true

[acd.policies.default.priority.vip_bonus]
vip = 100

[acd.policies.default.overflow]
triggers = [
  { type = "timeout", value = 120, action = "overflow" },
  { type = "queue_length", value = 50, action = "overflow" },
]
chain = ["voicemail"]

Step 11:启动

docker run -d --name cc-pbx \
  -v $(pwd)/config.toml:/app/config.toml \
  -v $(pwd)/config:/app/config \
  -p 8080:8080 -p 5060:5060/udp \
  docker.cnb.cool/miuda.ai/rustpbx:latest

Step 12:验证

12.1 坐席上线

坐席访问 /cc/phone,使用分机号登录,状态切换到 空闲。

12.2 测试呼入

拨打 400 热线:

  1. 听到 IVR 欢迎语
  2. 按 1 → 进入 sales-queue
  3. ACD 分配空闲坐席 → 坐席振铃 → 接听

12.3 测试监听

管理员在 Call Center → 实时监控 中找到活跃通话,点击 监听。

12.4 测试 CSAT

通话结束 → 坐席挂断 → 客户听到评价提示 → 按键评分 → CDR 记录评分

12.5 测试 VIP 路由

VIP 客户拨打 400 → 按 0 → 进入 vip-queue → 优先级加分(+100)→ 优先于普通排队

Step 13:日常运维

操作频率位置
检查 Dashboard每天CC → Dashboard
查看 SLA每天CC → 实时监控
审查告警实时CC → 告警
坐席报表每周CC → 报表
通话报表每周CC → 报表
CSAT 分析每月CC → 报表
技能组调整按需CC → 技能组