扩展 RustPBX

RustPBX 的设计目标是可编程,而不只是可配置。本页梳理全部扩展点,帮助你选对工具,并链接到细节。

1. 如何选择扩展点

你的目标使用详情
每次呼叫由自己的服务决定路由HTTP 动态路由路由 → HTTP 动态路由
每个呼叫步骤由自己的代码驱动Step IVRStep IVR 接入
对事件(通话/队列/坐席)做出反应RWI WebhookRWI 事件与 Webhook
交互式控制在线通话RWI WebSocketRWI 协议参考
脚本化呼叫控制 / 查询状态REST APIRWI 协议参考 §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

实战示例见可扩展性博客系列。