Webhook
SIPESAN mengirim callback HTTP POST real-time ke server Anda saat status pesan berubah (status pengiriman), dan juga menerima webhook masuk dari channel pesan.
Webhook Status Pengiriman
Terima callback saat status pesan berubah. Atur URL endpoint webhook Anda di dashboard bisnis.
Struktur Payload
| Field | Tipe | Keterangan |
|---|---|---|
messageid |
string | Identifier unik pesan. |
status |
string | Status terkini: sent, delivered, read, undelivered, atau failed. |
reason |
string|null | Deskripsi error jika gagal. Untuk kanal WhatsApp Web (QR): account_banned (nomor diblokir WhatsApp), channel_disconnected_timeout (kanal terputus melebihi batas waktu), opted_out (pelanggan balas STOP/BERHENTI), channel_missing (kanal tidak ditemukan). |
datetime |
string | Timestamp ISO-8601 saat event terjadi. |
signature |
string | Hash MD5 untuk memverifikasi keaslian payload. |
Contoh Payload
{
"messageid": "e145f8a2-...",
"status": "delivered",
"reason": null,
"datetime": "2026-06-05T12:00:00+07:00",
"signature": "9b2c1f3a4d5e6f7a8b9c0d1e2f3a4b5c"
}
Verifikasi Signature
Untuk memastikan webhook benar-benar dari server kami, hitung hash MD5 dari gabungan string: {channelId}{messageId}{status}{datetime}, lalu bandingkan dengan field signature.
Contoh PHP
<?php
$channelId = '8d7c0b1e-...'; // Channel ID Anda
$payload = json_decode(file_get_contents('php://input'));
$signatureRaw = $channelId
. $payload->messageid
. $payload->status
. $payload->datetime;
$expectedSignature = md5($signatureRaw);
if (hash_equals($expectedSignature, $payload->signature)) {
// Signature valid — proses webhook di sini.
}
Webhook Channel Masuk
Endpoint yang dipanggil platform pesan ke SIPESAN. Anda tidak perlu memanggilnya sendiri — cukup hubungkan channel di panel bisnis.
| Metode | Path | Verifikasi | Catatan |
|---|---|---|---|
| GET / POST | /webhooks/whatsapp/{identifier} |
GET dengan hub.challenge untuk verifikasi Meta; POST untuk pesan masuk. | Token verifikasi dikonfigurasi per kanal di panel bisnis. |
| POST | /telegram/webhook/{webhookId} |
POST untuk update dari Telegram. | webhook_id adalah ID kanal Telegram di SIPESAN. |
| GET / POST | /webhooks/instagram |
GET dengan hub.challenge untuk verifikasi Meta; POST untuk pesan masuk. | Token verifikasi dikonfigurasi per kanal Instagram. |