Debug webhook tanpa menerapkan: kotak masuk sementara yang dapat Anda aktifkan dalam 10 detik
Buat URL webhook sekali pakai, arahkan layanan apa pun ke sana, dan periksa setiap payload. Tidak ada terowongan, tidak ada server, tidak ada akun Zapier.
Anda ingin melihat apa yang dikirimkan Stripe ketika pembayaran berhasil. Atau apa yang dikirimkan GitHub ketika seseorang membuka permintaan tarik. Pendekatan standar: mulai server lokal, instal ngrok, konfigurasikan terowongan, biarkan jendela terminal tetap terbuka, harap sesinya tidak kedaluwarsa di tengah ujian. Atau lebih buruk lagi: terapkan penangan setengah jadi ke pementasan dan ekor log sementara Anda menunggu.
Kedua alur kerja tersebut membuang-buang waktu pada infrastruktur padahal pertanyaan sebenarnya sederhana: *seperti apa payloadnya?*
Kotak masuk webhook Botoi memberi Anda URL sekali pakai yang menangkap muatan masuk dan menyimpannya selama 24 jam. Tiga panggilan API. Tidak ada akun, tidak ada terowongan, tidak ada server.
Alur kerja 3 langkah
- Buat kotak masuk untuk mendapatkan URL penerimaan unik
- Arahkan sumber webhook Anda di URL itu
- Buat daftar muatannya untuk memeriksa apa yang tiba
Setiap langkah adalah satu curl memerintah.
Langkah 1: Buat kotak masuk
curl -X POST https://api.botoi.com/v1/webhook/inbox/create
Tanggapan:
{
"success": true,
"data": {
"inbox_id": "a1b2c3d4",
"url": "https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive",
"expires_in": 86400
}
}
Simpan inbox_id Dan url nilai-nilai. Kotak masuk akan aktif selama 24 jam (86.400 detik).
URL dan semua payload yang disimpan akan dihapus.
Langkah 2: Kirim webhook ke kotak masuk
Arahkan penyedia webhook Anda ke url dari langkah 1. Kotak masuk menerima isi JSON apa pun:
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"
}'
Tanggapan:
{
"success": true,
"data": {
"received": true,
"payload_id": "e5f6g7h8"
}
}
Langkah 3: Periksa muatannya
curl -X POST https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/list
Tanggapan:
{
"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
}
}
Setiap payload disimpan dengan stempel waktu dan ID unik. Anda dapat memanggil titik akhir daftar sebanyak yang Anda inginkan dalam jendela 24 jam.
Contoh dunia nyata: men-debug webhook Stripe
Mode pengujian Stripe memungkinkan Anda memicu peristiwa dari dasbor. Daripada menyiapkan server untuk menerimanya, arahkan Stripe ke URL kotak masuk Anda.
1. Buat kotak masuk
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. Tambahkan URL ke Stripe
Pergi ke Dasbor Stripe > Pengembang > Webhook.
Klik "Tambahkan titik akhir" dan tempel INBOX_URL. Pilih acara yang Anda minati,
seperti payment_intent.succeeded Dan invoice.payment_failed.
3. Memicu acara pengujian
Klik "Kirim webhook pengujian" di dasbor Stripe. Kemudian periksa apa yang tiba:
curl -s -X POST "https://api.botoi.com/v1/webhook/inbox/\$INBOX_ID/list" | jq '.data.payloads'
Anda sekarang memiliki payload persis yang dikirim Stripe, dengan semua objek bertumpuk, nama bidang, dan tipe. Gunakan ini untuk menulis handler Anda dengan percaya diri alih-alih menebak-nebak skemanya.
Contoh dunia nyata: menguji integrasi webhook GitHub
Webhook repositori GitHub diaktifkan pada acara seperti push, pull_request, Dan issues.
Berikut ini cara menangkapnya tanpa menjalankan kode apa pun secara lokal.
1. Buat kotak masuk dan konfigurasikan 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. Buka pull request, lalu cek inbox
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}'
Keluaran (contoh):
{
"action": "opened",
"number": 42,
"title": "Add rate limiting to /api/orders"
}
Anda dapat melihat struktur persis yang dikirimkan GitHub, termasuk bidang seperti action,
sender, repository, dan penuh pull_request obyek.
Ini lebih cepat daripada membaca dokumen GitHub dan menebak kolom mana yang diisi untuk setiap jenis peristiwa.
Mengotomatiskannya: skrip pengujian
Skrip bash ini membuat kotak masuk, mengirimkan muatan uji, mengambilnya, dan memverifikasi perjalanan pulang pergi.
Simpan sebagai test-webhook.sh dan jalankan untuk mengonfirmasi integrasi Anda berfungsi secara menyeluruh.
#!/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
Hasil yang diharapkan:
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}
]
}
Perbandingan: kotak masuk botoi vs. alternatifnya
| Fitur | Kotak masuk Botoi | ngrok | webhook.site | Tempat Permintaan |
|---|---|---|---|---|
| Waktu pengaturan | Satu perintah ikal | Instal CLI + autentikasi | Buka peramban | Buka peramban |
| Diperlukan server lokal | TIDAK | Ya | TIDAK | TIDAK |
| Diperlukan akun | TIDAK | Ya (tingkat gratis) | Tidak (terbatas) | Ya |
| Akses terprogram | API penuh | API (berbayar) | API (berbayar) | API (berbayar) |
| Ramah CI/CD | Ya; keriting + jq | Mungkin; kompleks | TIDAK | TIDAK |
| TTL | 24 jam | Berbasis sesi | Bervariasi | 48 jam |
| Proses tetap berjalan | TIDAK | Ya | TIDAK | TIDAK |
| Bebas | Ya | Terbatas | Terbatas | TIDAK |
Keuntungan utama dari kotak masuk botoi adalah semuanya terjadi melalui API. Anda dapat membuat kotak masuk, mengirim tes payload, dan mengambil hasil di dalam skrip shell, pipeline CI, dan pengujian integrasi tanpa membuka browser atau menjaga proses latar belakang tetap hidup.
Kapan menggunakan ini
- Menjelajahi penyedia webhook baru. Sebelum menulis kode pengendali, tangkap muatan nyata untuk dipahami bentuk data, nama field, dan kasus tepi.
- Tes integrasi di CI. Jalankan kotak masuk di rangkaian pengujian Anda, picu webhook, jajak pendapat daftarnya titik akhir, dan menegaskan isi muatan.
- Men-debug pengendali yang rusak. Tukar sementara URL webhook produksi Anda dengan URL kotak masuk menangkap muatan pasti yang menyebabkan kegagalan.
- Pasangkan pemrograman atau demo. Bagikan ID kotak masuk dengan rekan satu tim. Anda berdua dapat mengirim muatan dan memeriksa hasil dari mesin yang berbeda.
Kotak masuk dirancang untuk sekali pakai. Buat satu saat Anda membutuhkannya, gunakan untuk sesi tersebut, dan biarkan habis masa berlakunya. Tidak ada pembersihan, tidak ada titik akhir yang tersisa, tidak ada kejutan penagihan.
FAQ
- Berapa lama kotak masuk webhook bertahan?
- Setiap kotak masuk akan kedaluwarsa setelah 24 jam. URL kotak masuk, semua payload yang diterima, dan metadata akan dihapus pada saat masa berlaku habis. Buat kotak masuk baru kapan pun Anda membutuhkannya.
- Apakah saya memerlukan kunci API untuk membuat kotak masuk?
- Tidak. Tingkat gratis memungkinkan akses anonim dengan 5 permintaan per menit dengan pembatasan tarif berbasis IP. Anda dapat memulai pengujian dalam hitungan detik tanpa mendaftar.
- Apakah ada batasan ukuran pada payload webhook?
- Titik akhir penerimaan menerima isi JSON yang valid. Batas ukuran permintaan Cloudflare Workers standar berlaku (100 MB untuk sebagian besar paket).
- Bisakah saya menggunakan ini dengan webhook non-JSON?
- Titik akhir penerimaan mengharapkan isi JSON. Jika sumber webhook Anda mengirimkan data yang disandikan formulir atau XML, Anda memerlukan proxy kecil untuk mengonversi payload ke JSON sebelum meneruskannya ke URL kotak masuk.
- Apa bedanya dengan ngrok?
- ngrok membuat terowongan ke server lokal yang sedang berjalan. Kotak masuk webhook Botoi adalah titik akhir yang dihosting yang menyimpan muatan untuk Anda ambil nanti. Tidak diperlukan server lokal, tidak diperlukan CLI untuk diinstal, tidak ada proses untuk tetap hidup.
Mulai membangun dengan botoi
150+ endpoint API untuk pencarian, pemrosesan teks, pembuatan gambar, dan utilitas developer. Paket gratis, tanpa kartu kredit.