Endpoint SMPP
Informasi endpoint
Protokol ini mendefinisikan protokol komunikasi SMPP untuk layanan EngageLab OTP, yang bertujuan untuk mewujudkan pengiriman pesan dan pelaporan status yang efisien dan andal melalui koneksi TCP. Informasi endpoint mencakup alamat IP, nomor port, serta informasi autentikasi yang diperlukan untuk koneksi. Pastikan konfigurasi dilakukan dengan benar sesuai akun dan password yang disediakan oleh channel resmi.
Alamat SMPP
Alamat smpp: otpsmpp.api.engagelab.cc Harap dapatkan informasi berikut dari channel resmi (seperti bisnis atau dukungan teknis):
- Port:
{ port } - Akun:
{ system_id } - Password:
{ password }
Membangun koneksi
Paket data klien
Setelah koneksi TCP terbentuk, paket data pertama perlu mengirim perintah BindTransceiver (yaitu 0x00000009) untuk validasi autentikasi. Paket data ini perlu menyertakan field berikut:
- system_id: akun sistem yang dialokasikan kepada pelanggan, digunakan untuk mengidentifikasi identitas.
- password: password akses yang sesuai dengan akun sistem, digunakan untuk autentikasi identitas.
Respons server
Respons sukses
- Server akan mengirim perintah
BindTransceiverResp(yaitu0x80000009) sebagai respons. - Mengisi field
system_id, dengan nilai yang sama dengan fieldsystem_idyang diterima.
Respons gagal
- Jika autentikasi gagal, server akan memutuskan koneksi TCP tersebut, dan mencatat alasan kegagalan.
Pengiriman pesan
Logika server
Pengiriman pesan menggunakan perintah SUBMIT_SM (yaitu 0x00000004) untuk mengajukan request pengiriman pesan, dengan logika server sebagai berikut:
- Server mem-parsing konten request, dan selalu menggunakan channel SMS untuk pengiriman.
- Pengiriman pesan dalam mode sinkron, hasilnya akan direspons dengan perintah
SUBMIT_SM_RESP(yaitu0x80000004). - Status penerimaan akan dilaporkan melalui pesan, untuk detail lihat Laporan penerimaan.
- Disarankan menggunakan encoding
UCS2untuk mendukung karakter khusus dan internasionalisasi.
Paket data klien
Klien mengirim perintah SUBMIT_SM (yaitu 0x00000004) untuk mengajukan pesan, perlu menyertakan field berikut:
- service_type
- Nilai:
MSG/CODE/MRKT - Nilai default:
MSG
- Nilai:
- source_addr
- Boleh dikosongkan, saat ini belum digunakan dalam OTP.
- destination_addr
- Target pesan, harus dalam bentuk nomor ponsel internasional (seperti
+6598765432).
- Target pesan, harus dalam bentuk nomor ponsel internasional (seperti
- short_message
- Konten pesan, dalam format JSON, dengan format sebagai berikut:{ "id": "xxx", // ID template "language": "default", // bahasa yang digunakan, default adalah default "code": "xx", // kode verifikasi, hanya digunakan ketika service_type adalah code "params": { // pasangan key-value kustom "key1": "val1" // format val adalah string } }
{ "id": "xxx", // ID template "language": "default", // bahasa yang digunakan, default adalah default "code": "xx", // kode verifikasi, hanya digunakan ketika service_type adalah code "params": { // pasangan key-value kustom "key1": "val1" // format val adalah string } }Tampilkan blok kode ini di jendela mengambang
- Konten pesan, dalam format JSON, dengan format sebagai berikut:
- data_coding
- Disarankan menggunakan encoding
UCS2untuk memastikan karakter khusus{}ter-parsing dengan normal. - Jika mendukung pengiriman langsung
{}, maka dapat menggunakan encoding default (yaitu0x00).
- Disarankan menggunakan encoding
- status pada header
- Diatur ke
0x00000000.
- Diatur ke
Respons server
Server mengirim perintah SUBMIT_SM_RESP (yaitu 0x80000004) sebagai respons hasil pengiriman pesan.
Respons sukses
- Nilai field status pada header:
0x00000000 - Field MESSAGE_ID: ID pesan respons, digunakan untuk mengaitkan laporan penerimaan.
Respons gagal
- Server mengisi field status pada header untuk memberikan alasan kegagalan:
| Status code | Keterangan | Nilai |
|---|---|---|
ESME_RINVPARAM |
Parameter tidak valid, harap periksa format konten request | 0x00000032 |
ESME_RSYSERR |
Error layanan internal, disarankan coba lagi nanti | 0x00000008 |
ESME_RSUBMITFAIL |
Pengiriman gagal, mungkin karena masalah template atau alasan lain | 0x00000045 |
ESME_RINVNUMMSGS |
Format konten field short_message salah |
0x00000055 |
ESME_RUNKNOWNERR |
Error tidak diketahui, harap hubungi dukungan teknis | 0x000000FF |
Laporan penerimaan
Server melaporkan laporan penerimaan melalui perintah DELIVER_SM (yaitu 0x00000005). Field spesifiknya sebagai berikut:
- service_type
- Nilai tetap:
MSG
- Nilai tetap:
- source_addr
- Dikosongkan.
- destination_addr
- Sama dengan
destination_addrdalam perintahSUBMIT_SM.
- Sama dengan
- data_coding
- Metode encoding: nilai default
0x00.
- Metode encoding: nilai default
- esm_class
- Diatur ke
0x00.
- Diatur ke
- short_message
- Membungkus laporan penerimaan dalam format
delivery receipt.
- Membungkus laporan penerimaan dalam format
- ReceiptedMessageID pada tlv
- ID pesan, digunakan untuk identifikasi pengaitan.
- MessageState pada tlv
- Status pesan, nilai field
0x0427.
- Status pesan, nilai field
Parsing status
Pada field short_message, arti nilai stat adalah sebagai berikut:
| Status | Arti |
|---|---|
DELIVRD |
Penerimaan berhasil |
UNDELIV |
Penerimaan gagal |
Penjelasan lain
Perintah tidak valid
Untuk perintah tidak valid yang diajukan klien, server akan mengembalikan perintah GENERIC_NACK (yaitu 0x80000000) dan mencatat log terkait. Server hanya mendukung perintah berikut:
- Perintah
EnquireLink(yaitu0x00000015) - Perintah
Unbind(yaitu0x00000006) - Perintah
SubmitSM(yaitu0x00000004) - Perintah
DeliverSMResp(yaitu0x80000005) - Perintah
BindTransceiver(yaitu0x00000009)
Menjaga koneksi tetap aktif
Klien perlu mengirim perintah EnquireLink (yaitu 0x00000015) setiap 30 detik (toleransi ±5 detik), untuk memastikan koneksi tetap aktif.
Arti status pengiriman
| Status code | Arti |
|---|---|
ESME_RINVPARAM |
Parameter tidak valid, harap periksa format konten request |
ESME_RINVNUMMSGS |
Format konten field short_message salah |
ESME_RSUBMITFAIL |
Pengiriman gagal, mungkin karena masalah template atau alasan lain |
ESME_RSYSERR |
Error layanan internal, disarankan coba lagi nanti |
ESME_RUNKNOWNERR |
Error tidak diketahui, harap hubungi dukungan teknis |
DELIVRD |
Pesan berhasil terkirim |
UNDELIV |
Pesan gagal terkirim |
Penjelasan istilah
- SMPP: Short Message Peer-to-Peer Protocol, digunakan untuk pertukaran pesan pada gateway SMS.
- SUBMIT_SM: perintah SMPP untuk mengajukan pesan SMS.
- DELIVER_SM: perintah SMPP yang digunakan server untuk melaporkan status penerimaan pesan.
Jika ada pertanyaan, silakan hubungi Dukungan Teknis OTP.










