Перейти к содержимому
Integration

Отладка веб-перехватчиков без развертывания: временный почтовый ящик, который можно развернуть за 10 секунд.

| 5 min read

Создайте одноразовый URL-адрес веб-перехватчика, укажите на него любую службу и проверьте каждую полезную нагрузку. Никаких туннелей, никаких серверов, никакой учетной записи Zapier.

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

Вы хотите увидеть, что отправит Stripe в случае успешного платежа. Или что отправляет GitHub, когда кто-то открывает запрос на включение. Стандартный подход: запустить локальный сервер, установить ngrok, настроить туннель, держать окно терминала открытым, надеяться на сеанс не истекает в середине теста. Или еще хуже: разверните недоделанный обработчик в промежуточных и хвостовых журналах, пока ждете.

Оба рабочих процесса тратят время на инфраструктуру, тогда как реальный вопрос прост: *как выглядит полезная нагрузка?*

Входящий почтовый ящик веб-перехватчика Botoi предоставляет вам одноразовый URL-адрес, который захватывает входящие полезные данные и сохраняет их в течение 24 часов. Три вызова API. Никаких учетных записей, никаких туннелей, никаких серверов.

Трехэтапный рабочий процесс

  1. Создать почтовый ящик чтобы получить уникальный URL-адрес получения
  2. Укажите источник вебхука по этому URL
  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_id и url ценности. Входящие живут 24 часа (86 400 секунд), затем URL-адрес и все сохраненные полезные данные будут удалены.

Шаг 2. Отправьте вебхук во входящие

Направьте своего поставщика веб-перехватчиков на 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
  }
}

Каждая полезная нагрузка хранится с отметкой времени и уникальным идентификатором. Вы можете вызывать конечную точку списка столько раз, сколько захотите. в пределах 24-часового окна.

Реальный пример: отладка веб-перехватчика Stripe

Тестовый режим 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 > Разработчики > Вебхуки. Нажмите «Добавить конечную точку» и вставьте INBOX_URL. Выберите события, которые вас интересуют, нравится payment_intent.succeeded и invoice.payment_failed.

3. Запустить тестовое событие

Нажмите «Отправить тестовый вебхук» на панели инструментов Stripe. Затем осмотрите то, что пришло:

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

Теперь у вас есть точная полезная нагрузка, которую отправляет Stripe, со всеми вложенными объектами, именами полей и типами. Используйте это, чтобы уверенно писать свой обработчик, а не гадать о схеме.

Реальный пример: тестирование интеграции веб-перехватчика GitHub

Веб-хуки репозитория GitHub срабатывают при таких событиях, как 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 и альтернативы

Особенность Ботой входящие нгрок webhook.site ЗапросБин
Время установки Одна команда скручивания Установить CLI + авторизация Открыть браузер Открыть браузер
Требуется локальный сервер Нет Да Нет Нет
Требуется учетная запись Нет Да (уровень бесплатного пользования) Нет (ограничено) Да
Программный доступ Полный API API (платный) API (платный) API (платный)
Совместимость с CI/CD Да; локон + jq Возможный; сложный Нет Нет
ТТЛ 24 часа На основе сеанса Варьируется 48 часов
Процесс продолжает работать Нет Да Нет Нет
Бесплатно Да Ограниченный Ограниченный Нет

Основное преимущество почтового ящика botoi в том, что все происходит через API. Вы можете создавать почтовые ящики, отправлять тестовые сообщения полезные нагрузки и получать результаты внутри сценариев оболочки, конвейеров CI и интеграционных тестов, не открывая браузер. или сохранение фонового процесса.

Когда это использовать

  • Изучение нового поставщика веб-перехватчиков. Прежде чем писать код обработчика, запишите реальные полезные данные, чтобы понять форма данных, имена полей и крайние случаи.
  • Интеграционные тесты в CI. Откройте папку «Входящие» в своем наборе тестов, активируйте веб-перехватчик, опросите список конечная точка и подтвердить содержимое полезных данных.
  • Отладка сломанного обработчика. Временно замените URL-адрес рабочего веб-перехватчика URL-адресом папки «Входящие», чтобы зафиксируйте точную полезную нагрузку, вызывающую сбои.
  • Парное программирование или демо. Поделитесь идентификатором почтового ящика с товарищем по команде. Вы оба можете отправлять полезную нагрузку и проверить результаты с разных машин.

Конструктивно ящик для входящих сообщений является одноразовым. Создайте его, когда он вам понадобится, используйте его для сеанса и дайте ему истечь. Никакой очистки, никаких устаревших конечных точек и никаких сюрпризов при выставлении счетов.

FAQ

Как долго действует почтовый ящик вебхука?
Срок действия каждого почтового ящика истекает через 24 часа. URL-адрес папки «Входящие», все полученные полезные данные и метаданные удаляются по истечении срока действия. Создайте новый почтовый ящик, когда он вам понадобится.
Нужен ли мне ключ API для создания почтового ящика?
Нет. Уровень бесплатного пользования обеспечивает анонимный доступ со скоростью 5 запросов в минуту с ограничением скорости на основе IP. Вы можете начать тестирование за считанные секунды без регистрации.
Существует ли ограничение на размер полезных данных веб-перехватчика?
Конечная точка приема принимает любое допустимое тело JSON. Применяется стандартное ограничение размера запроса Cloudflare Workers (100 МБ для большинства планов).
Могу ли я использовать это с веб-перехватчиками, отличными от JSON?
Конечная точка приема ожидает тело JSON. Если ваш источник веб-перехватчика отправляет данные в кодировке формы или XML, вам понадобится небольшой прокси-сервер для преобразования полезных данных в JSON перед пересылкой их на URL-адрес папки «Входящие».
Чем это отличается от нгрока?
ngrok создает туннель к работающему локальному серверу. Почтовый ящик веб-перехватчика Botoi — это размещенная конечная точка, в которой хранятся полезные данные, которые вы можете получить позже. Не требуется локальный сервер, не требуется установка интерфейса командной строки и не требуется поддерживать работоспособность процессов.

Начните разработку с botoi

150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.