ส่ง 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) เพื่อส่งคำขอการส่งข้อความ ลอจิกของเซิร์ฟเวอร์เป็นดังนี้:

  1. เซิร์ฟเวอร์จะวิเคราะห์เนื้อหาคำขอและใช้ช่องทาง SMS สำหรับการส่ง
  2. การส่งข้อความอยู่ในโหมดซิงโครนัส และผลลัพธ์จะตอบกลับด้วยคำสั่ง SUBMIT_SM_RESP (0x80000004)
  3. สถานะการส่งจะถูกรายงานผ่านการรายงานข้อความ สำหรับรายละเอียด โปรดดูที่ รายงานการส่ง
  4. แนะนำให้ใช้การเข้ารหัส UCS2 เพื่อรองรับอักขระพิเศษและการทำให้เป็นสากล

แพ็กเก็ตของไคลเอนต์

ไคลเอนต์จะส่งคำสั่ง SUBMIT_SM (0x00000004) เพื่อส่งข้อความ ซึ่งจะต้องมีฟิลด์ดังต่อไปนี้:

  1. service_type
    • ค่า: MSG / CODE / MRKT
    • ค่าเริ่มต้น: MSG
  2. source_addr
    • สามารถเว้นว่างไว้ได้; ปัจจุบันไม่ได้ใช้ใน OTP
  3. destination_addr
    • ปลายทางของข้อความ ต้องอยู่ในรูปแบบหมายเลขโทรศัพท์ระหว่างประเทศ (เช่น +8613800138000)
  4. 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"       // รูปแบบค่าคือสตริง
        }
      }
      
                  
      โค้ดนี้โชว์เป็นหน้าต่างลอย
  5. data_coding
    • แนะนำให้ใช้การเข้ารหัส UCS2 เพื่อให้แน่ใจว่าการวิเคราะห์อักขระพิเศษ {} ถูกต้อง
    • หาก {} สามารถส่งได้โดยตรง สามารถใช้การเข้ารหัสเริ่มต้น (0x00) ได้
  6. 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) ฟิลด์เฉพาะมีดังนี้:

  1. service_type
    • ค่าแบบคงที่: MSG
  2. source_addr
    • เว้นว่างไว้
  3. destination_addr
    • เหมือนกับ destination_addr ในคำสั่ง SUBMIT_SM
  4. data_coding
    • การเข้ารหัส: ค่าเริ่มต้น 0x00
  5. esm_class
    • ตั้งค่าเป็น 0x00
  6. short_message
    • ห่อหุ้มรายงานการส่งในรูปแบบ delivery receipt
  7. ReceiptedMessageID ใน tlv
    • รหัสข้อความ ใช้สำหรับการเชื่อมโยงและการระบุ
  8. MessageState ใน tlv
    • สถานะข้อความ ค่าในฟิลด์ 0x0427

การวิเคราะห์สถานะ

ใน ฟิลด์ short_message ค่าของ stat มีความหมายดังนี้:

สถานะ ความหมาย
DELIVRD ส่งสำเร็จ
UNDELIV ส่งล้มเหลว

หมายเหตุเพิ่มเติม

คำสั่งที่ไม่ถูกต้อง

สำหรับคำสั่งที่ไม่ถูกต้องที่ส่งโดยไคลเอนต์ เซิร์ฟเวอร์จะส่งคำสั่ง GENERIC_NACK (0x80000000) และบันทึกข้อมูลที่เกี่ยวข้อง เซิร์ฟเวอร์รองรับเฉพาะคำสั่งดังต่อไปนี้:

  1. คำสั่ง EnquireLink (0x00000015)
  2. คำสั่ง Unbind (0x00000006)
  3. คำสั่ง SubmitSM (0x00000004)
  4. คำสั่ง DeliverSMResp (0x80000005)
  5. คำสั่ง 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

icon
ติดต่อฝ่ายขาย
banner-pic
ฉลาดขึ้นและแม่นยำยิ่งขึ้น!
ยกระดับประสิทธิภาพทางการตลาดด้วย Marketing Automation
เริ่มกันเลย