Отладка веб-перехватчиков без развертывания: временный почтовый ящик, который можно развернуть за 10 секунд.
Создайте одноразовый URL-адрес веб-перехватчика, укажите на него любую службу и проверьте каждую полезную нагрузку. Никаких туннелей, никаких серверов, никакой учетной записи Zapier.
Вы хотите увидеть, что отправит Stripe в случае успешного платежа. Или что отправляет GitHub, когда кто-то открывает запрос на включение. Стандартный подход: запустить локальный сервер, установить ngrok, настроить туннель, держать окно терминала открытым, надеяться на сеанс не истекает в середине теста. Или еще хуже: разверните недоделанный обработчик в промежуточных и хвостовых журналах, пока ждете.
Оба рабочих процесса тратят время на инфраструктуру, тогда как реальный вопрос прост: *как выглядит полезная нагрузка?*
Входящий почтовый ящик веб-перехватчика Botoi предоставляет вам одноразовый URL-адрес, который захватывает входящие полезные данные и сохраняет их в течение 24 часов. Три вызова API. Никаких учетных записей, никаких туннелей, никаких серверов.
Трехэтапный рабочий процесс
- Создать почтовый ящик чтобы получить уникальный URL-адрес получения
- Укажите источник вебхука по этому URL
- Перечислите полезные нагрузки проверить, что прибыло
Каждый шаг представляет собой отдельный 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-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.