SMPP
Protokol ini mendefinisikan protokol komunikasi SMPP untuk layanan EngageLab SMS, yang bertujuan 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 untuk melakukan konfigurasi dengan benar sesuai akun dan password yang disediakan melalui channel resmi.
Alamat SMPP
otpsmpp.api.engagelab.cc
Dapatkan informasi berikut dari channel resmi (seperti tim bisnis atau dukungan teknis):
- Port:
{ port } - Akun:
{ system_id } - Password:
{ password }
Membangun Koneksi
Paket Data Klien
Setelah koneksi TCP terbangun, paket data pertama perlu mengirim perintah BindTransceiver (yaitu 0x00000009) untuk verifikasi autentikasi. Paket data ini perlu memuat field-field berikut:
- system_id: Akun sistem yang dialokasikan untuk pelanggan, digunakan untuk identifikasi 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_iddengan nilai yang sama dengan fieldsystem_idyang diterima.
Respons Gagal
- Jika autentikasi gagal, server akan memutus 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 mengurai konten request, dan secara tetap menggunakan channel SMS untuk pengiriman.
- Pengiriman pesan bersifat mode sinkron, hasilnya akan direspons dengan perintah
SUBMIT_SM_RESP(yaitu0x80000004). - Status penerimaan akan dilaporkan melalui pesan, lihat detail pada Delivery Report.
- Disarankan menggunakan encoding
UCS2untuk mendukung karakter khusus dan internasionalisasi.
Paket Data Klien
Klien mengirim perintah SUBMIT_SM (yaitu 0x00000004) untuk mengajukan pesan, perlu memuat field-field berikut:
- service_type
- Nilai:
MSG/CODE/MRKT - Nilai default:
MSG
- Nilai:
- source_addr
- Boleh dikosongkan, saat ini belum digunakan di SMS.
- destination_addr
- Tujuan pesan, harus berupa format nomor ponsel internasional (seperti
+6598765432).
- Tujuan pesan, harus berupa format nomor ponsel internasional (seperti
- short_message
- Konten pesan, menggunakan format JSON, dengan format sebagai berikut:{ "id": "xxx", // ID template "language": "default", // Bahasa yang digunakan, default adalah default "code": "xx", // Kode verifikasi, hanya digunakan saat service_type adalah code "params": { // Pasangan key-value kustom "key1": "val1" // Format val berupa string } }
{ "id": "xxx", // ID template "language": "default", // Bahasa yang digunakan, default adalah default "code": "xx", // Kode verifikasi, hanya digunakan saat service_type adalah code "params": { // Pasangan key-value kustom "key1": "val1" // Format val berupa string } }Tampilkan blok kode ini di jendela mengambang
- Konten pesan, menggunakan format JSON, dengan format sebagai berikut:
- data_coding
- Disarankan menggunakan encoding
UCS2untuk memastikan karakter khusus{}terurai dengan benar. - Jika mendukung pengiriman langsung
{}, dapat menggunakan encoding default (yaitu0x00).
- Disarankan menggunakan encoding
- status pada header
- Atur menjadi
0x00000000.
- Atur menjadi
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 delivery report.
Respons Gagal
- Server mengisi field status pada header untuk memberikan alasan kegagalan:
| Status Code | Penjelasan | 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 dikenal, harap hubungi dukungan teknis | 0x000000FF |
Delivery Report
Server melaporkan delivery report melalui perintah DELIVER_SM (yaitu 0x00000005). Field-field spesifiknya adalah sebagai berikut:
- service_type
- Nilai tetap:
MSG
- Nilai tetap:
- source_addr
- Dikosongkan.
- destination_addr
- Sama dengan
destination_addrpada perintahSUBMIT_SM.
- Sama dengan
- data_coding
- Metode encoding: nilai default
0x00.
- Metode encoding: nilai default
- esm_class
- Atur menjadi
0x00.
- Atur menjadi
- short_message
- Menggunakan format
delivery receiptuntuk membungkus delivery report.
- Menggunakan format
- ReceiptedMessageID pada tlv
- ID pesan, digunakan untuk identifikasi pengaitan.
- MessageState pada tlv
- Status pesan, nilai field
0x0427.
- Status pesan, nilai field
Penguraian Status
Pada field short_message, arti nilai stat adalah sebagai berikut:
| Status | Arti |
|---|---|
DELIVRD |
Berhasil terkirim |
UNDELIV |
Gagal terkirim |
Penjelasan Lainnya
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-perintah berikut:
- Perintah
EnquireLink(yaitu0x00000015) - Perintah
Unbind(yaitu0x00000006) - Perintah
SubmitSM(yaitu0x00000004) - Perintah
DeliverSMResp(yaitu0x80000005) - Perintah
BindTransceiver(yaitu0x00000009)
Keep-Alive
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 dikenal, 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 SMS gateway.
- SUBMIT_SM: Perintah SMPP untuk mengajukan pesan SMS.
- DELIVER_SM: Perintah SMPP yang digunakan server untuk melaporkan status penerimaan pesan.










