ส่ง SMPP
ข้อมูลอินเทอร์เฟซ
โปรโตคอลนี้กำหนดโปรโตคอลการสื่อสาร SMPP สำหรับบริการ OTP ของ EngageLab โดยมีเป้าหมายเพื่อให้เกิดการส่งข้อความและการตอบกลับสถานะที่มีประสิทธิภาพและเชื่อถือได้ผ่านการเชื่อมต่อ TCP ข้อมูลอินเทอร์เฟซประกอบด้วยที่อยู่ IP หมายเลขพอร์ต และข้อมูลการยืนยันตัวตนที่จำเป็นสำหรับการเชื่อมต่อ โปรดตรวจสอบให้แน่ใจว่าการกำหนดค่าถูกต้องโดยใช้บัญชีและรหัสผ่านที่ได้รับจากช่องทางที่ได้รับอนุญาต
ที่อยู่ SMPP
ที่อยู่ SMPP: otpsmpp.api.engagelab.cc โปรดรับข้อมูลต่อไปนี้จากช่องทางที่ได้รับอนุญาต (เช่น ฝ่ายธุรกิจหรือฝ่ายสนับสนุนด้านเทคนิค):
- พอร์ต:
{ port }
- บัญชี:
{ system_id }
- รหัสผ่าน:
{ 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
- ปลายทางของข้อความ ต้องอยู่ในรูปแบบหมายเลขโทรศัพท์ระหว่างประเทศ (เช่น
+8613800138000
)
- ปลายทางของข้อความ ต้องอยู่ในรูปแบบหมายเลขโทรศัพท์ระหว่างประเทศ (เช่น
- short_message
- เนื้อหาข้อความในรูปแบบ JSON ดังนี้:{ "id": "xxx", // รหัสเทมเพลต "language": "default", // ภาษาที่ใช้ ค่าเริ่มต้นคือ "default" "code": "xx", // รหัสยืนยัน ใช้เฉพาะเมื่อ service_type เป็น "code" "params": { // คีย์-ค่าแบบกำหนดเอง "key1": "val1" // รูปแบบค่าคือสตริง } }
{ "id": "xxx", // รหัสเทมเพลต "language": "default", // ภาษาที่ใช้ ค่าเริ่มต้นคือ "default" "code": "xx", // รหัสยืนยัน ใช้เฉพาะเมื่อ service_type เป็น "code" "params": { // คีย์-ค่าแบบกำหนดเอง "key1": "val1" // รูปแบบค่าคือสตริง } }
โค้ดนี้โชว์เป็นหน้าต่างลอย
- เนื้อหาข้อความในรูปแบบ JSON ดังนี้:
- data_coding
- แนะนำให้ใช้การเข้ารหัส
UCS2
เพื่อให้แน่ใจว่าการวิเคราะห์อักขระพิเศษ{}
ถูกต้อง - หาก
{}
สามารถส่งได้โดยตรง สามารถใช้การเข้ารหัสเริ่มต้น (0x00
) ได้
- แนะนำให้ใช้การเข้ารหัส
- status ในส่วนหัว
- ตั้งค่าเป็น
0x00000000
- ตั้งค่าเป็น
การตอบกลับของเซิร์ฟเวอร์
เซิร์ฟเวอร์จะส่งคำสั่ง SUBMIT_SM_RESP
(0x80000004
) เพื่อตอบกลับผลลัพธ์การส่งข้อความ
การตอบกลับที่สำเร็จ
- ฟิลด์ status ในส่วนหัว:
0x00000000
- ฟิลด์ MESSAGE_ID: รหัสข้อความตอบกลับ ใช้สำหรับเชื่อมโยงกับรายงานการส่ง
การตอบกลับที่ล้มเหลว
- เซิร์ฟเวอร์จะเติม ฟิลด์ status ในส่วนหัว เพื่อให้เหตุผลของความล้มเหลว:
รหัสสถานะ | คำอธิบาย | ค่า |
---|---|---|
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 ใน tlv
- รหัสข้อความ ใช้สำหรับการเชื่อมโยงและการระบุ
- MessageState ใน tlv
- สถานะข้อความ ค่าในฟิลด์
0x0427
- สถานะข้อความ ค่าในฟิลด์
การวิเคราะห์สถานะ
ใน ฟิลด์ short_message ค่าของ stat
มีความหมายดังนี้:
สถานะ | ความหมาย |
---|---|
DELIVRD |
ส่งสำเร็จ |
UNDELIV |
ส่งล้มเหลว |
หมายเหตุเพิ่มเติม
คำสั่งที่ไม่ถูกต้อง
สำหรับคำสั่งที่ไม่ถูกต้องที่ส่งโดยไคลเอนต์ เซิร์ฟเวอร์จะส่งคำสั่ง GENERIC_NACK
(0x80000000
) และบันทึกข้อมูลที่เกี่ยวข้อง เซิร์ฟเวอร์รองรับเฉพาะคำสั่งดังต่อไปนี้:
- คำสั่ง
EnquireLink
(0x00000015
) - คำสั่ง
Unbind
(0x00000006
) - คำสั่ง
SubmitSM
(0x00000004
) - คำสั่ง
DeliverSMResp
(0x80000005
) - คำสั่ง
BindTransceiver
(0x00000009
)
การรักษาการเชื่อมต่อ
ไคลเอนต์ต้องส่งคำสั่ง EnquireLink
(0x00000015
) ทุก ๆ 30 วินาที (±5 วินาที) เพื่อให้แน่ใจว่าการเชื่อมต่อยังคงอยู่
ความหมายของสถานะการส่ง
รหัสสถานะ | ความหมาย |
---|---|
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