logoDokumen
Cari

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" }
              
              {
    "echostr": "12345678"
}

            
Tampilkan blok kode ini di jendela mengambang

Response Body:

12345678
              
              12345678

            
Tampilkan blok kode ini di jendela mengambang

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
              
              X-CALLBACK-ID: timestamp=1681991058;nonce=123123123123;username=test;signature=59682d71e2aa2747252e4e62c15f6f241ddecc8ff08999eda7e0c4451207a16b

            
Tampilkan blok kode ini di jendela mengambang

Penjelasan:

  • timestamp: waktu callback pesan (format standar)
  • nonce: angka acak
  • signature: informasi tanda tangan

Metode tanda tangan:

signature=HMAC-SHA256(secret, timestamp+nonce+username)
              
              signature=HMAC-SHA256(secret, timestamp+nonce+username)

            
Tampilkan blok kode ini di jendela mengambang

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 200 atau 204, tanpa perlu pesan respons.
  • Gagal diterima: Kode status HTTP harus mengembalikan 5XX atau 4XX beserta pesan respons. Format:
{ "code": 2002, "message": "error" }
              
              {
    "code": 2002,
    "message": "error"
}

            
Tampilkan blok kode ini di jendela mengambang
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
              
              POST /developer_define_url HTTP/1.1
Content-Type: application/json

            
Tampilkan blok kode ini di jendela mengambang
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 } } } ] }
              
              {
    "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
                }
            }
        }
    ]
}

            
Tampilkan blok kode ini di jendela mengambang

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

  1. Target rencana → Target valid
  2. Target valid → Terkirim
  3. Terkirim → Tersampaikan
  4. 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.

icon
Hubungi Sales