IOSOR ความรู้

ข้อผิดพลาด enquire_link ใน SMPP คือทราฟฟิกที่ไม่ถูกจัดส่ง

เรียนรู้วิธีจัดการ SMPP bind ที่ค้างและ enquire_link heartbeat ที่ไร้การตอบรับใน IOSOR เพื่อป้องกัน DLR ปลอมและปกป้องยอดเงิน balance

ข้อผิดพลาด enquire_link ใน SMPP คือทราฟฟิกที่ไม่ถูกจัดส่ง.

ความเข้าใจเกี่ยวกับ enquire_link Heartbeat และการตรวจจับ Dead Bind

ในการเชื่อมต่อ SMPP คำขอ enquire_link ทำหน้าที่เป็น L7 heartbeat หลักระหว่างเซสชัน transmitter หรือ transceiver กับ SMSC เมื่อการเชื่อมต่อ socket ค้างโดยไม่มีการส่งแพ็กเกจ UNBIND หรือ TCP FIN อย่างชัดเจน จะเกิดภาวะเซสชันหลุดแบบเงียบ หากไม่มีการตรวจสอบ heartbeat คิวขาออกจะยังคงส่ง submit_sm PDU เข้าสู่เซสชันที่ค้างอยู่ Engine ของ IOSOR จะเฝ้าระวังสถานะของทุก bind โดยการส่ง enquire_link PDU ตามช่วงเวลาที่กำหนด

ทำไม Heartbeat ที่ไร้การตอบรับต้องบล็อก DLR ที่เป็น False Positive

ช่องโหว่ทั่วไปในระบบ CPaaS ดั้งเดิมคือการรายงานการจัดส่งแบบมองโลกในแง่ดี หากเซสชันตัดลงหลังจากได้รับ submit_sm_resp แต่ก่อนได้รับการยืนยันการจัดส่งจากปลายทาง ระบบต้องไม่สมมติว่าข้อความส่งสำเร็จ การตัดเงินในบัญชีลูกค้าอย่างถาวรในระหว่างที่ socket หลุดจะสร้างความผิดพลาดทางการเงิน IOSOR ป้องกันปัญหานี้โดยผูกสถานะ DLR เข้ากับการยืนยันจริงจากเครือข่ายอย่างเข้มงวด

การกระทบยอด บัญชีและการปลด Hold เมื่อ เกิด Socket Timeout

เมื่อ submit PDU ขาออกเข้าสู่ routing engine ระบบ IOSOR จะทำการ hold ยอดเงินใน ledger ชั่วคราว หาก SMPP bind หลุดเนื่องจากขาด enquire_link_resp ตัว engine จะปฏิเสธข้อความที่อยู่ระหว่างทางทันที ยอดเงินที่ถูก hold ไว้จะถูกปลดปล่อยหรือคืนกลับทันทีแทนที่จะตัดเป็น debit ถาวร ซึ่งช่วยป้องกันค่าบริการแฝงและรักษายอดเงินในกระเป๋าของลูกค้าให้ถูกต้อง

การทำ Failover อัตโนมัติและการแยก Routing

การตรวจพบ bind ที่ค้างต้องเปิดใช้งานการสลับเส้นทางทราฟฟิกทันที เมื่อความล้มเหลวของ enquire_link เกินขีดจำกัดที่กำหนดไว้ (โดยทั่วไปคือการไม่ตอบรับ 2 ครั้งติดต่อกัน) IOSOR จะทำการแยกเซสชันที่มีปัญหา ส่งสัญญาณ event ภายใน และย้ายทราฟฟิก OTP และ SMS ธุรกรรมไปยังเส้นทางสำรองรองรับที่ตั้งค่าไว้

การปรับสถานะให้ตรงกันข้ามระบบและ Audit Logs

การรักษาความสอดคล้องกันระหว่างเซสชันโปรโตคอล สมุดบัญชีการเงิน และ API webhook จำเป็นต้องใช้ภาษาสถานะที่เป็นหนึ่งเดียว เมื่อการสูญเสีย heartbeat ทำให้เซสชัน SMPP หลุด IOSOR จะบันทึกลำดับหมายเลข PDU ที่ไม่ได้รับการยืนยันลงใน audit log อย่างละเอียด พร้อมส่ง structured webhook event ไปยังไคลเอนต์ปลายทาง

บทความที่เกี่ยวข้อง: การกันยอดเติมเงินก่อนการหักครั้งแรก · เส้นหยุดกระเป๋าเงินก่อนทราฟฟิกใช้งานจริง · TTL ของ OTP และช่วงพักส่งซ้ำ.

เริ่มต้นกับ IOSOR

เปิดคอนโซล IOSOR ใต้การตั้งค่าเกตเวย์เพื่อกำหนดค่าพารามิเตอร์เซสชัน SMPP โดยบังคับเกณฑ์การขาดการตอบสนองของ enquire_link สองครั้งอย่างเข้มงวด ตรวจสอบให้แน่ใจว่ากฎการกำหนดเส้นทางของคุณตัดการเชื่อมต่อที่เงียบและปล่อยยอดเงินที่ค้างอยู่โดยอัตโนมัติ แทนที่จะสร้างใบตอบรับการจัดส่งแบบคาดหวังแง่บวก ยืนยันว่าตัวกระตุ้นการสลับล้มเหลวของซ็อกเก็ตอัตโนมัติทำงานอยู่เพื่อเปลี่ยนเส้นทางเพย์โหลด submit_sm ที่ไม่ได้รับการยืนยันทันที

สรุป IOSOR

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

บังคับใช้เกณฑ์หมดเวลาซ็อกเก็ตที่เข้มงวดและการปล่อยการพักทันทีเมื่อเฟรม enquire_link_resp มาไม่ถึง อย่าปล่อยให้ตรรกะการเรียกเก็บเงินเดิมสมมติว่าการจัดส่งเสร็จสิ้นเมื่อการเชื่อมต่อหลุด หรือยังคงหักยอดเงินของลูกค้าต่อไปเมื่อปลายทางตัดการเชื่อมต่ออย่างเงียบๆ

คู่มือนี้มีประโยชน์ไหม?

คู่มือที่เกี่ยวข้อง

  • ข้อจำกัดเซสชันและ Bind Window ของ SMPP

    เรียนรู้วิธีการกำหนดค่า SMPP bind window ข้อจำกัดเซสชัน และบัฟเฟอร์ข้อความที่ยังไม่ได้ยืนยันสำหรับปริมาณข้อความแบบเติมเงินบนแพลตฟอร์ม IOSOR

  • SMPP Binds vs REST API Keys บน IOSOR

    เปรียบเทียบเซสชัน SMPP และคีย์ REST API บน IOSOR เรียนรู้กลไก sliding window กระบวนการหมุนเวียนคีย์ และการจัดการข้อมูลรับรองในส่วนนักพัฒนา