SMPP API
ข้อมูล API
โปรโตคอลนี้กำหนดการสื่อสาร SMPP สำหรับบริการ OTP ของ EngageLab และออกแบบมาเพื่อให้สามารถส่งข้อความและรายงานสถานะได้อย่างมีประสิทธิภาพและเชื่อถือได้ผ่านการเชื่อมต่อ TCP ข้อมูล API ประกอบด้วยที่อยู่ IP หมายเลขพอร์ต และรายละเอียดการยืนยันตัวตนที่จำเป็นสำหรับการเชื่อมต่อ โปรดตรวจสอบให้แน่ใจว่าบัญชีและรหัสผ่านที่ได้รับผ่านช่องทางที่ได้รับอนุญาตได้รับการกำหนดค่าอย่างถูกต้อง
ที่อยู่ SMPP
ที่อยู่ SMPP: otpsmpp.api.engagelab.cc
โปรดรับข้อมูลต่อไปนี้ผ่านช่องทางที่ได้รับอนุญาต เช่น ฝ่ายธุรกิจหรือฝ่ายสนับสนุนด้านเทคนิค:
- Port:
{ port } - Account:
{ system_id } - Password:
{ password }
การสร้างการเชื่อมต่อ
แพ็กเก็ตฝั่งไคลเอนต์
หลังจากสร้างการเชื่อมต่อ TCP แล้ว แพ็กเก็ตแรกต้องส่งคำสั่ง BindTransceiver (0x00000009) เพื่อทำการยืนยันตัวตน โดยแพ็กเก็ตนี้ต้องมีฟิลด์ต่อไปนี้:
- system_id: บัญชีระบบที่กำหนดให้กับไคลเอนต์ ใช้สำหรับระบุไคลเอนต์
- password: รหัสผ่านการเข้าถึงที่สอดคล้องกับบัญชีระบบ ใช้สำหรับการยืนยันตัวตน
การตอบกลับจากเซิร์ฟเวอร์
การตอบกลับเมื่อสำเร็จ
- เซิร์ฟเวอร์ส่งกลับคำสั่ง
BindTransceiverResp(0x80000009) - ฟิลด์
system_idจะถูกเติมด้วยค่าเดียวกันกับฟิลด์system_idที่ได้รับ
การตอบกลับเมื่อล้มเหลว
- หากการยืนยันตัวตนล้มเหลว เซิร์ฟเวอร์จะตัดการเชื่อมต่อ TCP และบันทึกสาเหตุของความล้มเหลว
การส่งข้อความ
ตรรกะของเซิร์ฟเวอร์
การส่งข้อความใช้คำสั่ง SUBMIT_SM (0x00000004) เพื่อส่งคำขอส่งข้อความ โดยตรรกะของเซิร์ฟเวอร์มีดังนี้:
- เซิร์ฟเวอร์จะแยกวิเคราะห์เนื้อหาคำขอและใช้ช่องทาง SMS สำหรับการส่งเสมอ
- การส่งข้อความเป็นแบบซิงโครนัส และผลลัพธ์จะถูกส่งกลับผ่านคำสั่ง
SUBMIT_SM_RESP(0x80000004) - สถานะการส่งจะถูกรายงานผ่านรายงานการส่ง สำหรับรายละเอียด โปรดดู รายงานการส่ง
- แนะนำให้ใช้การเข้ารหัส
UCS2เพื่อรองรับอักขระพิเศษและการใช้งานหลายภาษา
แพ็กเก็ตฝั่งไคลเอนต์
ไคลเอนต์ส่งคำสั่ง SUBMIT_SM (0x00000004) เพื่อส่งข้อความ โดยแพ็กเก็ตต้องมีฟิลด์ต่อไปนี้:
service_type
- ค่า:
MSG/CODE/MRKT - ค่าเริ่มต้น:
MSG
- ค่า:
source_addr
- สามารถเว้นว่างได้ และปัจจุบันไม่ได้ใช้งานใน OTP
destination_addr
- ปลายทางของข้อความ ซึ่งต้องอยู่ในรูปแบบหมายเลขโทรศัพท์มือถือระหว่างประเทศ (ตัวอย่างเช่น
+6598765432)
- ปลายทางของข้อความ ซึ่งต้องอยู่ในรูปแบบหมายเลขโทรศัพท์มือถือระหว่างประเทศ (ตัวอย่างเช่น
short_message
- เนื้อหาข้อความใช้รูปแบบ JSON ดังแสดงด้านล่าง:{ "id": "xxx", // ID เทมเพลต "language": "default", // ภาษาที่ใช้; ค่าเริ่มต้นคือ default "code": "xx", // รหัสยืนยัน; ใช้เฉพาะเมื่อ service_type เป็น CODE "params": { // คู่คีย์-ค่าที่กำหนดเอง "key1": "val1" // val ต้องอยู่ในรูปแบบสตริง } }
{ "id": "xxx", // ID เทมเพลต "language": "default", // ภาษาที่ใช้; ค่าเริ่มต้นคือ default "code": "xx", // รหัสยืนยัน; ใช้เฉพาะเมื่อ service_type เป็น CODE "params": { // คู่คีย์-ค่าที่กำหนดเอง "key1": "val1" // val ต้องอยู่ในรูปแบบสตริง } }โค้ดนี้โชว์เป็นหน้าต่างลอย
- เนื้อหาข้อความใช้รูปแบบ JSON ดังแสดงด้านล่าง:
data_coding
- แนะนำให้ใช้การเข้ารหัส
UCS2เพื่อให้มั่นใจว่าสามารถแยกวิเคราะห์อักขระพิเศษ เช่น{}ได้อย่างถูกต้อง - หากรองรับการส่ง
{}โดยตรง สามารถใช้การเข้ารหัสเริ่มต้นได้ (0x00)
- แนะนำให้ใช้การเข้ารหัส
status in the header
- ตั้งค่าเป็น
0x00000000
- ตั้งค่าเป็น
การตอบกลับจากเซิร์ฟเวอร์
เซิร์ฟเวอร์จะส่งคำสั่ง SUBMIT_SM_RESP (0x80000004) เพื่อตอบกลับผลลัพธ์การส่งข้อความ
การตอบกลับเมื่อสำเร็จ
- ค่าของฟิลด์ status ใน header:
0x00000000 - ฟิลด์ MESSAGE_ID: ID ข้อความตอบกลับ ใช้สำหรับเชื่อมโยงกับรายงานการส่ง
การตอบกลับเมื่อล้มเหลว
- เซิร์ฟเวอร์จะเติมค่าใน ฟิลด์ status ใน header เพื่อระบุสาเหตุของความล้มเหลว:
| Status Code | Description | Value |
|---|---|---|
ESME_RINVPARAM |
พารามิเตอร์ไม่ถูกต้อง โปรดตรวจสอบรูปแบบเนื้อหาคำขอ | 0x00000032 |
ESME_RSYSERR |
ข้อผิดพลาดภายในบริการ แนะนำให้ลองอีกครั้งในภายหลัง | 0x00000008 |
ESME_RSUBMITFAIL |
การส่งล้มเหลว อาจเกิดจากปัญหาเทมเพลตหรือสาเหตุอื่น ๆ | 0x00000045 |
ESME_RINVNUMMSGS |
รูปแบบเนื้อหาในฟิลด์ short_message ไม่ถูกต้อง |
0x00000055 |
ESME_RUNKNOWNERR |
ข้อผิดพลาดที่ไม่ทราบสาเหตุ โปรดติดต่อฝ่ายสนับสนุนด้านเทคนิค | 0x000000FF |
รายงานการส่ง
เซิร์ฟเวอร์รายงานสถานะการส่งผ่านคำสั่ง DELIVER_SM (0x00000005) โดยฟิลด์ที่เกี่ยวข้องมีดังนี้:
service_type
- ค่าคงที่:
MSG
- ค่าคงที่:
source_addr
- เว้นว่างไว้
destination_addr
- เหมือนกับ
destination_addrในคำสั่งSUBMIT_SM
- เหมือนกับ
data_coding
- วิธีการเข้ารหัส: ค่าเริ่มต้น
0x00
- วิธีการเข้ารหัส: ค่าเริ่มต้น
esm_class
- ตั้งค่าเป็น
0x00
- ตั้งค่าเป็น
short_message
- รายงานการส่งถูกจัดแพ็กโดยใช้รูปแบบ
delivery receipt
- รายงานการส่งถูกจัดแพ็กโดยใช้รูปแบบ
ReceiptedMessageID in TLV
- ID ข้อความ ใช้สำหรับการเชื่อมโยงและการระบุ
MessageState in TLV
- สถานะข้อความ โดยค่าของฟิลด์คือ
0x0427
- สถานะข้อความ โดยค่าของฟิลด์คือ
การแยกวิเคราะห์สถานะ
ในฟิลด์ short_message ความหมายของค่า stat มีดังนี้:
| Status | Meaning |
|---|---|
DELIVRD |
ส่งสำเร็จแล้ว |
UNDELIV |
การส่งล้มเหลว |
หมายเหตุอื่น ๆ
คำสั่งที่ไม่ถูกต้อง
สำหรับคำสั่งที่ไม่ถูกต้องที่ไคลเอนต์ส่งมา เซิร์ฟเวอร์จะส่งกลับคำสั่ง GENERIC_NACK (0x80000000) และบันทึกล็อกที่เกี่ยวข้อง เซิร์ฟเวอร์รองรับเฉพาะคำสั่งต่อไปนี้:
EnquireLinkcommand (0x00000015)Unbindcommand (0x00000006)SubmitSMcommand (0x00000004)DeliverSMRespcommand (0x80000005)BindTransceivercommand (0x00000009)
การคงการเชื่อมต่อ
ไคลเอนต์ต้องส่งคำสั่ง EnquireLink (0x00000015) ทุก ๆ 30 วินาที (ค่าความคลาดเคลื่อน: ±5 วินาที) เพื่อให้แน่ใจว่าการเชื่อมต่อยังคงใช้งานได้
ความหมายของสถานะการส่ง
| Status Code | Meaning |
|---|---|
ESME_RINVPARAM |
พารามิเตอร์ไม่ถูกต้อง โปรดตรวจสอบรูปแบบเนื้อหาคำขอ |
ESME_RINVNUMMSGS |
รูปแบบเนื้อหาในฟิลด์ short_message ไม่ถูกต้อง |
ESME_RSUBMITFAIL |
การส่งล้มเหลว อาจเกิดจากปัญหาเทมเพลตหรือสาเหตุอื่น ๆ |
ESME_RSYSERR |
ข้อผิดพลาดภายในบริการ แนะนำให้ลองอีกครั้งในภายหลัง |
ESME_RUNKNOWNERR |
ข้อผิดพลาดที่ไม่ทราบสาเหตุ โปรดติดต่อฝ่ายสนับสนุนด้านเทคนิค |
DELIVRD |
ส่งข้อความสำเร็จแล้ว |
UNDELIV |
ไม่สามารถส่งข้อความได้ |
คำศัพท์
- SMPP: โปรโตคอล Short Message Peer-to-Peer ใช้สำหรับแลกเปลี่ยนข้อความกับเกตเวย์ SMS
- SUBMIT_SM: คำสั่ง SMPP สำหรับส่งข้อความ SMS
- DELIVER_SM: คำสั่ง SMPP ที่เซิร์ฟเวอร์ใช้เพื่อรายงานสถานะการส่งข้อความ
หากคุณมีคำถามใด ๆ โปรดติดต่อ ฝ่ายสนับสนุนด้านเทคนิค OTP.










