mcpField
E
elevenlabs-webhooks

elevenlabs-webhooks

github.com/hookdeck开发95236 次安装今天更新
代码仓库

关于 elevenlabs-webhooks

用于接收和处理 ElevenLabs Webhook 的开发指南,面向实现 Webhook 的开发者。内容包括签名验证、事件载荷说明及本地测试,并提供 JavaScript、TypeScript 和 Python 示例。

主要功能

  1. 01基于 SDK 的签名验证
  2. 02时间戳验证指南
  3. 03常见事件类型参考
  4. 04Node、Next.js 和 FastAPI 示例
  5. 05使用 Hookdeck CLI 本地测试

适用场景

  1. 01处理已完成通话的转录文本
  2. 02处理语音移除通知
  3. 03排查 Webhook 签名验证失败
  4. 04通过本地隧道测试处理程序

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hookdeck/webhook-skills --skill elevenlabs-webhooks

安装后在 Claude Code 中输入/elevenlabs-webhooks确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

TODO.md
examples/express/
.env.example
package.json
README.md
examples/express/src/
index.js
examples/express/test/
webhook.test.js
examples/fastapi/
.env.example
main.py
README.md
requirements.txt
test_webhook.py
examples/nextjs/
.env.example
package.json
README.md
vitest.config.ts
examples/nextjs/app/api/health/
route.ts
examples/nextjs/app/webhooks/elevenlabs/
route.ts
examples/nextjs/test/
webhook.test.ts
references/
overview.md
setup.md
verification.md

详细介绍

ElevenLabs Webhooks

何时使用此技能

  • 设置 ElevenLabs webhook 处理程序
  • 调试签名验证失败问题
  • 了解 ElevenLabs 事件类型和负载
  • 处理通话转录事件
  • 处理语音移除通知

核心代码

签名验证(SDK — 推荐)

ElevenLabs 建议使用官方的 @elevenlabs/elevenlabs-js SDK 来验证 webhook 并构造事件。请参阅验证 webhook 密钥并构造 webhook 负载。

// Express.js / Node example
const { ElevenLabsClient } = require('@elevenlabs/elevenlabs-js');

const elevenlabs = new ElevenLabsClient({
  apiKey: process.env.ELEVENLABS_API_KEY || 'webhook-only'
});

// In your webhook handler: get raw body and signature header, then:
const event = await elevenlabs.webhooks.constructEvent(rawBody, signatureHeader, process.env.ELEVENLABS_WEBHOOK_SECRET);
// event is the parsed payload; SDK throws on invalid signature
// Next.js example
import { ElevenLabsClient } from '@elevenlabs/elevenlabs-js';

const elevenlabs = new ElevenLabsClient({
  apiKey: process.env.ELEVENLABS_API_KEY || 'webhook-only'
});

export async function POST(request: NextRequest) {
  const rawBody = await request.text();
  const signatureHeader = request.headers.get('ElevenLabs-Signature');
  try {
    const event = await elevenlabs.webhooks.constructEvent(
      rawBody,
      signatureHeader,
      process.env.ELEVENLABS_WEBHOOK_SECRET
    );
    // Handle event.type, event.data...
    return new NextResponse('OK', { status: 200 });
  } catch (error) {
    return NextResponse.json({ error: (error as Error).message }, { status: 401 });
  }
}
Python SDK 验证(FastAPI)
import os
from fastapi import FastAPI, Request, HTTPException
from elevenlabs import ElevenLabs
from elevenlabs.errors import BadRequestError

app = FastAPI()
elevenlabs = ElevenLabs(api_key=os.environ.get("ELEVENLABS_API_KEY") or "webhook-only")

@app.post("/webhooks/elevenlabs")
async def elevenlabs_webhook(request: Request):
    raw_body = await request.body()
    sig = request.headers.get("ElevenLabs-Signature") or request.headers.get("elevenlabs-signature")
    
    if not sig:
        raise HTTPException(status_code=400, detail="Missing signature header")
    
    try:
        event = elevenlabs.webhooks.construct_event(
            raw_body.decode("utf-8"),
            sig,
            os.environ["ELEVENLABS_WEBHOOK_SECRET"]
        )
        # Handle event["type"], event["data"]...
        return {"status": "ok"}
    except BadRequestError as e:
        raise HTTPException(status_code=401, detail="Invalid signature")

SDK(Node/TypeScript 和 Python)会验证签名、检查时间戳(容差为 30 分钟),并返回解析后的事件。验证失败时会抛出错误;请返回 401 和错误消息。

常见事件类型

事件触发时机常见用例
post_call_transcription通话分析完成时处理通话洞察、保存转录内容
voice_removal_notice收到语音即将移除的通知时通知用户、备份语音数据
voice_removal_notice_withdrawn语音移除通知取消时更新用户通知
voice_removed语音已移除时清理语音数据、更新 UI

环境变量

ELEVENLABS_WEBHOOK_SECRET=your_webhook_secret_here

本地开发

如需在本地测试 webhook,请安装 Hookdeck CLI:

# Install via npm (recommended)

然后启动隧道:

npx hookdeck-cli listen 3000 elevenlabs --path /webhooks/elevenlabs

无需账户。提供本地隧道和 Web UI,可用于检查请求。

资源

  • 概览 - 介绍 ElevenLabs Webhooks 及常见事件类型
  • 设置 - 在 ElevenLabs 控制面板中配置 Webhooks 并获取签名密钥
  • 验证 - 签名验证详情和注意事项
  • Express 示例 - 完整的 Express.js 实现
  • Next.js 示例 - Next.js App Router 实现
  • FastAPI 示例 - Python FastAPI 实现

推荐:webhook-handler-patterns

我们建议同时安装 webhook-handler-patterns 技能,以了解处理程序顺序、幂等性、错误处理和重试逻辑。关键参考资料(在 GitHub 上打开):

相关技能

ElevenLabs 官方 SDK 技能

如需调用 ElevenLabs API(文本转语音、转录、Agent),请参阅官方 ElevenLabs Skills。此技能处理相反的方向:接收来自 ElevenLabs 的 webhook。

SDK 警告: JavaScript 始终使用 @elevenlabs/elevenlabs-js。不要使用 npm install elevenlabs(这是过时的 v1.x 软件包)。

评论

支持 Markdown