Pengiriman Pesan Kustom
Jika Anda telah membuat konten template kustom di platform OTP, panggil API ini untuk mengirim konten pesan kustom.
Endpoint
POST https://otp.api.engagelab.cc/v1/custom-messages
Autentikasi
Gunakan Autentikasi Dasar HTTP untuk autentikasi, lalu tambahkan Authorization ke header HTTP:
Authorization: Basic ${base64_auth_string}
Algoritme pembentukan base64_auth_string adalah: base64(dev_key:dev_secret)
Format Permintaan
Header Permintaan
POST /v1/custom-messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Body Permintaan
{
"to": "+6591234567",
"template": {
"id": "test-template-1",
"params": {
"code": "codevalue",
"var1": "value1"
}
}
}
Parameter Permintaan
Objek permintaan dinyatakan dalam format JSON, sehingga header permintaan harus menyertakan Content-Type: application/json.
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | String | Required | Target pengiriman: nomor ponsel atau alamat email, seperti +6598765432 atau support@engagelab.com |
| template | JSON Object | Required | Informasi template. Lihat parameter bertingkat di bawah |
| |_ id | String | Required | ID template |
| |_ params | JSON Object | Optional | Parameter template |
| _ |_ code | String | Optional | Wajib diisi jika jenis template adalah kode verifikasi |
| _ |_ var | String | Optional | Nilai dari kunci variabel template kustom. Jika Anda menetapkan variabel kustom saat membuat template, isi nilainya di sini. Jika tidak diberikan, kunci variabel akan dikirim secara langsung, seperti {{var1}} |
Catatan tentang params
- Untuk variabel template bawaan seperti
{{brand_name}},{{ttl}}, dan{{pwa_url}}, Anda tidak perlu mengirimkannya. Sistem akan secara otomatis menggantinya dengan konten yang ditentukan saat template dibuat. - Jika jenis template adalah kode verifikasi, Anda harus mengirim variabel
{{code}}; jika tidak, kesalahan akan dikembalikan. - Jika konten template berisi field variabel kustom yang ditentukan saat template dibuat, isi nilainya juga melalui
params. Sebagai contoh, untuk konten templateHi {{name}}, your verify code is {{code}}, Anda perlu mengisi parameterparams: {"name":"Bob"}.
Contoh Permintaan
1. Mengirim kode verifikasi kustom
{
"to": "+6591234567",
"template": {
"id": "code-template",
"params": {
"code": "123456"
}
}
}
2. Mengirim konten notifikasi kustom
{
"to": "+6591234567",
"template": {
"id": "notification-template",
"params": {
"order": "123456"
}
}
}
3. Mengirim konten pemasaran kustom
{
"to": ["+6591234567"],
"template": {
"id": "marketing-template",
"params": {
"name": "EngageLab",
"promotion": "30%"
}
}
}
Parameter Respons
Respons Berhasil
| Field | Type | Required | Description |
|---|---|---|---|
| message_id | String | Required | ID pesan yang secara unik mengidentifikasi sebuah pesan |
| send_channel | String | Required | Menunjukkan saluran yang saat ini digunakan untuk pengiriman. Nilai yang mungkin: whatsapp, sms, email, voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Perlu diperhatikan bahwa nilai send_channel yang dikembalikan tidak mewakili saluran akhir yang digunakan untuk mengirim pesan kepada pengguna. Nilai ini hanya menunjukkan saluran yang sedang digunakan saat ini. Sebagai contoh, jika strategi yang dikonfigurasi dalam template menentukan bahwa ketika pengiriman WhatsApp gagal, sistem harus otomatis mencoba ulang melalui saluran SMS, respons API akan mengembalikan whatsapp. Setelah kegagalan pengiriman terdeteksi dalam jangka waktu tertentu, sistem kemudian akan mengirim melalui saluran SMS.
Respons Gagal
Kode status HTTP adalah 4xx atau 5xx, dan body respons berisi field berikut:
| Field | Type | Required | Description |
|---|---|---|---|
| code | int | Required | Kode kesalahan. Untuk detailnya, lihat Kode Kesalahan |
| message | String | Required | Detail kesalahan |
{
"code": 5001,
"message": "sms send fail"
}
Kode Kesalahan
| Error Code | HTTP Code | Description |
|---|---|---|
| 1000 | 500 | Kesalahan internal |
| 2001 | 401 | Autentikasi gagal. Token yang valid tidak diberikan |
| 2002 | 401 | Autentikasi gagal. Token telah kedaluwarsa atau dinonaktifkan |
| 2004 | 403 | Tidak memiliki izin untuk memanggil API ini |
| 3001 | 400 | Format parameter permintaan tidak valid. Harap periksa apakah konten JSON sesuai dengan format parameter yang diperlukan |
| 3002 | 400 | Parameter permintaan tidak valid. Harap periksa apakah parameter permintaan memenuhi persyaratan |
| 3003 | 400 | Parameter permintaan tidak valid. Validasi bisnis terkait gagal. Lihat deskripsi kesalahan pada field message untuk detail |
| 3004 | 400 | Batas frekuensi terlampaui. Untuk template yang sama dan pengguna target yang sama, pengiriman tidak dapat dipicu lagi selama masa berlaku kode verifikasi |
| 4001 | 400 | Sumber daya terkait tidak ditemukan. Sebagai contoh, template yang tidak ada digunakan saat mengirim pesan template |
| 5001 | 400 | Pengiriman gagal (umum/lainnya) |
| 5011 | 400 | Format nomor ponsel tidak valid |
| 5012 | 400 | Target tidak dapat dijangkau |
| 5013 | 400 | Nomor telah ditambahkan ke daftar hitam |
| 5014 | 400 | Konten tidak sesuai dengan spesifikasi |
| 5015 | 400 | Pesan dicegat/ditolak |
| 5016 | 400 | Kesalahan internal saat pengiriman |
| 5017 | 400 | Tidak memiliki izin untuk mengirim ke Tiongkok daratan |
| 5018 | 400 | Masalah pada perangkat seluler (dimatikan/layanan ditangguhkan) |
| 5019 | 400 | Pengguna telah berhenti berlangganan |
| 5020 | 400 | Nomor tidak terdaftar/nomor tidak valid |










