logoDokumen
Cari

API Callback

Ikhtisar

Data status pesan akan dikirim balik (callback) ke sistem bisnis perusahaan, sehingga analisis statistik dapat dilakukan berdasarkan informasi tersebut.

Alamat Callback

Perusahaan perlu mengatur 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, permintaan POST akan dikirim dengan string acak 8 karakter sebagai parameter request body 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 adalah appkey
to string Opsional ID penerima (misal, registrationID)
server string Wajib Nama layanan pesan, nilai: WebPush
channel string Wajib Kanal pesan, nilai: EngageLab, Chrome, Firefox, Safari, Edge, Opera, Other
custom_args object Opsional Parameter kustom yang dikirim saat pembuatan pesan, dikembalikan apa adanya
itime int Wajib Timestamp aktual saat status pesan terjadi, dapat digunakan bersama message_status untuk mendapatkan waktu tiap status pesan
status object Wajib Informasi status pesan, berisi field berikut:

Field Object status

Nama Field Tipe Wajib/Opsional Deskripsi
message_status string Wajib Status pesan, nilai: target_valid, sent, delivered, click, target_invalid, sent_failed, delivered_failed, no_click
status_data object Opsional Data status kustom, berisi field berikut:
channel_message_id string Opsional ID pesan dari kanal pihak ketiga
ntf_msg int Wajib Tipe pesan, nilai: 1: Notifikasi, 2: Pesan Kustom, 7: Pesan In-App
platform string Wajib Platform push, nilai: b: Web
uid int Wajib UID penerima push notification
app_version string Wajib Versi aplikasi terintegrasi SDK, didapat dari pelaporan SDK
channel string Wajib Kanal aplikasi terintegrasi SDK, didapat dari pelaporan SDK
msg_time int Wajib Waktu pengiriman pesan, yaitu saat permintaan API berhasil dikirim
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 terjadi kegagalan
error_detail object Opsional Detail error, hanya jika terjadi kegagalan, berisi field berikut:
message string Opsional Penjelasan detail alasan error, hanya untuk kanal FCM
loss object Opsional Informasi kehilangan, berisi field berikut:
loss_source string Opsional Sumber kehilangan, nilai: EngageLab, Chrome, Firefox, Safari, Edge, Opera, Other
loss_step int Opsional Tahap kehilangan, nilai: 1: Target Rencana → Target Valid, 2: Target Valid → Jumlah Terkirim, 3: Jumlah Terkirim → Jumlah Terkirim ke Penerima, 4: Jumlah Terkirim ke Penerima → Jumlah Klik

Nilai Status Pesan

Nilai Status Arti Deskripsi
target_valid Target Valid Dianggap valid jika aktif dalam 365 hari terakhir
sent Berhasil Dikirim Berhasil dikirim ke server
delivered Berhasil Diterima Diterima berdasarkan callback aktual
click Diklik Pengguna Diklik oleh pengguna sesuai laporan SDK
target_invalid Target Tidak Valid Tidak valid berdasarkan tahap kehilangan 1
sent_failed Gagal Dikirim Tidak valid berdasarkan tahap kehilangan 2
delivered_failed Gagal Diterima Gagal berdasarkan tahap kehilangan 3
no_click Gagal Klik Gagal berdasarkan tahap kehilangan 4, 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": "WebPush", "channel": "Chrome", "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": "WebPush",
            "channel": "Chrome",
            "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

Penjelasan Parameter

Nilai Arti
target_valid Target efektif
sent Berhasil dikirim
delivered Berhasil diterima
click Diklik pengguna
target_invalid Target tidak valid
sent_failed Gagal dikirim
delivered_failed Gagal diterima

Tahap Kehilangan

  1. Target rencana → Target valid
  2. Target valid → Terkirim
  3. Terkirim → Diterima
  4. Diterima → Klik

Catatan:
1. Klik dan pengiriman pada beberapa kanal bisa terjadi duplikasi, lakukan deduplikasi sendiri jika perlu.
2. Jumlah pengiriman dan tampilan tidak akan diperbarui setelah 5 hari dari pengiriman berhasil.

icon
Hubungi Sales