命令行工具
hkjarral/AVA-AI-Voice-Agent-for-Asterisk avatar
hkjarral/AVA-AI-Voice-Agent-for-Asterisk

AVA AI Voice Agent for Asterisk:把 FreePBX 变成可编程 AI 客服的模块化方案

一款开源 AI 语音代理,使用 Audiosocket/RTP 技术与 Asterisk/FreePBX 集成。

1,213 个 Star274 个 ForkPythonMIT

秒懂

它是什么?
AVA 是一个基于 Asterisk/FreePBX 的开源 AI 语音代理,用 AudioSocket/RTP 接入实时通话,通过模块化管道组合 STT、LLM 和 TTS。本文拆解它的架构、部署流程和已知边界,帮你判断它是否适合你的电话系统。
适合谁用?
AVA 适合已经运行 Asterisk 或 FreePBX、希望用开源方案快速给电话线路加 AI 语音能力的团队。它不适合没有 Asterisk 经验、或者需要开箱即用多租户管理平台的用户,因为核心仓库只覆盖单实例,多 PBX 管理需要依赖商业的 AVA Operator。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是电话系统里最难的那一环

传统 Asterisk/FreePBX 处理呼叫路由很成熟,但要让 AI 在通话中实时听、想、说,你得自己拼 STT、LLM、TTS,还要处理音频流的双向传输。AVA 把这个过程打包成一个可部署的 AI 引擎,通过 AudioSocket/RTP 接进 Asterisk 的 Stasis 应用。它面向的是已经拥有 PBX 基础设施、不想迁移到云呼叫中心平台的团队。README 里强调的“模块化管道架构”不是营销话术,它确实允许你为每次呼叫选择不同的 STT、LLM、TTS 组合。

数据流:从拨号计划到 AI 引擎再到回程音频

根据 README 的说明,调用链从 Asterisk 拨号计划开始。你在 extensions_custom.conf 里定义一个 context,比如 [from-ai-agent],然后用 Stasis(asterisk-ai-voice-agent) 把呼叫交给 AVA。通道变量 AI_AGENT 选择代理(agent),AI_PROVIDER 可以按呼叫覆盖默认的 provider。之后音频通过 AudioSocket 或 RTP 流向 ai_engine 容器,引擎内部按管道顺序处理:先 STT 转文字,再送 LLM 生成回复,最后 TTS 合成语音送回 Asterisk。v7.5.6 的发布说明里提到,外呼场景下 ARI origination 现在使用 documented 的 variables 对象来传递路由、身份、AudioSocket、AMD/consent 和 campaign 元数据,这意味着外呼的上下文传递曾经有缺陷,现在被显式修复了。

两分钟起管理界面,但真正的门槛在拨号计划

快速启动路径很清晰:先跑 sudo ./preflight.sh --apply-fixes,它会创建 .env 并生成 JWT_SECRET。然后 docker compose up -d admin_ui,从容器日志里抓一次性管理员密码。但注意,这只是管理界面,真正让电话响起来需要 ai_engine 健康检查通过,并且把拨号计划片段加到 FreePBX 里。README 给出了一段示例,其中 AI_AGENT=sales-agent 是必填的,AI_PROVIDER 是可选覆盖。文档还提示用 agent dialplan --agent <slug> 生成当前可用的片段,这说明拨号计划会随代理配置变化,手工复制粘贴容易出错。

CLI 工具:隐藏的兼容层比表面更复杂

除了 Docker 和 Web UI,AVA 提供了一套 CLI。install.sh 之后可以运行 agent setup,而旧的 agent init、agent quickstart、agent doctor、agent troubleshoot、agent demo 被标为“hidden compatibility aliases”。README 明确说新工作流应该用可见命令,并指向 docs/CLI_TOOLS_GUIDE.md。这种设计说明项目在演进过程中保留了向后兼容,但也意味着如果你在网上搜到旧教程,可能踩到废弃命令。实际使用前应该先读 CLI 指南,而不是依赖直觉。

安全边界:管理界面暴露在网络上是个现实问题

README 两次警告:管理界面监听 3003 端口,生产环境必须用防火墙、VPN 或反向代理限制访问。首次登录的密码打印在容器日志里,强制要求修改。这些是基本的运维常识,但放在 AI 语音代理的上下文里格外重要,因为管理界面能配置 API 密钥、代理逻辑和通话行为。如果暴露到公网,攻击者可能拿到 STT/TTS 服务的密钥,甚至篡改对话策略。项目没有提供内置的认证中间件之外的额外保护,所以部署者必须自己负责网络隔离。

六条黄金基线:听起来很美,但验证成本不低

README 宣称有“6 production-ready golden baselines validated for enterprise deployment”。它没有在 README 里列出这六条基线具体是什么,也没有给出验证方法。对于想要直接上生产的团队,这算是一个信息缺口。你需要自己检查 docs 目录下的文档,或者跑 demo 来确认。更实际的问题是,这些基线是否覆盖了你需要的语言、电话线路类型(PSTN、SIP trunk)和并发量。如果基线只针对英语和北美网络,那么你的场景可能需要额外调优。

维护与升级:版本节奏快,行为变化需警惕

最近三个版本间隔约三到四周:v7.5.4 在 7 月底,v7.5.5 在 8 月初,v7.5.6 在 8 月底。v7.5.6 的发布说明强调“不迁移数据库、不重新分配 Agent、不改变音频配置文件”,但引入了 per-Agent 挂断策略和配置化 summary LLM。这类行为变化意味着升级后需要回归测试,特别是如果你依赖全局的结束语列表。项目是 MIT 许可,你可以自由修改,但如果你 fork 了,就得自己跟上上游的 bug 修复。商业层面的 AVA Operator 是附加层,核心仓库保持免费,但多实例管理需要额外付费。

编辑结论

AVA 适合已经运行 Asterisk 或 FreePBX、希望用开源方案快速给电话线路加 AI 语音能力的团队。它不适合没有 Asterisk 经验、或者需要开箱即用多租户管理平台的用户,因为核心仓库只覆盖单实例,多 PBX 管理需要依赖商业的 AVA Operator。采用前先验证三点:确认你的 Asterisk 版本支持 ARI 和 AudioSocket,检查 .env 中 JWT_SECRET 的生成与轮换流程,以及阅读 docs/Transport-Mode-Compatibility.md 里传输模式与管道组合的兼容矩阵。MIT 许可意味着你可以自由修改和商用,但后续升级要跟踪 v7.5.x 的发布说明,因为像 v7.5.6 这类版本会引入行为变化(如挂断策略的 per-Agent 作用域),升级前需回归测试。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记