Files

26 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
目标机器:39.106.106.246
登录用户: root
任务目标:在 asterisk 运行时下线后,调研部署 FreeSWITCH 并以 ESL + Mock SIP 实现 SIP 对接与运行状态检测。
项目地址: https://github.com/signalwire/freeswitch (容器镜像 safarov/freeswitch = FreeSWITCH 1.10.12)
项目背景:使用 FreeSWITCH 对接 MOCK SIP 服务商,作为AI外呼机器人基础能力底座,使用MOCK对接LLM ASR实现双向语音通信, 本项目仅实现外呼功能,不实现多人房间与呼入功能调研。给出可实现最快水平扩展的结论方案并赋实践证据。给出详细的部署过程文档与系统调优方案。
---
## 交付状态 (2026-08-31 全部完成)
| 目标 | 状态 | 证据 |
|---|---|---|
| asterisk 运行时下线 | ✅ | ast-* 容器清零, 8088/8089 端口释放; `/opt/asterisk-ari/` 交付物保留 |
| FreeSWITCH 部署 (双节点) | ✅ | fs1/fs2 healthy, ESL status UP ×2 (FreeSWITCH 1.10.12), health.sh ok=5 fail=0 |
| Mock SIP 对接 (外呼) | ✅ | ESL originate ×2 → INVITE→180→200 OK(PCMU)→ACK, gateway NOREG+ping 探活 ×2 |
| 双向语音 (Mock LLM/ASR) | ✅ | `RESULT ... bidirectional=YES` (agent RX 536帧 RMS 8246; provider recv_rtp=533, 双向计数对称) |
| 运行状态检测 | ✅ | `scripts/health.sh` 容器+ESL status+gateway+呼叫数, ok=5 fail=0 |
| 水平扩展结论+实证 | ✅ | 3 路并发分摊双节点 (INVITE 源 172.18.0.3×2 / 172.18.0.4×1, 呼中 fs1=2 calls/4ch, fs2=1/2), 零配置变更 |
| 部署文档+调优方案 | ✅ | 本仓库 `README.md` (§4 部署含 7 处踩坑, §8 sysctl 沿用已应用) |
**调研要点 (vs Asterisk/ARI)**: FreeSWITCH 无 externalMedia 式外挂媒体 API —— mock-agent 自身充当 SIP UAS 端点 (FS originate 至 agent 并应答), 控制面走 ESL TCP (单连接命令式) 而非 ARI REST+WS; 水平扩展模型与 Asterisk 相同 (零共享状态节点复制, 不需要 livekit 那样的 Redis)。
**交付物**: 服务器 `/opt/freeswitch-esl/` (compose+conf+mock+scripts+etc-fs 生成器+README), 本地 `deploy/` 同源; 原始任务与完成状态见本文件, 详细文档见 `README.md`