Phone Voice Integration技能使用说明
电话语音集成
通过 ElevenLabs Agents + Twilio,将您的 OpenClaw 转变为可通过电话呼叫的助手。
您将获得:

- 📞 从任何电话呼叫您的机器人
- 🔐 来电显示认证 + 语音 PIN 安全
- 🛡️ 来电筛选(基于白名单)
- 🧠 完整的记忆上下文(加载 MEMORY.md, USER.md)
- 💰 每次通话成本追踪
- 📝 通话记录及摘要
- ⏱️ 速率限制
- 🌐 永久隧道(Cloudflare)或临时隧道(ngrok)
架构
Phone → Twilio → ElevenLabs Agent → Your Bridge → Anthropic Claude → OpenClaw Tools
↓
Memory Context
(MEMORY.md, USER.md)
流程:
- 呼叫者拨打您的 Twilio 号码
- Twilio 将呼叫路由至 ElevenLabs Agent
- Agent 向您的桥接器发送聊天完成请求(模拟 OpenAI API)
- 桥接器将其转换为 Anthropic 格式,并从记忆文件中注入上下文
- Claude 响应 → ElevenLabs 文本转语音 → 呼叫者听到语音回复
先决条件
- 已安装并运行 OpenClaw
- ElevenLabs 账号 + API 密钥
- Twilio 账号 + 电话号码
- Anthropic API 密钥
- Cloudflare 隧道或者ngrok(用于暴露本地主机)
设置
1. 在 OpenClaw 中启用聊天补全功能
此技能无需此步骤——桥接服务器绕过 OpenClaw 并直接调用 Claude。这让您能更好地控制记忆注入和成本追踪。
2. 创建桥接服务器
桥接服务器是一个 FastAPI 服务器,它:
- 接收来自 ElevenLabs 的
兼容 OpenAI 的 /v1/chat/completions 请求注入记忆上下文(MEMORY.md、USER.md、实时数据) - 调用 Anthropic Claude API
- 以 OpenAI 格式流式传输响应
- 记录成本和对话记录
- 关键文件:
server.py
— 包含 /v1/chat/completions 端点的 FastAPI 应用— FastAPI app with /v1/chat/completions endpointfred_prompt.py— 系统提示词构建器(加载记忆文件).env— 密钥(API密钥、令牌、白名单)contacts.json— 用于来电筛选的呼叫者白名单
3. 设置 Cloudflare 隧道(推荐)
ngrok 的永久、安全替代方案:
# Install cloudflared
brew install cloudflare/cloudflare/cloudflared
# Login and configure
cloudflared tunnel login
cloudflared tunnel create <tunnel-name>
# Run the tunnel
cloudflared tunnel --url http://localhost:8013 run <tunnel-name>
在 Cloudflare DNS 中添加一个 CNAME 记录:
voice.yourdomain.com → <tunnel-id>.cfargotunnel.com
或者使用 ngrok(临时):
ngrok http 8013
4. 配置 ElevenLabs 智能体
选项 A:手动(通过用户界面)
- 前往 ElevenLabs 仪表板 → Conversational AI(对话式 AI)
- 创建新的智能体
- 在 LLM 设置 → 自定义 LLM 下
- 设置 URL:
https://voice.yourdomain.com/v1/chat/completions - 添加请求头:
Authorization: Bearer <你的桥接令牌>
选项 B:编程方式(通过 API)
# Step 1: Store your bridge auth token as a secret
curl -X POST https://api.elevenlabs.io/v1/convai/secrets \
-H "xi-api-key: YOUR_ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "new",
"name": "bridge_auth_token",
"value": "YOUR_BRIDGE_AUTH_TOKEN"
}'
# Response: {"secret_id": "abc123..."}
# Step 2: Create the agent
curl -X POST https://api.elevenlabs.io/v1/convai/agents/create \
-H "xi-api-key: YOUR_ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"conversation_config": {
"agent": {
"language": "en",
"prompt": {
"llm": "custom-llm",
"prompt": "You are a helpful voice assistant.",
"custom_llm": {
"url": "https://voice.yourdomain.com/v1/chat/completions",
"api_key": {"secret_id": "abc123..."}
}
}
}
}
}'
5. 连接 Twilio 电话号码
在 ElevenLabs 代理设置中:
- 前往电话部分
- 输入 Twilio 账户 SID 和认证令牌
- 选择您的 Twilio 电话号码
- 保存
完成!您的机器人现在可以接听该电话号码的来电。
安全功能
来电显示认证
自动识别白名单号码:
// contacts.json
{
"+12505551234": {
"name": "Alice",
"role": "family"
}
}
语音 PIN 码验证
针对未知来电者或高安全级别的操作:
VOICE_PIN = "banana" # Set in .env
来电者必须说出 PIN 码才能继续。
来电筛选
未知号码会收到接待员提示:
"这是弗雷德的助手。我可以为您留言或帮助解答一般问题。"
频率限制
可配置每小时限制:
RATE_LIMIT_PER_HOUR = 10
防止滥用和成本失控。
记忆注入
桥接器在每次通话前自动加载上下文:
读取的文件:
MEMORY.md— 关于用户的长期信息、项目、偏好USER.md— 用户档案(姓名、位置、时区)- 最近的通话记录(跨通话记忆)
实时数据注入:
- 当前时间/日期
- 天气(可选,通过API获取)
- 日历事件(可选,通过gog CLI获取)
所有数据在Claude看到对话前注入系统提示。
成本追踪
每次通话记录到memory/voice-calls/costs.jsonl:
{
"call_sid": "CA123...",
"timestamp": "2026-02-03T10:30:00",
"caller": "+12505551234",
"duration_sec": 45,
"total_cost_usd": 0.12,
"breakdown": {
"twilio": 0.02,
"elevenlabs": 0.08,
"anthropic": 0.02
}
}
对JSONL文件进行分析以追踪月度支出。
使用示例
呼叫您的机器人:
- 拨打您的Twilio号码
- 如果您在白名单中 → 开始随意对话
- 如果你是未知来电者 → 启动接待员模式
- 可要求它查看你的日历、发送消息、设置提醒等
外拨电话(可选):
curl -X POST https://voice.yourdomain.com/call/outbound \
-H "Authorization: Bearer <BRIDGE_TOKEN>" \
-d '{"to": "+12505551234", "message": "Reminder: dentist at 3pm"}'
配置选项
环境变量(.env):
ANTHROPIC_API_KEY=sk-ant-...
ELEVENLABS_API_KEY=sk_...
ELEVENLABS_AGENT_ID=agent_...
TWILIO_ACCOUNT_SID=AC...
TWILIO_AUTH_TOKEN=...
TWILIO_NUMBER=+1...
LLM_BRIDGE_TOKEN=<random-secure-token>
VOICE_PIN=<your-secret-word>
CLAWD_DIR=/path/to/clawd
白名单(contacts.json):
{
"+12505551234": {"name": "Alice", "role": "family"},
"+12505555678": {"name": "Bob", "role": "friend"}
}
高级功能:办公时间
限制通话至办公时段:
# In server.py
OFFICE_HOURS = {
"enabled": True,
"timezone": "America/Vancouver",
"weekdays": {"start": "09:00", "end": "17:00"},
"weekends": False
}
非办公时间 → 转接语音信箱提示
调试
直接测试桥接功能:
curl -X POST https://voice.yourdomain.com/v1/chat/completions \
-H "Authorization: Bearer <BRIDGE_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": false
}'
检查日志:
tail -f ~/clawd/memory/voice-calls/bridge.log
验证Twilio网络钩子:
- 拨打你的号码
- 查看Twilio控制台 → 通话记录 → 网络钩子状态
- 应能看到来自ElevenLabs的200响应
费用估算
每分钟费用明细:
- Twilio:约0.01美元/分钟(呼入)+ 运营商费用
- ElevenLabs语音合成:约0.05美元/分钟(根据语音质量浮动)
- Anthropic Claude:约0.01美元/分钟(取决于令牌使用量)
- 总计:约0.07-0.10美元/分钟(约4-6美元/小时通话时间)
使用速率限制和来电筛选来控制成本。
对比:本教程与基础教程
ElevenLabs官方教程:
- ✅ 基础集成
- ❌ 无安全性
- ❌ 无记忆持久性
- ❌ 无成本追踪
- ❌ 临时ngrok网址
本技能(Phone Voice v2.0):
- ✅ 包含以上所有功能
- ✅ 来电显示 + PIN码安全验证
- ✅ 跨通话记忆
- ✅ 成本追踪与分析
- ✅ 永久隧道(Cloudflare)
- ✅ 速率限制
- ✅ 来电筛选
- ✅ 通话记录日志
链接
- ElevenLabs智能体:https://elevenlabs.io/conversational-ai
- Twilio:https://www.twilio.com/
- Cloudflare 隧道:https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/
- 参考实现:(可应要求提供 — 私信 @FredMolty)
许可证
MIT — 可自由使用,如能注明出处将不胜感激。
由 Fred (@FredMolty) 构建 — 自 2026 年起运行于 OpenClaw 平台。


微信扫一扫,打赏作者吧~