logoเอกสาร
ค้นหา
เข้าสู่ระบบ

SMPP Send

ข้อมูลอินเทอร์เฟซ

โปรโตคอลนี้กำหนดโปรโตคอลการสื่อสาร SMPP สำหรับบริการ SMS โดยมีเป้าหมายเพื่อให้เกิดการส่งข้อความและการรายงานสถานะที่มีประสิทธิภาพและเชื่อถือได้ผ่านการเชื่อมต่อ TCP ข้อมูลอินเทอร์เฟซประกอบด้วยที่อยู่ IP, พอร์ต และข้อมูลประจำตัวสำหรับการตรวจสอบสิทธิ์ โปรดตรวจสอบให้แน่ใจว่าข้อมูลประจำตัวที่ได้รับจากช่องทางที่ได้รับอนุญาตถูกกำหนดค่าอย่างถูกต้อง

ที่อยู่ SMPP

โปรดขอรับข้อมูลต่อไปนี้จากช่องทางที่ได้รับอนุญาต (เช่น ฝ่ายขายหรือฝ่ายสนับสนุนด้านเทคนิค):

  • ที่อยู่ IP: { ip }
  • พอร์ต: { 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
    • สามารถเว้นว่างไว้ได้; ไม่ได้ใช้ใน SMS ในปัจจุบัน
  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. header status
    • ตั้งค่าเป็น 0x00000000

การตอบสนองของเซิร์ฟเวอร์

เซิร์ฟเวอร์จะตอบกลับคำขอการส่งข้อความด้วยคำสั่ง SUBMIT_SM_RESP (0x80000004)

การตอบสนองที่สำเร็จ

  • ค่าในฟิลด์ header status: 0x00000000
  • ฟิลด์ MESSAGE_ID: รหัสข้อความที่ใช้เชื่อมโยงกับรายงานการส่ง

การตอบสนองที่ล้มเหลว

  • เซิร์ฟเวอร์จะเติมฟิลด์ header 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 in tlv
    • รหัสข้อความสำหรับการเชื่อมโยง
  8. MessageState in 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 สำหรับการส่งข้อความ
  • DELIVER_SM: คำสั่ง SMPP สำหรับรายงานสถานะการส่งข้อความ

หากมีคำถามใดๆ โปรดติดต่อ ฝ่ายสนับสนุนด้านเทคนิค

icon
ติดต่อฝ่ายขาย