SuperAPI AI 工具集

elevenlabs-webhooks

编程与开发

查看项目

更新于 10-15 14:31

技能介绍

用途

该技能面向“从 ElevenLabs 接收 Webhook”这一方向,用于搭建 ElevenLabs Webhook 处理器、调试签名验证失败、理解 ElevenLabs 事件类型与负载、处理通话转录事件以及处理语音移除通知。注意:若需要向 ElevenLabs 发起 API 调用(文本转语音、转录、智能体等),应参考官方 ElevenLabs Skills;本技能处理的是相反方向,即接收来自 ElevenLabs 的 Webhook。

主要能力

  • 签名验证与事件构造:ElevenLabs 推荐使用官方 @elevenlabs/elevenlabs-js SDK 进行 Webhook 验证与事件构造。SDK(Node/TypeScript 与 Python)会验证签名、校验时间戳(30 分钟容差),并返回解析后的事件;失败时抛出异常,此时应返回 401 及错误信息。
  • 常见事件类型:
    • post_call_transcription:通话分析完成时触发,常见用途为处理通话洞察、保存转录文本。
    • voice_removal_notice:收到语音将被移除的通知时触发,常见用途为通知用户、备份语音数据。
    • voice_removal_notice_withdrawn:语音移除通知被取消时触发,常见用途为更新用户通知。
    • voice_removed:语音已被移除时触发,常见用途为清理语音数据、更新界面。

使用方式

Node/Express 示例:使用 @elevenlabs/elevenlabs-js 创建 ElevenLabsClient(apiKey 可设为 process.env.ELEVENLABS_API_KEY 或 'webhook-only'),在 Webhook 处理器中获取原始请求体与签名头,然后调用 elevenlabs.webhooks.constructEvent(rawBody, signatureHeader, process.env.ELEVENLABS_WEBHOOK_SECRET),返回的 event 即解析后的负载,签名无效时 SDK 会抛出异常。

Next.js 示例:在 App Router 的 POST 处理函数中,通过 await request.text() 获取原始请求体,从请求头读取 'ElevenLabs-Signature',调用 elevenlabs.webhooks.constructEvent(rawBody, signatureHeader, process.env.ELEVENLABS_WEBHOOK_SECRET),成功返回 200,失败返回 401 与错误信息。

Python/FastAPI 示例:使用 elevenlabs 的 ElevenLabs 客户端,读取原始请求体与签名头(兼容 'ElevenLabs-Signature' 与 'elevenlabs-signature'),缺少签名头时返回 400;调用 elevenlabs.webhooks.construct_event(raw_body.decode("utf-8"), sig, os.environ["ELEVENLABS_WEBHOOK_SECRET"]),捕获 BadRequestError 时返回 401。

环境变量:ELEVENLABS_WEBHOOK_SECRET=your_webhook_secret_here。

本地开发:安装 Hookdeck CLI(推荐通过 npm 安装),然后启动隧道:npx hookdeck-cli listen 3000 elevenlabs --path /webhooks/elevenlabs。无需账号,提供本地隧道与用于检查请求的 Web UI。

适用场景

适用于需要接收 ElevenLabs 事件并做后续处理的集成场景,例如保存通话转录与分析结果、在语音被移除前后通知用户并备份或清理语音数据、以及更新前端界面状态。

限制与注意事项

  • SDK 警告:JavaScript 场景务必使用 @elevenlabs/elevenlabs-js,不要使用 npm install elevenlabs(那是过时的 v1.x 包)。
  • 签名验证失败时应返回 401;缺少签名头时应返回 400。
  • 建议同时安装 webhook-handler-patterns 技能,以处理处理器执行顺序、幂等性、错误处理与重试逻辑。其关键参考包括:处理器顺序(先验证、再解析、最后幂等处理)、幂等性(防止重复处理)、错误处理(返回码、日志、死信队列)、重试逻辑(提供方重试计划、退避模式)。
  • 相关技能包括 stripe-webhooks、shopify-webhooks、github-webhooks、resend-webhooks、chargebee-webhooks、clerk-webhooks、openai-webhooks、paddle-webhooks、webhook-handler-patterns、hookdeck-event-gateway。
  • 关于在 ElevenLabs 仪表盘中配置 Webhook、获取签名密钥等细节,资料中提供了对应资源链接(Overview、Setup、Verification、Express Example、Next.js Example、FastAPI Example),但未在正文中展开具体步骤。