API SMPP
Informasi API
Protokol ini mendefinisikan komunikasi SMPP untuk layanan OTP EngageLab dan dirancang untuk memungkinkan pengiriman pesan serta pelaporan status yang efisien dan andal melalui koneksi TCP. Informasi API mencakup alamat IP, nomor port, dan detail autentikasi yang diperlukan untuk koneksi. Harap pastikan akun dan kata sandi yang diberikan melalui saluran resmi telah dikonfigurasi dengan benar.
Alamat SMPP
Alamat SMPP: otpsmpp.api.engagelab.cc
Silakan dapatkan informasi berikut melalui saluran resmi, seperti dukungan bisnis atau teknis:
- Port:
{ port } - Account:
{ system_id } - Password:
{ password }
Membangun Koneksi
Paket Klien
Setelah koneksi TCP berhasil dibuat, paket pertama harus mengirim perintah BindTransceiver (0x00000009) untuk autentikasi. Paket ini harus menyertakan field berikut:
- system_id: Akun sistem yang ditetapkan untuk klien, digunakan untuk mengidentifikasi klien.
- password: Kata sandi akses yang sesuai dengan akun sistem, digunakan untuk autentikasi.
Respons Server
Respons Berhasil
- Server mengembalikan perintah
BindTransceiverResp(0x80000009). - Field
system_iddiisi dengan nilai yang sama seperti fieldsystem_idyang diterima.
Respons Gagal
- Jika autentikasi gagal, server memutus koneksi TCP dan mencatat alasan kegagalan.
Pengiriman Pesan
Logika Server
Pengiriman pesan menggunakan perintah SUBMIT_SM (0x00000004) untuk mengirim permintaan pengiriman pesan. Logika server adalah sebagai berikut:
- Server mem-parsing konten permintaan dan selalu menggunakan saluran SMS untuk pengiriman.
- Pengiriman pesan bersifat sinkron, dan hasilnya dikembalikan melalui perintah
SUBMIT_SM_RESP(0x80000004). - Status pengiriman dilaporkan melalui delivery report. Untuk detailnya, lihat Laporan Pengiriman.
- Disarankan menggunakan encoding
UCS2untuk mendukung karakter khusus dan internasionalisasi.
Paket Klien
Klien mengirim perintah SUBMIT_SM (0x00000004) untuk mengirim pesan. Paket harus menyertakan field berikut:
service_type
- Nilai:
MSG/CODE/MRKT - Nilai default:
MSG
- Nilai:
source_addr
- Dapat dikosongkan dan saat ini tidak digunakan dalam OTP.
destination_addr
- Tujuan pesan, yang harus menggunakan format nomor ponsel internasional (misalnya,
+6598765432).
- Tujuan pesan, yang harus menggunakan format nomor ponsel internasional (misalnya,
short_message
- Konten pesan menggunakan format JSON, seperti ditunjukkan di bawah ini:{ "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" // val harus dalam format 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" // val harus dalam format string } }Tampilkan blok kode ini di jendela mengambang
- Konten pesan menggunakan format JSON, seperti ditunjukkan di bawah ini:
data_coding
- Disarankan menggunakan encoding
UCS2untuk memastikan karakter khusus seperti{}dapat diuraikan dengan benar. - Jika transmisi langsung
{}didukung, encoding default dapat digunakan (0x00).
- Disarankan menggunakan encoding
status in the header
- Atur ke
0x00000000.
- Atur ke
Respons Server
Server mengirim perintah SUBMIT_SM_RESP (0x80000004) sebagai respons atas hasil pengiriman pesan.
Respons Berhasil
- Value of the status field in the header:
0x00000000 - MESSAGE_ID field: ID pesan respons, digunakan untuk mengaitkan delivery report.
Respons Gagal
- Server mengisi status field in the header untuk menunjukkan alasan kegagalan:
| Status Code | Description | Value |
|---|---|---|
ESME_RINVPARAM |
Parameter tidak valid. Harap periksa format konten permintaan. | 0x00000032 |
ESME_RSYSERR |
Kesalahan layanan internal. Disarankan untuk mencoba lagi nanti. | 0x00000008 |
ESME_RSUBMITFAIL |
Pengiriman gagal, kemungkinan karena masalah template atau alasan lain. | 0x00000045 |
ESME_RINVNUMMSGS |
Format konten pada field short_message tidak benar. |
0x00000055 |
ESME_RUNKNOWNERR |
Kesalahan tidak diketahui. Harap hubungi dukungan teknis. | 0x000000FF |
Laporan Pengiriman
Server melaporkan status pengiriman melalui perintah DELIVER_SM (0x00000005). Field yang relevan adalah sebagai berikut:
service_type
- Nilai tetap:
MSG
- Nilai tetap:
source_addr
- Biarkan kosong.
destination_addr
- Sama seperti
destination_addrpada perintahSUBMIT_SM.
- Sama seperti
data_coding
- Metode encoding: nilai default
0x00.
- Metode encoding: nilai default
esm_class
- Atur ke
0x00.
- Atur ke
short_message
- Delivery report dikemas menggunakan format
delivery receipt.
- Delivery report dikemas menggunakan format
ReceiptedMessageID in TLV
- ID pesan, digunakan untuk korelasi dan identifikasi.
MessageState in TLV
- Status pesan, nilai field
0x0427.
- Status pesan, nilai field
Parsing Status
Dalam field short_message, arti nilai stat adalah sebagai berikut:
| Status | Meaning |
|---|---|
DELIVRD |
Berhasil dikirim |
UNDELIV |
Pengiriman gagal |
Catatan Lainnya
Perintah Tidak Valid
Untuk perintah tidak valid yang dikirim oleh klien, server mengembalikan perintah GENERIC_NACK (0x80000000) dan mencatat log terkait. Server hanya mendukung perintah berikut:
- Perintah
EnquireLink(0x00000015) - Perintah
Unbind(0x00000006) - Perintah
SubmitSM(0x00000004) - Perintah
DeliverSMResp(0x80000005) - Perintah
BindTransceiver(0x00000009)
Keepalive
Klien harus mengirim perintah EnquireLink (0x00000015) setiap 30 detik (toleransi: ±5 detik) untuk memastikan koneksi tetap aktif.
Arti Status Pengiriman
| Status Code | Meaning |
|---|---|
ESME_RINVPARAM |
Parameter tidak valid. Harap periksa format konten permintaan. |
ESME_RINVNUMMSGS |
Format konten pada field short_message tidak benar. |
ESME_RSUBMITFAIL |
Pengiriman gagal, kemungkinan karena masalah template atau alasan lain. |
ESME_RSYSERR |
Kesalahan layanan internal. Disarankan untuk mencoba lagi nanti. |
ESME_RUNKNOWNERR |
Kesalahan tidak diketahui. Harap hubungi dukungan teknis. |
DELIVRD |
Pesan berhasil dikirim |
UNDELIV |
Pesan tidak dapat dikirim |
Terminologi
- SMPP: Short Message Peer-to-Peer Protocol, digunakan untuk pertukaran pesan dengan gateway SMS.
- SUBMIT_SM: Perintah SMPP untuk mengirim pesan SMS.
- DELIVER_SM: Perintah SMPP yang digunakan oleh server untuk melaporkan status pengiriman pesan.
Jika Anda memiliki pertanyaan, silakan hubungi Dukungan Teknis OTP.










