ส่ง 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








