最新消息:

OpenClaw 如何接入 ElevenLabs 实现电话语音控制(环境配置指南)

环境配置 zhiai 38浏览 0评论

问题现象:OpenClaw 无法响应 ElevenLabs 电话呼叫

当你尝试使用 ElevenLabs 的 phone_call 功能触发 OpenClaw Agent 时,可能出现以下典型现象:

  • ElevenLabs 控制台显示「Call initiated」但无后续日志;
  • OpenClaw 服务未收到任何 Webhook 请求(/v1/elevenlabs/webhook 无访问记录);
  • 收到 401 Unauthorized403 Forbidden 响应(常见于 JWT 验证失败);
  • 音频流中断、延迟高或仅单向通话(如 ElevenLabs 能听 OpenClaw,但无法识别用户语音)。

常见原因

该集成失败通常不源于代码逻辑,而在于环境与协议层配置缺失:

  1. Webhook 地址未公网可达:ElevenLabs 要求回调 URL 必须是 HTTPS、可被外网访问(不能是 localhost 或内网 IP);
  2. JWT 验证密钥不匹配:ElevenLabs 在 Webhook 请求头中携带 X-ElevenLabs-Signature,需用你配置在 ElevenLabs Dashboard 的 Webhook Signing Secret 验证;
  3. 音频编解码不兼容:ElevenLabs 默认发送 audio/wav; codec=pcm(16-bit, 24kHz, mono),OpenClaw 若未启用对应解码器会静音;
  4. 缺少 STUN/TURN 配置:当 OpenClaw 运行在 NAT 后(如 Docker 容器、云函数),需显式配置 STUN 服务器(如 stun:stun.l.google.com:19302)以建立 WebRTC 音频通道;
  5. 超时设置过短:ElevenLabs 要求 Webhook 响应必须在 3 秒内返回 200 OK,否则视为失败并终止呼叫。

分步解决方案

1. 配置公网可访问的 Webhook Endpoint

确保你的 OpenClaw 实例暴露在公网,并使用有效 HTTPS 证书(推荐 Let’s Encrypt)。例如:

https://agent.yourdomain.com/v1/elevenlabs/webhook

在 ElevenLabs Dashboard → Phone SettingsWebhook URL 中填写该地址。

2. 启用并验证 JWT 签名

在 OpenClaw 启动时传入环境变量:

ELEVENLABS_WEBHOOK_SECRET=your_secret_from_dashboard

并在 Webhook 处理逻辑中校验签名(Python 示例):

import hmac, hashlib

def verify_signature(payload_body: bytes, signature: str, secret: str) -> bool:
    expected_signature = "sha256=" + hmac.new(
        secret.encode(), payload_body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected_signature, signature)

3. 配置音频流支持

确认 OpenClaw 已启用 pydublibrosa,并在配置中声明:

audio:
  input_format: "wav"
  sample_rate: 24000
  channels: 1
  bit_depth: 16

4. 设置 STUN 服务器(如部署在 Docker/K8s)

在 OpenClaw 的 webrtc_config.yaml 中添加:

stun_servers:
  - "stun:stun.l.google.com:19302"
  - "stun:stun1.l.google.com:19302"

如何验证是否修复成功

执行以下三步验证:

  1. curl -X POST https://agent.yourdomain.com/v1/elevenlabs/webhook -H "X-ElevenLabs-Signature: fake" -d '{}' -v 检查服务是否响应 200 且无报错;
  2. 在 ElevenLabs Dashboard 触发一次测试呼叫,查看 OpenClaw 日志是否输出 Received phone_call event: connected
  3. 拨打测试号码后,监听 OpenClaw 是否调用 speech_to_text 并生成 text_to_speech 响应 —— 可通过 ffmpeg -i /tmp/latest_input.wav -ar 24000 -ac 1 -f wav - 检查原始音频文件。

解决不了时的补充建议

若仍失败,请检查:

  • 防火墙/CDN 是否拦截了 X-ElevenLabs-Signature(Cloudflare 默认丢弃自定义头,需在 Rules → Transform Rules 中放行);
  • ElevenLabs 电话区域限制:当前仅支持美国号码(+1)呼入,国际号码需申请白名单;
  • OpenClaw 版本兼容性:确认使用 v0.8.3+(旧版不支持 phone_call 事件类型),运行 openclaw --version 验证;
  • 查看 ElevenLabs Webhook Logs(Dashboard → Phone → Webhook Logs),获取真实错误码与响应体。

如所有配置无误但仍失败,建议在 OpenClaw GitHub Issues 提交 [elevenlabs-phone] 标签 issue,并附上脱敏后的 Webhook 日志与 curl -v 测试结果。请以官方最新文档为准。

转载请注明:AI工具问题解答站 » OpenClaw 如何接入 ElevenLabs 实现电话语音控制(环境配置指南)

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址