跳转到内容
Integration

无需部署即可调试 Webhook:可在 10 秒内启动的临时收件箱

| 5 min read

创建一个一次性 Webhook URL,将任何服务指向它,并检查每个有效负载。 没有隧道,没有服务器,没有 Zapier 帐户。

Notification bell with incoming data streams
Photo by Brett Jordan on Unsplash

您想查看付款成功时 Stripe 发送的内容。 或者当有人打开拉取请求时 GitHub 发送的内容。 标准方法:启动本地服务器,安装 ngrok,配置隧道,保持终端窗口打开,希望会话 不会在测试中过期。 或者更糟糕:在等待时将半完成的处理程序部署到暂存和尾部日志。

当真正的问题很简单时,这两种工作流程都会在基础设施上浪费时间:*有效负载是什么样的?*

Botoi 的 webhook 收件箱为您提供了一个一次性 URL,用于捕获传入的有效负载并将其存储 24 小时。 三个 API 调用。 没有帐户,没有隧道,没有服务器。

3步工作流程

  1. 创建收件箱 获取唯一的接收 URL
  2. 指向您的 webhook 源 在那个网址
  3. 列出有效负载 检查到达的物品

每个步骤都是一个单独的步骤 curl 命令。

第 1 步:创建收件箱

curl -X POST https://api.botoi.com/v1/webhook/inbox/create

回复:

{
  "success": true,
  "data": {
    "inbox_id": "a1b2c3d4",
    "url": "https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive",
    "expires_in": 86400
  }
}

保存 inbox_idurl 价值观。 收件箱存活 24 小时(86,400 秒),然后 URL 和所有存储的有效负载都将被删除。

第 2 步:将 Webhook 发送到收件箱

将您的 webhook 提供商指向 url 从步骤 1 开始。收件箱接受任何 JSON 正文:

curl -X POST https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive \\
  -H "Content-Type: application/json" \\
  -d '{
    "event": "payment_intent.succeeded",
    "amount": 4999,
    "currency": "usd",
    "customer_email": "buyer@example.com"
  }'

回复:

{
  "success": true,
  "data": {
    "received": true,
    "payload_id": "e5f6g7h8"
  }
}

第 3 步:检查有效负载

curl -X POST https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/list

回复:

{
  "success": true,
  "data": {
    "inbox_id": "a1b2c3d4",
    "payloads": [
      {
        "id": "e5f6g7h8",
        "received_at": "2026-03-26T10:00:00Z",
        "body": {
          "event": "payment_intent.succeeded",
          "amount": 4999,
          "currency": "usd",
          "customer_email": "buyer@example.com"
        }
      }
    ],
    "count": 1
  }
}

每个有效负载都存储有时间戳和唯一 ID。 您可以根据需要多次调用列表端点 在 24 小时窗口内。

真实示例:调试 Stripe webhook

Stripe 的测试模式允许您从仪表板触发事件。 无需设立服务器来接收它们, 将 Stripe 指向您的收件箱 URL。

1. 创建收件箱

INBOX=\$(curl -s -X POST https://api.botoi.com/v1/webhook/inbox/create)
INBOX_ID=\$(echo \$INBOX | jq -r '.data.inbox_id')
INBOX_URL=\$(echo \$INBOX | jq -r '.data.url')
echo "Inbox URL: \$INBOX_URL"

2. 将 URL 添加到 Stripe

前往 Stripe 仪表板 > 开发人员 > Webhooks。 单击“添加端点”并粘贴 INBOX_URL。 选择您关心的活动, 喜欢 payment_intent.succeededinvoice.payment_failed

3. 触发测试事件

单击 Stripe 仪表板中的“发送测试 Webhook”。 然后检查到达的内容:

curl -s -X POST "https://api.botoi.com/v1/webhook/inbox/\$INBOX_ID/list" | jq '.data.payloads'

您现在拥有 Stripe 发送的确切有效负载,以及所有嵌套对象、字段名称和类型。 使用它可以自信地编写处理程序,而不是猜测架构。

真实示例:测试 GitHub Webhook 集成

GitHub 存储库 webhook 会在以下事件上触发: push, pull_request, 和 issues。 以下是如何在本地不运行任何代码的情况下捕获一个。

1.创建收件箱并配置GitHub

# Create the inbox
INBOX=\$(curl -s -X POST https://api.botoi.com/v1/webhook/inbox/create)
INBOX_URL=\$(echo \$INBOX | jq -r '.data.url')
INBOX_ID=\$(echo \$INBOX | jq -r '.data.inbox_id')

# Add webhook to your repo via GitHub API
curl -X POST \\
  -H "Authorization: token \$GITHUB_TOKEN" \\
  -H "Content-Type: application/json" \\
  "https://api.github.com/repos/your-org/your-repo/hooks" \\
  -d "{
    \\"config\\": {
      \\"url\\": \\"\$INBOX_URL\\",
      \\"content_type\\": \\"json\\"
    },
    \\"events\\": [\\"pull_request\\"]
  }"

2. 打开拉取请求,然后检查收件箱

curl -s -X POST "https://api.botoi.com/v1/webhook/inbox/\$INBOX_ID/list" \\
  | jq '.data.payloads[0].body | {action, number: .pull_request.number, title: .pull_request.title}'

输出(示例):

{
  "action": "opened",
  "number": 42,
  "title": "Add rate limiting to /api/orders"
}

您可以看到 GitHub 发送的确切结构,包括类似字段 action, sender, repository,以及完整的 pull_request 目的。 这比阅读 GitHub 文档并猜测为每种事件类型填充哪些字段要快。

自动化:测试脚本

此 bash 脚本创建一个收件箱、发送测试负载、检索它并验证往返行程。 另存为 test-webhook.sh 并运行它以确认您的集成可以端到端地工作。

#!/bin/bash
set -euo pipefail

API="https://api.botoi.com/v1/webhook/inbox"

echo "Creating inbox..."
INBOX=\$(curl -s -X POST "\$API/create")
INBOX_ID=\$(echo "\$INBOX" | jq -r '.data.inbox_id')
INBOX_URL=\$(echo "\$INBOX" | jq -r '.data.url')
echo "Inbox ID: \$INBOX_ID"
echo "Receive URL: \$INBOX_URL"

echo ""
echo "Sending test payload..."
SEND=\$(curl -s -X POST "\$INBOX_URL" \\
  -H "Content-Type: application/json" \\
  -d '{
    "event": "order.created",
    "order_id": "ord_98765",
    "total": 129.99,
    "items": [
      {"sku": "WIDGET-A", "qty": 2},
      {"sku": "GADGET-B", "qty": 1}
    ]
  }')

PAYLOAD_ID=\$(echo "\$SEND" | jq -r '.data.payload_id')
echo "Payload ID: \$PAYLOAD_ID"

echo ""
echo "Retrieving payloads..."
LIST=\$(curl -s -X POST "\$API/\$INBOX_ID/list")
COUNT=\$(echo "\$LIST" | jq -r '.data.count')

if [ "\$COUNT" -ge 1 ]; then
  echo "Success: \$COUNT payload(s) received"
  echo "\$LIST" | jq '.data.payloads[0].body'
else
  echo "Error: no payloads found"
  exit 1
fi

预期输出:

Creating inbox...
Inbox ID: a1b2c3d4
Receive URL: https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive

Sending test payload...
Payload ID: e5f6g7h8

Retrieving payloads...
Success: 1 payload(s) received
{
  "event": "order.created",
  "order_id": "ord_98765",
  "total": 129.99,
  "items": [
    {"sku": "WIDGET-A", "qty": 2},
    {"sku": "GADGET-B", "qty": 1}
  ]
}

比较:botoi inbox 与替代方案

特征 波托伊收件箱 恩格罗克 webhook.site 请求Bin
设置时间 1个curl命令 安装 CLI + 身份验证 打开浏览器 打开浏览器
需要本地服务器 是的
需要帐户 是(免费套餐) 没有(有限) 是的
程序化访问 完整的API API(付费) API(付费) API(付费)
CI/CD 友好 是的; 卷曲+jq 可能的; 复杂的
TTL 24小时 基于会话 各不相同 48小时
进程保持运行 是的
自由的 是的 有限的 有限的

botoi 收件箱的主要优点是一切都通过 API 发生。 您可以创建收件箱,发送测试 有效负载,并在 shell 脚本、CI 管道和集成测试中检索结果,而无需打开浏览器 或保持后台进程处于活动状态。

何时使用这个

  • 探索新的 webhook 提供程序。 在编写处理程序代码之前,捕获真实的有效负载以了解 数据形状、字段名称和边缘情况。
  • CI 中的集成测试。 在测试套件中启动收件箱,触发 Webhook,轮询列表 端点,并对有效负载内容进行断言。
  • 调试损坏的处理程序。 暂时将您的生产 Webhook URL 与收件箱 URL 交换为 捕获导致失败的确切有效负载。
  • 结对编程或演示。 与队友共享收件箱 ID。 你们俩都可以发送有效负载并且 检查不同机器的结果。

收件箱设计为一次性的。 当您需要时创建一个,将其用于会话,然后让它过期。 无需清理,没有挥之不去的端点,没有意外的计费。

FAQ

Webhook 收件箱可以持续多长时间?
每个收件箱将在 24 小时后过期。 收件箱 URL、所有收到的有效负载和元数据将在到期时删除。 每当您需要时创建一个新收件箱。
我需要 API 密钥来创建收件箱吗?
不需要。免费套餐允许每分钟 5 个请求的匿名访问,并具有基于 IP 的速率限制。 您无需注册即可在几秒钟内开始测试。
Webhook 负载有大小限制吗?
接收端点接受任何有效的 JSON 正文。 标准 Cloudflare Workers 请求大小限制适用(大多数计划为 100 MB)。
我可以将其与非 JSON Webhook 一起使用吗?
接收端点需要一个 JSON 正文。 如果您的 Webhook 源发送表单编码数据或 XML,则您将需要一个小型代理来将有效负载转换为 JSON,然后再将其转发到收件箱 URL。
这与 ngrok 有什么不同?
ngrok 创建到正在运行的本地服务器的隧道。 Botoi Webhook 收件箱是一个托管端点,用于存储负载以供您稍后检索。 无需本地服务器,无需安装 CLI,无需保持活动状态。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。