SuperAPI AI 工具集

twilio-voice-conversation-relay

智能体与模型

查看项目

更新于 10-16 03:05

技能介绍

用途 ConversationRelay 通过持久 WebSocket 把 Twilio 电话层与你的应用相连,用于构建 AI 语音代理。通话链路为:呼叫方 ←→ Twilio(ASR/TTS)←→ WebSocket ←→ 你的应用 ←→ LLM。Twilio 负责语音识别与文本转语音,你的应用接收转写文本、调用 LLM、再发回文本供播放。

前置条件 需已升级并开通 ConversationRelay 权限的 Twilio 账户(在 Console > Voice > ConversationRelay 完成 onboarding,非即时开通);一个支持语音的 Twilio 电话号码;TWILIO_ACCOUNT_SID 与 TWILIO_AUTH_TOKEN;可通过 wss:// 访问的 WebSocket 服务器(必须 TLS);一个 LLM 集成。外呼见 twilio-voice-outbound-calls。

主要能力与用法 第一步,返回指向 WebSocket 服务器的 TwiML。Python(Flask)示例:connect.conversation_relay(url="wss://yourapp.com/ws/voice", welcome_greeting="Hello! How can I help you today?")。Node.js 用 connect.conversationRelay({...})。

第二步,处理 WebSocket 事件并回传文本。Python(websockets)在 event["type"] == "prompt" 时,取 event["voicePrompt"] 调用 LLM,发送 {"type": "text", "token": ai_response, "last": True}。Node.js 用 ws 库同理。

接收事件:connected(callSid、streamSid)、prompt(voicePrompt 转写)、interrupt(用户打断 TTS)、dtmf(digit)、error(description)。发送事件:text(token、last)、interrupt、end(reason)。可逐 token 流式发送 LLM 输出降低延迟:先发 last=False 的片段,最后发 last=True。语音配置可设 voice、language、transcription_provider、speech_model、interrupt_by_dtmf 等。

安全 voicePrompt 属不可信外部输入,传入 LLM 时应作为结构化系统提示中的用户输入隔离,并设置话题边界与输出过滤。ConversationRelay 是纯传输层,无内置内容安全,LLM 输出会被逐字朗读给呼叫方。

限制 无原始音频访问,仅文本进出;不能与 Media Streams 混用(同一通话中二者互斥,且不会报错,其一被静默忽略);不支持自定义 STT/TTS 引擎;会话中不能更换语音或提供商(仅 language 可动态切换);WebSocket 无自动重连,断开会挂断通话;仅语音,无短信;无内置记忆或上下文;不含 LLM 集成;不支持 REST API 服务端录音,需在 <Connect> 前用 <Start><Recording>;在 PCI 流程中不要启用 intelligenceService;ElevenLabs 需账户开通,且须用 Voice ID;未开通 onboarding 无法使用;必须 wss://;流式音频需发送 last: true 才会播放。