IVR 编辑器
IVR Editor 是可视化 IVR 流程编辑器,支持拖拽式菜单设计、业务时间控制、TTS 语音合成和多级菜单。
1. 启用
[proxy]
addons = ["ivr-editor"]
数据库要求:自动创建 rustpbx_ivr_projects 和 rustpbx_ivr_version_history 表。支持 SQLite / MySQL / PostgreSQL。
2. 项目管理
2.1 创建项目
控制台 → IVR Editor → 新建项目:
- 名称、描述
- 状态:draft / published
2.2 版本管理
每次发布创建版本快照,支持回滚:
- 查看版本历史
- 一键回滚到历史版本
3. 可视化编辑
3.1 节点类型
| 节点 | 说明 | 参数 |
|---|---|---|
| Menu | 菜单节点 | DTMF 选项映射 |
| Play | 播放音频 | 音频文件或 TTS 文本 |
| Transfer | 转接 | 分机/队列/外部号码 |
| Queue | 排队 | 队列名,支持 return_to_ivr |
| Voicemail | 语音信箱 | 邮箱扩展号 |
| Collect | 收集按键 | 变量名、位数、超时 |
| CollectExtension | 收集分机号 | 转接到输入的分机 |
| Webhook | 调用 HTTP API | URL、Headers |
| Hangup | 挂断 | 可选拨放提示后挂断 |
| Repeat | 重播当前菜单 |
编辑界面:左侧是菜单列表(根菜单 + 具名子菜单);右侧为选中菜单的欢迎语(音频文件或 TTS)、无效输入提示、超时/重试设置,以及每个 DTMF 按键一张可折叠卡片,包含标签与动作(Queue / Transfer / IVR / SIP URI / Realtime)。History 展示已发布版本并支持一键回滚;Save 保存草稿,Publish 正式生效。
3.2 编辑流程
- 拖拽节点到画布
- 连接节点(DTMF 按键 → 目标节点)
- 为每个节点配置参数
- 设置业务时间规则
- 预览和发布
3.3 业务时间
每个项目可配置:
| 配置 | 说明 | 示例 |
|---|---|---|
| 时区 | 时间判断的时区 | Asia/Shanghai |
| 工作日 | 工作日期 | 周一至周五 |
| 工作时间 | 每日工作时段 | 09:00-12:00, 13:00-18:00 |
| 休息时间 | 午休等 | 12:00-13:00 |
| 非工作时间动作 | 休息/非工作日处理 | 转语音信箱/播放提示后挂断 |
4. TTS 语音合成
4.1 内置 Edge TTS
使用 Microsoft Edge TTS(edge-cli 工具)合成语音:
支持 11 种语音:
| 语音 ID | 语言 | 性别 |
|---|---|---|
| zh-CN-XiaoxiaoNeural | 中文 | 女 |
| zh-CN-YunxiNeural | 中文 | 男 |
| en-US-JennyNeural | 英文 | 女 |
| en-US-GuyNeural | 英文 | 男 |
| ja-JP-NanamiNeural | 日文 | 女 |
| ko-KR-SunHiNeural | 韩文 | 女 |
| es-ES-ElviraNeural | 西班牙文 | 女 |
| fr-FR-DeniseNeural | 法文 | 女 |
| de-DE-KatjaNeural | 德文 | 女 |
4.2 TTS 缓存
TTS 结果按 SHA-256(voice+text) 缓存到本地目录,避免重复合成。
4.3 手动 TTS
POST /console/ivr_editor/tts
Body: { "text": "欢迎致电", "voice": "zh-CN-XiaoxiaoNeural" }
4.4 音频上传
支持上传自定义 WAV/MP3 音频文件作为 IVR 提示音。
5. 发布流程
- 编辑完成后点击 发布
- 系统自动:
- 构建 IVR TOML 配置
- 生成所有 TTS 音频
- 保存版本快照
- 写入配置目录
- RustPBX 热加载新 IVR 配置
6. 配置
config/ivr_editor.toml:
sounds_dir = "config/sounds"
ivr_config_dir = "config/ivr"
tts_cache_dir = "config/tts_cache"
[default_voices]
zh = "zh-CN-XiaoxiaoNeural"
en = "en-US-JennyNeural"
7. API
| 操作 | 端点 |
|---|---|
| 列出项目 | GET /console/ivr_editor |
| 创建项目 | POST /console/ivr_editor |
| 查看项目 | GET /console/ivr_editor/{id} |
| 更新项目 | PATCH /console/ivr_editor/{id} |
| 发布 | POST /console/ivr_editor/{id}/publish |
| 版本历史 | GET /console/ivr_editor/{id}/versions |
| 回滚 | POST /console/ivr_editor/{id}/versions/{vid}/rollback |
| TTS 合成 | POST /console/ivr_editor/tts |
| 上传音频 | POST /console/ivr_editor/upload-sound |