Langsung ke konten
Integration

Debug webhook tanpa menerapkan: kotak masuk sementara yang dapat Anda aktifkan dalam 10 detik

| 5 min read

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.

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

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

  1. Buat kotak masuk untuk mendapatkan URL penerimaan unik
  2. Arahkan sumber webhook Anda di URL itu
  3. 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.