一句话定位
callflow-server + callflow-webpage 是平台的管理控制台:一个 Web 后台,用来
查看 FreeSWITCH 运行数据、管理业务路由与号码映射、在线调整 callflow-esl 的运行时
配置(TTS / 录音),以及试听 TTS 音色——不用改配置文件、不用重启服务。
它把”看通话数据、配号码路由、调 TTS 参数、试音色”这些日常运维动作,从改 JSON +
重启,变成网页上点几下。
架构与数据流
1 | ┌────────────────────┐ HTTP ┌────────────────────────┐ |
关键点:callflow-server 写的运行时配置,落在 callflow-esl 同一套 callflow schema
表里(callflow_runtime_configs)。前端”保存”后再点”重载”,callflow-server 会POST 到 callflow-esl 的 /runtime-configs/reload,让其重新读取配置——新通话立即生效。
四块功能
1. 看板(/)
调用 GET /api/freeswitch/overview,展示实时活动通道数、当前通话数、SIP 注册数,
以及最近通道 / 注册明细。数据全部来自 FreeSWITCH 数据库,只读。
2. FreeSWITCH 数据浏览(/tables/:name)
通用表浏览器:下拉切换任意 FreeSWITCH 表(channels、calls、registrations、
sip_dialogs、basic_calls / detailed_calls 视图等),全文搜索 + 分页,点击单元格
查看完整内容。对应 GET /api/freeswitch/tables 与 GET /api/freeswitch/tables/{name}。
3. 配置管理(/callflow)
- 运行时配置:在线编辑
tts与recording两组配置(sherpaHttpEndpoint、streamingEnabled、streamPlaybackPrefix、speakerId、speed、playbackTarget、
录音directory/publicBaseUrl等),保存后一键”重载”通知 callflow-esl 生效; - 业务与号码映射:查看已注册业务(
call_businesses),增删改”被叫号码 → 业务”
的映射(call_business_number_mappings),即号码路由由谁接管。
4. TTS 音色试听(/tts-audition,音色试听)
这是控制台最实用的小工具:
- 进入时读取
GET /api/callflow/runtime-configs拿到当前 TTS 端点与默认参数; - 调
POST /api/tts/health读取 TTS 服务的model.numSpeakers,按说话人数量动态
渲染音色卡片——多说话人模型(如默认的 Kokoro,103 个音色)自动列出全部 speaker,
单说话人模型(如 Matcha)只显示 1 个; - 输入文本、调节语速(0.5–1.8)、选择 speaker,点试听即
POST /api/tts/audition
合成并就地播放,返回里带cached标识命中缓存与否,还能一键复制该音色的请求 JSON。
音色试听让”换 TTS 模型 / 挑哪个 speakerId / 调语速”从盲调变成所见即所得,挑好的
speakerId+speed直接填进 callflow-esl 的tts配置或业务的ctx.speak入参。
HTTP API 一览
所有响应统一用 { ok, data } / { ok, error } 信封。
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /health |
服务 + 两个数据库连通性 |
| GET | /api/freeswitch/overview |
看板计数与最近通道 / 注册 |
| GET | /api/freeswitch/tables |
可浏览的 FreeSWITCH 表清单 |
| GET | /api/freeswitch/tables/{name} |
某表的分页 / 搜索数据 |
| GET | /api/callflow/businesses |
业务列表(分页) |
| GET / POST | /api/callflow/number-mappings |
号码映射查询 / 新建 |
| PUT / DELETE | /api/callflow/number-mappings/{id} |
号码映射更新 / 软删除 |
| GET | /api/callflow/runtime-configs |
当前 tts + recording 运行时配置 |
| PUT | /api/callflow/runtime-configs/tts |
更新 TTS 运行时配置 |
| PUT | /api/callflow/runtime-configs/recording |
更新录音运行时配置 |
| POST | /api/callflow/runtime-configs/reload |
转发到 callflow-esl 触发重载 |
| POST | /api/tts/audition |
合成一段试听音频 → { wavUrl, fileName, sampleRate, cached } |
| POST | /api/tts/health |
探测 TTS 服务 /health → 模型信息(numSpeakers 等) |
配置
callflow-server 没有 config.json,全部走环境变量(见 src/config.ts):
| 环境变量 | 默认 | 说明 |
|---|---|---|
CALLFLOW_SERVER_HOST |
0.0.0.0 |
HTTP 监听地址 |
CALLFLOW_SERVER_PORT |
9913 |
HTTP 监听端口 |
FREESWITCH_DB_URL |
…@192.168.2.246:5432/freeswitch |
FreeSWITCH 数据库(只读视图) |
CALLFLOW_DB_URL |
…@localhost:5432/freeswitch?options=-c search_path=callflow |
callflow 数据库(读写) |
CALLFLOW_ESL_BASE_URL |
http://127.0.0.1:9912 |
callflow-esl HTTP,用于配置重载 |
前端 callflow-webpage 开发端口 19913,通过 VITE_CALLFLOW_API_BASE(默认http://127.0.0.1:9913)连接后端,路由为 hash 模式。
控制台同样没有内置鉴权。生产环境请置于内网或加反代鉴权层,参见
部署拓扑。
下一步
- 想看运行时配置在 callflow-esl 侧怎么被消费 → callflow-esl、配置参考
- 想看 TTS 端点、流式与缓存 → TTS 服务
- 想批量打电话而不是看数据 → 智能外呼