扩展 RustPBX
RustPBX 的设计目标是可编程,而不只是可配置。本页梳理全部扩展点,帮助你选对工具,并链接到细节。
1. 如何选择扩展点
| 你的目标 | 使用 | 详情 |
|---|---|---|
| 每次呼叫由自己的服务决定路由 | HTTP 动态路由 | 路由 → HTTP 动态路由 |
| 每个呼叫步骤由自己的代码驱动 | Step IVR | Step IVR 接入 |
| 对事件(通话/队列/坐席)做出反应 | RWI Webhook | RWI 事件与 Webhook |
| 交互式控制在线通话 | RWI WebSocket | RWI 协议参考 |
| 脚本化呼叫控制 / 查询状态 | REST API | RWI 协议参考 §3 |
| 增加子系统(表、控制台页、路由) | Addon trait | 技术规格 §5 |
| 卸载录音/话单/流量 | 存储后端 | 基础安装 → 存储 |
2. 入向决策:HTTP 路由与 Step IVR
HTTP 动态路由每次 INVITE 询问你的服务一次:返回中继/拒绝/忙,并可覆写主叫身份;fallback_to_static = true 保证你的服务故障时不中断呼叫。
Step IVR 每个呼叫步骤询问一次:播放、收号、分支、录音、移交。当 IVR 逻辑在你自己的应用里(CRM 查询、余额、AI 决策)时用它。
两者配置见路由章节与 Step IVR 指南。
3. 出向事件:RWI Webhook
所有平台事件(通话生命周期、队列/ACD、坐席状态、DTMF、IVR 追踪、call_error)都能推送到 HTTP 端点:
[rwi_webhook]
url = "https://your-server.example.com/api/rwi/events"
events = ["call_hangup", "call_error", "queue_agent_connected"]
retries = 3
投递运行在独立 worker 上,带指数退避与稳定幂等键。详见 RWI 事件与 Webhook。
4. 双向控制:RWI WebSocket
单个 WebSocket 即可:命令发出、事件在同一有序通道返回——发起、应答、转接、保持、播放、DTMF、队列操作、会议控制、会话用户数据。
集成方关注的关键属性:
- 每个呼叫范围内事件都带根通话标识(
call_id+session_id) - 归因信息(
src_ip/client_ip),便于多租户过滤 - 集群下按归属路由——命令总能到达通话所在节点
- 用户数据自动复制并在转接后保留
参考:RWI 协议参考。
5. REST API
每项交互能力都有 REST 孪生接口,便于脚本与批处理:
| 操作 | 端点 |
|---|---|
| 活动通话 | GET /api/calls/active |
| 会话详情 | GET /api/calls/active/{session_id} |
| 发送命令 | POST /api/calls/active/{session_id}/commands |
| 用户数据 | GET / PUT /api/calls/active/{session_id}/userdata |
| 通话记录 | GET /api/call-records |
| 报表 | GET /api/reports/v2/{call,trunk,…} |
| 分机 / 中继 / 路由 | PUT /api/extensions、/api/sip-trunk、/api/routing |
用带 scope 的 API Token 认证([console] api_tokens),见用户、角色与部门。
6. 插件
当“扩展“意味着新功能——新表、控制台页面、API 路由、拨号检查器、呼叫钩子——实现 Addon trait。插件可参与:
- 路由贡献——出现在统一路由栈中
- 分机生命周期钩子——
on_extension_created/_updated/_deleting - 控制台页面/API 路由——自动挂载
- 错误目录——贡献类型化呼叫错误
- 种子数据——用于演示/测试
社区插件:ACME、Archive、Transcript、Queue、Observability。商业插件:Wholesale、呼叫中心、IVR 编辑器、语音信箱、终端管理、企业认证、Telemetry。
7. 配置与存储钩子
- 配置存储——生成的配置(队列、路由、中继、ACL、IVR)可存放数据库并导出为文件,适配 GitOps
- 存储后端——一个
[storage]段同时服务录音、话单归档、SipFlow 卸载,支持 presigned URL - TTS/ASR 驱动——按部署选择 CLI 或 HTTP 驱动
8. 集成蓝图
| 目标 | 组合 |
|---|---|
| CRM 弹屏 | RWI Webhook(事件)+ 逐键 X-* 头 + 话务台弹屏模板 |
| 点击拨号 | REST originate + RWI 事件跟踪状态 |
| AI 前台 | Step IVR(逻辑)+ realtime 桥(对话)+ 转写 |
| 反欺诈 | HTTP 路由(决策)+ ACL/频率限制(执行) |
| 自定义质检 | RWI Webhook(转写/录音)+ 报表 API |
实战示例见可扩展性博客系列。