常用配置策略(配方集)
每个配方把一条业务策略映射到实现它的配置项。复制配置块、调整数值、通过 Git 发布即可。
1. 成本优先的外呼路由
策略:最便宜的运营商优先,质量异常时故障转移,保护利润。
[[routes]]
name = "intl-outbound"
direction = "outbound"
priority = 10
match = { callee = "^\\+?(1|86|44)" }
# 同优先级加权选择;启用 LCR 时按买价排序
[[routes.action.trunks]]
name = "carrier-a"
weight = 10
[[routes.action.trunks]]
name = "carrier-b"
weight = 5
同时按中继设置:max_cps/max_concurrent(容量)、allowed_ips(信任)、header_passthrough = { mode = "x_only" }(伙伴元数据)。用 wholesale 的路由模拟器验证变更。
2. 防话费欺诈(国际长途管控)
策略:未经授权,内部分机不得拨打高价/国际目的地。
# 1) ACL:仅放行运营商出口与内网
acl_rules = ["allow 10.0.0.0/8", "allow 203.0.113.5", "deny 0.0.0.0/0"]
# 2) 频率限制抑制批量拨号
[proxy.frequency_limit]
enabled = true
window_secs = 60
max_attempts = 30
block_secs = 600
配合分机级外呼权限与拒绝非白名单国际前缀的路由规则。见安全加固。
3. VIP 优待
策略:金卡客户跳过排队,直达资深坐席。
[acd.policies.support.priority]
base_priority = 0
wait_time_weight = 1.0
[acd.policies.support.priority.vip_bonus]
gold = 100
silver = 50
[acd.policies.support.strategy]
strategy_type = "skill_based"
require_exact_skill = true
把 VIP DID 路由到同一队列,通过队列元数据注入优先级;补一条溢出链兜底。见队列与 ACD。
4. 非工作时段与节假日
[acd.policies.support.schedule.business_hours]
start = "09:00"
end = "18:00"
timezone = "Asia/Shanghai"
[acd.policies.support.schedule.night_mode]
enabled = true
start = "18:00"
end = "09:00"
action = "voicemail"
[acd.policies.support.schedule.holidays]
"2026-01-01" = { name = "元旦", overflow_chain = ["voicemail"] }
配合 [proxy] voicemail_greeting 与绕过排程的紧急呼叫路由。见下班后来电处理。
5. 录音合规
[recording]
enabled = true
type = "s3"
auto_start = true
auto_start_at = "answer"
[storage]
type = "s3"
[storage.s3]
bucket = "compliance-recordings"
region = "us-east-1"
endpoint = "https://s3.example.com"
对法律禁止录音的中继按条覆盖 enabled = false;PCI 暂停场景加入 auto-start 豁免清单。见录音合规。
6. NAT / 多 WAN 媒体
external_ip = "203.0.113.10"
local_networks = ["10.0.0.0/8", "192.168.0.0/16"]
[[network_profile]]
id = "overlay"
external_ip = "100.64.10.1"
按中继覆盖 external_ip / bind_ip;Teams 场景 ice_lite = true;EIP 场景按 dialplan 开 relay_only。见NAT 与 EIP 媒体。
7. 容量保护
[proxy]
max_concurrent = 600 # 节点级上限
# 按中继
# max_cps = 40
# max_concurrent = 300
队列另有上限(max_wait_secs、按队列长度溢出),熔断器(asr_alert_threshold)防范劣质路由。配合本地统计日志留证。见性能规划。
8. 集群与滚动重启
[cluster]
peers = [
{ addr = "10.0.0.2", sip_port = 5060, ami_port = 8080 },
{ addr = "10.0.0.3", sip_port = 5060, ami_port = 8080 },
]
共享 MySQL/PostgreSQL + GitOps 同步配置 + 排水式重启。见集群部署。
9. 弹屏与 CRM 上下文
# 按中继,仅转发伙伴元数据
header_passthrough = { mode = "x_only" }
话务台弹屏模板:https://crm.example.com/customer/${customerId}?phone=${phone}。通过 RWI 用户数据或路由注入 customerId。见弹屏集成。
10. 成本/运维可视化基线
stats_log = "/var/log/rustpbx.stats.log"
stats_interval = 5
log_level = "info"
log_rotation = "daily"
再加 /metrics(Prometheus 抓取)与报表 API 聚合。见可观测性。
配方组合
生产策略通常是多个配方的组合:同一节点上可能同时有隔离的媒体网络(6)、容量上限(7)、合规录音(5)与非工作时段策略(4)。把每块配置放在独立段落并通过 Git 发布——审计轨迹是免费的。