API Callback
Ikhtisar
Data status pesan akan dikirim balik (callback) ke sistem bisnis perusahaan agar analisis statistik bisa dilakukan berdasarkan informasi tersebut.
Alamat Callback
Perusahaan perlu menentukan alamat callback untuk menerima perubahan status pesan. Saat ini belum tersedia antarmuka web. Silakan hubungi tim teknis Engagelab untuk pengaturan alamat callback.
Verifikasi Validitas Alamat Callback
Saat mengonfigurasi alamat callback di backend Push pada Pengaturan Aplikasi, akan dikirim permintaan POST dengan string acak 8 karakter sebagai parameter body permintaan echostr. Anda perlu mengembalikan nilai echostr pada Response Body, dengan format berikut:
Request Body:
{
"echostr": "12345678"
}
Response Body:
12345678
Mekanisme Keamanan
Digunakan untuk autentikasi klien, opsional.
Untuk memastikan sumber pesan benar-benar dari Engagelab, Anda dapat memilih melakukan autentikasi sumber data POST. Atau, Anda juga bisa langsung mengurai data POST tanpa autentikasi.
Metode autentikasi:
- Konfigurasikan username callback (
username) dan secret callback (secret) di konsol Engagelab untuk alamat callback.
Ambil X-CALLBACK-ID dari header permintaan, contoh:
X-CALLBACK-ID: timestamp=1681991058;nonce=123123123123;username=test;signature=59682d71e2aa2747252e4e62c15f6f241ddecc8ff08999eda7e0c4451207a16b
Penjelasan:
timestamp: waktu callback pesan (format standar)nonce: angka acaksignature: informasi tanda tangan
Metode tanda tangan:
signature=HMAC-SHA256(secret, timestamp+nonce+username)
Mekanisme Respons
Setelah layanan developer menerima callback dari Engagelab, perlu memberikan respons dalam waktu 3 detik sesuai ketentuan berikut:
- Berhasil diterima: Kode status HTTP harus mengembalikan
200atau204, tanpa perlu pesan respons. - Gagal diterima: Kode status HTTP harus mengembalikan
5XXatau4XXbeserta pesan respons. Format:
{
"code": 2002,
"message": "error"
}
| Field | Tipe | Wajib/Opsional | Deskripsi |
|---|---|---|---|
code |
int | Opsional | Kode error |
message |
string | Opsional | Detail error |
Penjelasan Field Callback
Body Pesan
| Nama Field | Tipe | Wajib/Opsional | Deskripsi |
|---|---|---|---|
total |
int | Wajib | Jumlah pesan dalam callback ini |
rows |
array | Wajib | Daftar detail perubahan status pesan, berisi field berikut: |
Field Array rows
| Nama Field | Tipe | Wajib/Opsional | Deskripsi |
|---|---|---|---|
message_id |
string | Wajib | ID unik pesan |
from |
string | Opsional | Pengirim, default appkey |
to |
string | Opsional | ID penerima (misal, registrationID) |
server |
string | Wajib | Nama layanan pesan, nilai: AppPush, WebPush |
channel |
string | Wajib | Kanal pesan, nilai: EngageLab, HuaWei, XiaoMi, MeiZu, OPPO, VIVO, HONOR, FCM, APNs |
custom_args |
object | Opsional | Parameter kustom saat pembuatan pesan, dikembalikan apa adanya |
itime |
int | Wajib | Timestamp aktual status pesan, bisa digunakan dengan message_status |
status |
object | Wajib | Info status pesan, berisi field di bawah: |
Field Object status
| Nama Field | Tipe | Wajib/Opsional | Deskripsi |
|---|---|---|---|
message_status |
string | Wajib | Status pesan: target_valid, sent, delivered, click, target_invalid, sent_failed, delivered_failed, no_click |
status_data |
object | Opsional | Data status kustom, field di bawah: |
channel_message_id |
string | Opsional | ID pesan dari kanal pihak ketiga |
ntf_msg |
int | Wajib | Tipe pesan: 1: Notifikasi, 2: Pesan Kustom, 5: iOS Real-Time Activity, 6: iOS VOIP Message, 7: In-App Message |
platform |
string | Wajib | Platform push: a: Android, i: iOS, b: Web |
uid |
int | Wajib | UID penerima pesan push |
app_version |
string | Wajib | Versi aplikasi terintegrasi SDK |
channel |
string | Wajib | Kanal aplikasi terintegrasi SDK |
msg_time |
int | Wajib | Waktu pengiriman pesan (API request berhasil) |
time_zone |
string | Wajib | Zona waktu organisasi |
loss_valid_type |
int | Opsional | Tidak perlu diproses |
plan_user_total |
int | Opsional | Tidak perlu diproses |
callback_type |
int | Opsional | Tidak perlu diproses |
error_code |
int | Opsional | Kode error, hanya jika gagal |
error_detail |
object | Opsional | Detail error, hanya jika gagal, field di bawah: |
message |
string | Opsional | Penjelasan detail error, hanya untuk kanal FCM |
loss |
object | Opsional | Info loss, field di bawah: |
loss_source |
string | Opsional | Sumber loss: EngageLab, HuaWei, XiaoMi, MeiZu, OPPO, VIVO, HONOR, FCM, APNs |
loss_step |
int | Opsional | Tahap loss: 1: Target Rencana → Target Valid, 2: Target Valid → Terkirim, 3: Terkirim → Tersampaikan, 4: Tersampaikan → Klik |
Nilai Status Pesan
| Nilai Status | Arti | Deskripsi |
|---|---|---|
target_valid |
Target Valid | Aktif dalam 365 hari terakhir |
sent |
Berhasil Dikirim | Berhasil dikirim ke server |
delivered |
Berhasil Tersampaikan | Untuk EngageLab, XiaoMi, OPPO, VIVO — berdasarkan callback nyata; Untuk FCM dan APNs — saat berhasil dikirim ke server vendor; Untuk HuaWei, MeiZu, HONOR, jika callback vendor tidak dikonfigurasi, dianggap tersampaikan saat dikirim ke vendor; jika dikonfigurasi, berdasarkan callback vendor |
click |
Diklik Pengguna | Pengguna mengklik sesuai laporan SDK |
target_invalid |
Target Tidak Valid | Berdasarkan tahap loss 1 pada tabel loss |
sent_failed |
Gagal Dikirim | Berdasarkan tahap loss 2 pada tabel loss |
delivered_failed |
Gagal Tersampaikan | Berdasarkan tahap loss 3 pada tabel loss |
no_click |
Klik Gagal | Berdasarkan tahap loss 4 pada tabel loss, hanya untuk pesan in-app |
Konten Callback
Metode callback: POST
Content-Type: application/json
Contoh
Header Permintaan
POST /developer_define_url HTTP/1.1
Content-Type: application/json
Body Permintaan
{
"total": 1,
"rows": [
{
"message_id": "1666165485030094861",
"from": "",
"to": "",
"server": "AppPush",
"channel": "FCM",
"custom_args": {},
"itime": 1640707579,
"status": {
"message_status": "delivered",
"status_data": {
"channel_message_id": "wamid.123321abcdefed==",
"ntf_msg": 1,
"platform": "a",
"uid": 100,
"app_version": "",
"channel": "",
"msg_time": 1640707579,
"time_zone": "+8",
"loss_valid_type": 0,
"plan_user_total": 0,
"callback_type": 0
},
"error_code": 0,
"error_detail": {
"message": ""
},
"loss": {
"loss_source": "vivo",
"loss_step": 1
}
}
}
]
}
Deskripsi Parameter
| Nilai | Arti |
|---|---|
target_valid |
Target efektif |
sent |
Berhasil dikirim |
delivered |
Berhasil tersampaikan |
click |
Diklik pengguna |
target_invalid |
Target tidak valid |
sent_failed |
Gagal dikirim |
delivered_failed |
Gagal tersampaikan |
Tahap Loss
- Target rencana → Target valid
- Target valid → Terkirim
- Terkirim → Tersampaikan
- Tersampaikan → Klik
Catatan:
1. Klik dan pengantaran pada beberapa kanal bisa duplikat, lakukan deduplikasi sendiri.
2. Jumlah pengantaran dan tampilan tidak akan disesuaikan setelah 5 hari dari keberhasilan pengantaran.










