SMPP - โปรโตคอลข้อความสั้นแบบ Peer-to-Peer

สวัสดี! แม้ว่าผู้ส่งสารและโซเชียลเน็ตเวิร์กจะเข้ามาแทนที่วิธีการสื่อสารแบบเดิมๆ ทุกวัน แต่ก็ไม่ได้ลดทอนความนิยมของ SMS การตรวจสอบความถูกต้องบนเว็บไซต์ยอดนิยมหรือการแจ้งเตือนการทำธุรกรรมซ้ำ สิ่งเหล่านี้เกิดขึ้นและจะมีผลใช้งานต่อไป คุณเคยสงสัยบ้างไหมว่ามันทำงานอย่างไร? บ่อยครั้งที่มีการใช้โปรโตคอล SMPP เพื่อส่งข้อความจำนวนมาก ซึ่งจะกล่าวถึงด้านล่าง

มีบทความเกี่ยวกับHabréเกี่ยวกับ smpp อยู่แล้ว 1,2แต่เป้าหมายของพวกเขาไม่ใช่เพื่ออธิบายโปรโตคอลเอง แน่นอนคุณสามารถเริ่มต้นจากแหล่งต้นฉบับได้ทันที - ข้อกำหนดแต่ผมคิดว่าถ้ามีบทสรุปสั้นๆ ก็คงดี ฉันจะอธิบายโดยใช้ v3.4 เป็นตัวอย่าง ฉันจะดีใจที่คุณวิพากษ์วิจารณ์อย่างเป็นกลาง

โปรโตคอล SMPP เป็นโปรโตคอลการส่งข้อความแบบเพียร์ทูเพียร์ ซึ่งหมายความว่าแต่ละเซิร์ฟเวอร์เพียร์/ฮับมีสิทธิ์เท่าเทียมกัน ในกรณีที่ง่ายที่สุด รูปแบบการส่งข้อความ SMS จะมีลักษณะดังนี้:

SMPP - โปรโตคอลข้อความสั้นแบบ Peer-to-Peer

อย่างไรก็ตาม หากผู้ให้บริการระดับชาติไม่มีเส้นทางไปยังพื้นที่ห่างไกล เขาจะขอสิ่งนี้จากคนกลาง - ฮับ SMS บางครั้งเพื่อที่จะส่ง SMS เดียว คุณต้องสร้างเครือข่ายระหว่างหลายประเทศหรือแม้แต่ทวีป

เกี่ยวกับโปรโตคอล

SMPP เป็นโปรโตคอลเลเยอร์แอปพลิเคชันที่ใช้การแลกเปลี่ยน PDU และถูกส่งผ่านเซสชัน TCP / IP หรือ X25 สำหรับการส่งข้อความ SMS และ ussd โดยทั่วไป SMPP จะใช้ในโหมดคงอยู่ ซึ่งช่วยประหยัดเวลา SMPP ใช้โมเดลการสื่อสารไคลเอ็นต์-เซิร์ฟเวอร์

รีจิม สวีซิซ

SMPP - โปรโตคอลข้อความสั้นแบบ Peer-to-Peer

การแลกเปลี่ยนข้อความระหว่างผู้ส่งและศูนย์ SMS ผ่าน SMPP สามารถทำได้ในโหมดต่อไปนี้:

เครื่องส่ง (เครื่องส่งสัญญาณ) - ส่งข้อความไปในทิศทางเดียวทีละครั้ง
ผู้รับ - รับเฉพาะข้อความจากศูนย์ SMS
ตัวรับส่งสัญญาณ (ตัวรับส่งสัญญาณ) - แลกเปลี่ยนข้อความระหว่างศูนย์ SMS และผู้ใช้

โครงสร้าง

SMPP - โปรโตคอลข้อความสั้นแบบ Peer-to-Peer

ความยาวข้อความ

ข้อความ SMS หนึ่งข้อความสามารถมีอักขระได้ 70 ตัวเมื่อพิมพ์ด้วยอักษรซีริลลิกและอักขระละตินไม่เกิน 157 ตัว + 3 UDH หากคุณส่ง SMS ที่มีอักขระจำนวนมาก ข้อความนั้นจะแบ่งออกเป็นหลายส่วนและรวมกันในอุปกรณ์รับ ในกรณีของการแบ่งส่วน จำนวนอักขระจะลดลงตามส่วนหัวของข้อความ ซึ่งระบุส่วนของข้อความ ดังนั้นเมื่อส่งข้อความ SMS ขนาดใหญ่ จะมีอักขระละตินได้สูงสุด 153 ตัวหรืออักขระผิดปรกติ 67 ตัว

โครงการเข้ารหัสข้อมูล

อย่างไรก็ตาม สัญลักษณ์จำเป็นต้องมีการเข้ารหัสเพื่อถ่ายทอดข้อความ ในโปรโตคอล SMPP ฟิลด์พิเศษมีหน้าที่ในการเข้ารหัส - Data Coding Scheme หรือ DCS นี่คือฟิลด์ที่ระบุวิธีการจดจำข้อความ นอกจากนี้ ฟิลด์ DCS ยังรวมถึง:

  • ชุดอักขระที่กำหนดการเข้ารหัส
  • คลาสข้อความ
  • ขอให้ลบอัตโนมัติหลังจากอ่าน
  • ข้อบ่งชี้ของการบีบอัดข้อความ
  • ภาษาข้อความออกอากาศ

ตัวอักษรมาตรฐาน 7 บิต (GSM 03.38) ได้รับการพัฒนาสำหรับระบบส่งข้อความ GSM การเข้ารหัสนี้เหมาะสำหรับภาษาอังกฤษและภาษาละตินจำนวนหนึ่ง อักขระแต่ละตัวประกอบด้วย 7 บิตและถูกเข้ารหัสเป็นออคเต็ต

UTF-16 (ใน GSM UCS2) เพื่อรวมอักขระที่หายไปในตัวอักษร 7 บิต การเข้ารหัส UTF-16 ได้รับการพัฒนาซึ่งเพิ่มอักขระเพิ่มเติม (รวมถึง Cyrillic) โดยการลดขนาดข้อความจาก 160 เป็น 70 การเข้ารหัสประเภทนี้เกือบ จำลอง Unicode อย่างสมบูรณ์

ข้อมูลที่กำหนดโดยผู้ใช้ 8 บิต ซึ่งรวมถึง KOI8-R และ Windows-1251 แม้ว่าโซลูชันนี้ดูเหมือนจะประหยัดกว่าเมื่อเทียบกับ UTF-16 เดียวกัน คำถามที่สมเหตุสมผลเกิดขึ้นเกี่ยวกับความเข้ากันได้ในอุปกรณ์ต่างๆ เพราะในกรณีนี้จะต้องกำหนดค่าอุปกรณ์ทั้งสองไว้ล่วงหน้า

ชั้นเรียนข้อความ

  • ข้อความ Class0 หรือแฟลชที่จัดเก็บไว้ในหน่วยความจำของโทรศัพท์ตามคำขอของผู้ใช้
  • Class1 หรือที่เก็บไว้ในหน่วยความจำของโทรศัพท์
  • Class1 หรือที่เก็บไว้ในหน่วยความจำของโทรศัพท์
  • Class2 ต้องแน่ใจว่าข้อความถูกบันทึกไว้ในหน่วยความจำของเทอร์มินัลมือถือ มิฉะนั้นจะต้องแจ้งเตือนศูนย์ SMS เกี่ยวกับความเป็นไปไม่ได้ในการบันทึก
  • Class3 - ในกรณีนี้ โทรศัพท์จะต้องส่งการแจ้งเตือนว่าสามารถจัดเก็บข้อความได้ โดยไม่คำนึงถึงจำนวนหน่วยความจำในอุปกรณ์ ข้อความประเภทนี้บอกเป็นนัยว่าข้อความถึงผู้รับแล้ว

ประเภทข้อความ

ข้อความเงียบ (SMS0) ประเภทของข้อความ SMS ที่ไม่มีเนื้อหา SMS นี้มาถึงโดยไม่มีการแจ้งเตือน และไม่ปรากฏบนหน้าจออุปกรณ์

PDU

การดำเนินการ pdu แต่ละรายการจะถูกจับคู่และประกอบด้วยคำขอและการตอบกลับ ตัวอย่างเช่น: คำสั่งที่ระบุว่ามีการสร้างการเชื่อมต่อแล้ว (bind_transmitter / bind_transmitter_resp) หรือข้อความถูกส่งไปแล้ว (deliver_sm / Deliver_sm_resp)

SMPP - โปรโตคอลข้อความสั้นแบบ Peer-to-Peer

แต่ละแพ็กเก็ต pdu ประกอบด้วยสองส่วน - ส่วนหัวและเนื้อหา โครงสร้างส่วนหัวจะเหมือนกันสำหรับแพ็กเก็ต pdu ใดๆ: command length คือความยาวของแพ็กเก็ต, id คือชื่อของแพ็กเก็ต และคำสั่ง status ระบุว่าข้อความถูกส่งสำเร็จหรือมีข้อผิดพลาด

พารามิเตอร์ TLV เพิ่มเติม

TLV (ค่าความยาวแท็ก) หรือฟิลด์เพิ่มเติม พารามิเตอร์ดังกล่าวใช้เพื่อขยายการทำงานของโปรโตคอลและไม่จำเป็น ฟิลด์นี้จะปรากฏที่ส่วนท้ายของฟิลด์ pdu ตามตัวอย่าง การใช้ TLV dest_addr_np_information คุณสามารถจัดระเบียบการส่งข้อมูลเกี่ยวกับความสามารถในการพกพาของตัวเลขได้

ตันและนปี้

พารามิเตอร์ TON (ประเภทของตัวเลข) แจ้ง SMSC เกี่ยวกับรูปแบบการกำหนดที่อยู่และประเภทเครือข่าย
พารามิเตอร์ NPI (การระบุแผนการกำหนดหมายเลข) ที่ระบุแผนการกำหนดหมายเลข

SMPP - โปรโตคอลข้อความสั้นแบบ Peer-to-Peer

ที่อยู่แหล่งข้อความหรือชื่ออัลฟ่า

ข้อความที่ส่งไปยังโทรศัพท์ของคุณมีสองรูปแบบ: ดิจิทัลและตัวอักษร หมายเลขดิจิทัลอาจยาว (คล้ายกับหมายเลขโทรศัพท์) หรือสั้นก็ได้ บางครั้งโอเปอเรเตอร์มีข้อจำกัดในการส่งจากชื่อที่เป็นกลาง เช่น ข้อมูล การแจ้งเตือน ฯลฯ บางครั้งผู้ให้บริการจะไม่อนุญาตให้มีการรับส่งข้อมูลหากไม่ได้ลงทะเบียนชื่อบนเครือข่ายของตน อย่างไรก็ตาม สิ่งเหล่านี้ค่อนข้างเป็นคุณลักษณะของผู้ปฏิบัติงาน

ขั้นตอนการส่ง

SMPP - โปรโตคอลข้อความสั้นแบบ Peer-to-Peer

SMS-ส่ง - นี่คือการส่งข้อความ MO FSM (ข้อความสั้นจากเทอร์มินัลมือถือ)
รายงานการส่ง SMS — การยืนยันว่าข้อความถูกส่งโดย SMSC
ศรีเอสเอ็ม (SendRoutingInfo) - SMSC รับข้อมูลจาก HLR เกี่ยวกับตำแหน่ง MSC / VLR ของผู้สมัครสมาชิก
ทรัพยากร SRI SM — คำตอบจาก HLR เกี่ยวกับตำแหน่งสมาชิก
MT-FSM — หลังจากได้รับตำแหน่งแล้ว ระบบจะส่งข้อความโดยใช้การดำเนินการ "ส่งต่อข้อความสั้น"
ระดาษ MT-FSM — การตอบสนองจาก SMSC ว่าข้อความถูกส่งไปแล้ว
รายงานสถานะ SMS — SMSC ส่งสถานะการส่งข้อความ

สถานะการส่งข้อความ

รายงานสถานะ SMS สามารถรับได้หลายค่า:
เดลิเวอร์ด ส่งข้อความเรียบร้อยแล้ว
ปฏิเสธ — ข้อความถูกปฏิเสธโดยศูนย์ SMS
หมดอายุ — ข้อความจะถูกลบออกจากคิวการส่งหลังจากสิ้นสุด TTL (อายุข้อความ)
อุนเดลิฟ - กรณีอื่นๆ ของการไม่จัดส่ง
UNKNOWN- ไม่มีการตอบกลับเกี่ยวกับการจัดส่ง

ข้อผิดพลาดในการโอน

บางครั้งมีสาเหตุที่ทำให้ไม่สามารถส่งข้อความ SMS ไปยังสมาชิกได้ ผลที่ตามมาจากสาเหตุเหล่านี้คือการเกิดข้อผิดพลาด ข้อผิดพลาดจะถูกส่งกลับไปยัง PDUs_sms_resp ข้อผิดพลาดทั้งหมดสามารถแบ่งออกเป็นชั่วคราว (ชั่วคราว) และถาวร (ถาวร)

ตามตัวอย่าง สามารถจัดประเภท absent_subscriber เป็นแบบชั่วคราว - ผู้สมัครสมาชิกไม่ว่างหรือไม่ออนไลน์ และแบบถาวร - ไม่มีสมาชิกอยู่ ขึ้นอยู่กับข้อผิดพลาดที่เกิดขึ้น นโยบายสำหรับการส่งข้อความเหล่านี้ซ้ำจะเกิดขึ้น

ตัวอย่างเช่น หากผู้สมัครสมาชิกกำลังยุ่งอยู่กับการโทรและได้รับข้อผิดพลาดว่าเครื่อง MT ไม่ว่าง ข้อความจะถูกส่งอีกครั้งหลังจากผ่านไปสองสามนาที อย่างไรก็ตาม หากบริการรับข้อความของผู้สมัครสมาชิกถูกบล็อก การส่งอีกครั้งจะไม่สมเหตุสมผล คุณสามารถดูรายการข้อผิดพลาดได้ที่หน้า SMSC เช่น นี้.

ที่มา: will.com

เพิ่มความคิดเห็น