SuperAPI AI 工具集

vercel-webhooks

部署与运维

查看项目

更新于 10-15 12:00

技能介绍

用途

vercel-webhooks 技能用于接收和验证 Vercel 发送的 Webhook 请求。当需要搭建 Vercel Webhook 处理器、排查签名验证失败问题、理解 Vercel 事件类型与负载结构,或处理部署、项目、域名、集成等事件时,可以使用该技能。它也可用于监控部署状态变化。

主要能力

  • 提供 Express、Next.js App Router、Python FastAPI 三种完整可运行示例(位于 examples/express/、examples/nextjs/、examples/fastapi/)。
  • 演示如何使用 SHA1 HMAC 对 Webhook 请求体进行签名验证,并使用时序安全比较(timing-safe comparison)避免时序攻击。
  • 列出常见事件类型及其触发时机与常见用途:
    • deployment.created:新部署开始,用于启动部署监控、通知团队。
    • deployment.succeeded:部署成功完成,用于更新状态、触发部署后任务。
    • deployment.error:部署失败,用于告警团队、执行回滚操作。
    • deployment.canceled:部署被取消,用于清理资源。
    • project.created:新项目创建,用于设置监控、配置资源。
    • project.removed:项目被删除,用于清理外部资源。
    • domain.created:域名被添加,用于更新 DNS、SSL 配置。
    • 完整事件列表见 references/overview.md。
  • 说明所需环境变量:VERCEL_WEBHOOK_SECRET(必填,来自 Vercel 仪表板);VERCEL_TOKEN(可选,用于调用 API)。
  • 提供本地开发测试方法:安装 Hookdeck CLI 后,运行 npx hookdeck-cli listen 3000 vercel --path /webhooks/vercel 建立本地隧道,无需账号,并提供用于检查请求的本地 Web UI。

使用方式

在 Express 中,必须对 Webhook 端点使用 express.raw({ type: 'application/json' }) 以获取原始请求体,然后从请求头 x-vercel-signature 读取签名,使用 crypto.createHmac('sha1', process.env.VERCEL_WEBHOOK_SECRET).update(req.body).digest('hex') 计算期望签名,并通过 crypto.timingSafeEqual 进行时序安全比较。验证通过后解析负载并根据 event.type 分发处理。

在 FastAPI 中,通过 await request.body() 获取原始请求体,使用 hmac.new(webhook_secret.encode(), body, hashlib.sha1).hexdigest() 计算期望签名,并用 hmac.compare_digest 进行时序安全比较。

适用场景

  • 需要接收 Vercel 部署事件并触发后续动作(如通知、状态更新、回滚)。
  • 需要处理项目、域名、集成相关事件。
  • 需要调试 Vercel Webhook 签名验证失败问题。
  • 需要在本地开发环境中测试 Vercel Webhook 处理逻辑。

限制

  • 资料未提供该技能的具体安装命令、版本要求或收费信息。
  • 资料未提供除 Express、Next.js、FastAPI 之外的其他语言或框架示例。
  • 资料未提供完整的全部事件类型列表,仅指向 references/overview.md。
  • 资料未提供生产环境部署、性能或安全加固的完整说明。

相关技能

stripe-webhooks、github-webhooks、shopify-webhooks、sendgrid-webhooks、webhook-handler-patterns(幂等性、错误处理、重试逻辑)、hookdeck-event-gateway(Webhook 基础设施,提供保证投递、自动重试、重放、限流和可观测性)。