详解通过Twilio、Deepgram Voice Agent、websocket等开源栈以最低$15成本构建自动应答系统。包含完整架构设计和三种接入模式。
AI 可以代替你接电话。当你无法接听时,它会接听来电,自我介绍,并进行自然的语音对话——遵循你用简明指示定义的人设:它应该如何表达、应该问什么以及允许做什么。你可以随时加入通话并从中接管。
这就是整个无硬件堆栈:Twilio 掌管电话线路,Deepgram 掌管语音对话。
这其中的大部分可以用开源免费软件和试用账户构建。桥接层本身完全运行在开源工具上,两个付费服务都可以免费试用——Twilio 试用账户附带 $15 的额度,Deepgram 试用账户附带 $200,足以构建和端到端测试本文中的所有内容。
整个答答机是两个 websocket 之间的桥:Twilio 向你流传通话音频,Deepgram Voice Agent 负责监听、思考和说话。
购买一个 Twilio 电话号码,并将其来电 webhook 指向你的服务器。来电时你用 TwiML 响应——Twilio 的 XML 指令。关键指令是:
<Connect>
<Stream url="wss://your-server/ws/screening" />
</Connect>
<Connect><Stream> 打开一个双向 websocket:Twilio 向你发送调用者的音频作为 base64 编码的 μ-law 帧,你发回的任何音频都会播放给调用者。从这一点开始,电话通话就只是一个 websocket。
你决定何时将通话转交给 AI。有三个自然的触发方式:
先呼通人类(<Dial timeout="20">),当没人接听时逐级转向 AI。
当完全没人可用时立即用 AI 应答。
让人类点击"筛选此通话"按钮,按需将来电转向 AI。
在你的服务器上,打开第二个 websocket 连接到 Deepgram Voice Agent(wss://agent.deepgram.com/v1/agent/converse)。这一个服务替代了你原本需要自己组装的整个语音管道——语音转文字、推理模型和文字转语音——隐藏在单个 socket 后面。你用一个设置消息对其进行配置:
Audio — μ-law 8 kHz 的输入和输出,完全匹配 Twilio 的电话格式。无需转码:帧直接通过。
Listen — Deepgram 语音识别模型实时转录调用者的话语。
Think — 大语言模型驱动对话。这是你的 persona 所在之处:系统 prompt 由你写的指示构建——AI 代替谁、采用什么语调、收集什么信息、允许和不允许提供什么。
Speak — Deepgram 语音说出回复。语音本身是 persona 的一部分,所以不同团队可以听起来不同。
Greeting — 确切的开场白,包括必需的披露语句,说明调用者正在与自动助手交谈。
你的服务器的工作现在变得漂亮而简单:在 Twilio socket 和 Deepgram socket 之间转发音频帧,并转发 agent 的音频回复。两个细节让它感觉很自然:
Barge-in — 当调用者开始打断 AI 时,向 Twilio 发送一个清除事件,刷新它还没播放的音频。AI 停止中途说话,而不是与调用者说话冲突。
Function calling — 当调用者提出需要真实数据的问题时("我附近有药房吗?"),Voice Agent 在同一个 socket 上发送一个函数调用请求。你的服务器运行查询并返回结果,AI 说出来。哪些函数存在由 persona 控制,所以关闭的功能永远不会被模型提出。
因为 AI 只是普通 Twilio 通话的一条腿,人类可以像任何其他通话一样加入。将通话重定向回客服的线路,AI 腿结束——同一个通话,没有等待音乐,没有转接,调用者无需重新拨号。
这里是同一个集成在我们网页应用内部运行的样子。
AI 正在接听实时通话——调用者拨打了,没人接听,助手接管了。调用者说的一切都实时流到屏幕上。


设置 persona——AI 的问候语、语音、指示和功能是用户编辑的表单,而不是代码。改变指示,下一个通话就会遵循它们。

团队培训模拟器 — 同一个语音管道指向内部:AI personas 扮演困难的调用者,所以新团队成员在第一次真实对话前练习。
转录智能 — 实时转录上的情感和合规性追踪,实时标记风险短语和调用者挫折。
实时通话智能 — 由转录和 AI 在通话期间的工具使用情况驱动的实时指导和洞察。
自动填充 UI — 从调用者说的话自动填充的表单,在对话进行中作为结构化数据捕获。
如需进一步操作,你可以考虑拉黑此人和/或举报滥用行为