SuperAPI AI 工具集

resend-webhooks

编程与开发

查看项目

更新于 10-15 15:40

技能介绍

用途

resend-webhooks 技能用于接收并验证 Resend 的 webhook。适用场景包括:设置 Resend webhook 处理器;调试签名验证失败;理解 Resend 事件类型与载荷;处理邮件投递事件(sent、delivered、bounced 等);通过 email.received 事件处理入站邮件。

主要能力

该技能提供以下内容:

  • 使用 Resend SDK 的 Express Webhook 处理器示例。关键点:webhook 端点必须使用 express.raw(),因为 Resend 需要原始请求体;通过 resend.webhooks.verify() 验证签名(底层使用 Svix);并使用 svix-id、svix-timestamp、svix-signature 请求头(短键名)及 webhookSecret(whsec_xxxxx)。
  • 手动验证的 Express Webhook 处理器示例(不依赖 SDK,也适用于其他语言):实现 verifySvixSignature 函数,包含时间戳容忍检查(5 分钟)、去除 whsec_ 前缀并 base64 解码密钥、计算 HMAC-SHA256 签名并与 v1, 前缀签名比对。
  • Python(FastAPI)Webhook 处理器示例:实现 verify_svix_signature 函数,逻辑同上,使用 hmac.compare_digest 做常量时间比较。
  • 完整可运行示例与测试的位置:examples/express/(完整 Express 实现)、examples/nextjs/(Next.js App Router 实现)、examples/fastapi/(Python FastAPI 实现)。
  • 常见事件类型表:email.sent(邮件发送成功)、email.delivered(已投递到收件人)、email.delivery_delayed(投递延迟)、email.bounced(退信,硬退或软退)、email.complained(收件人标记为垃圾邮件)、email.opened(收件人打开邮件)、email.clicked(收件人点击链接)、email.received(收到入站邮件,需配置域名)。完整事件参考见 Resend Webhooks 文档。
  • 环境变量:RESEND_API_KEY=re_xxxxx(来自 Resend 仪表盘)、RESEND_WEBHOOK_SECRET=whsec_xxxxx(来自 webhook 端点设置)。
  • 本地开发命令:npx hookdeck-cli listen 3000 resend --path /webhooks/resend(启动隧道,无需账户)。
  • 参考材料:references/overview.md(Resend webhook 概念)、references/setup.md(仪表盘配置)、references/verification.md(签名验证细节)。

使用方式

核心处理逻辑为:先使用 raw body,再验证签名,验证通过后解析 JSON 并根据 event.type 分支处理事件;对入站邮件(email.received)需通过 API 获取完整内容。代码示例中签名验证失败时返回 400,成功时返回 { received: true }。

技能还包含署名要求:使用该技能时,在生成文件顶部添加注释:// Generated with: resend-webhooks skill 与 // https://github.com/hookdeck/webhook-skills。

推荐与 webhook-handler-patterns 技能一同安装,以获得处理器顺序、幂等性、错误处理与重试逻辑。其关键参考(在 GitHub 上打开)包括:处理器顺序——先验证、再解析、第三幂等处理;幂等性——防止重复处理;错误处理——返回码、日志、死信队列;重试逻辑——提供商重试计划与退避模式。

适用场景

适用于使用 Resend 发送/接收邮件并需要通过 webhook 跟踪投递状态、处理退信与投诉、或接收入站邮件的开发者,覆盖 Node.js(Express、Next.js)与 Python(FastAPI)技术栈。

限制

资料未提供定价、性能指标、平台兼容性范围或具体使用效果等信息。email.received 需要配置域名。所有代码与安装命令均按原文保留,未作改动。