IOSOR ความรู้
Webhook SMS ขาเข้า: การลองใหม่ ลำดับเหตุการณ์ และความเป็น idempotent เมื่อรับ
คู่มือการสร้างสำหรับทีม B2B ที่จัดการ SMS ขาเข้า: ทำไมการลองใหม่จึงเกิดขึ้น ทำไมลำดับเหตุการณ์จึงไม่รับประกัน และวิธีทำให้ endpoint การรับของคุณเป็น idempotent แทนที่จะทำให้การสนทนาและการจัดการ STOP ซ้ำซ้อน
ตัวจัดการข้อความขาเข้าทุกตัวในที่สุดจะเจอกับความประหลาดใจสามอย่างเดียวกัน: webhook เดียวกันทำงานสองครั้ง เหตุการณ์ "delivered" มาถึงหลังจาก "failed" ที่มันควรจะแทนที่ และการตอบกลับ STOP ของลูกค้าถูกประมวลผลสองครั้งเพราะเซิร์ฟเวอร์สองเครื่องได้รับการลองใหม่แบบเดียวกัน ไม่มีสิ่งใดในนี้เป็นบั๊กของแพลตฟอร์มที่ส่ง webhook ให้คุณ — มันคือพฤติกรรมปกติของระบบส่งมอบแบบ "อย่างน้อยหนึ่งครั้ง" ใดๆ และ endpoint การรับของคุณต้องถูกสร้างขึ้นสำหรับความเป็นจริงนี้ตั้งแต่วันแรก.
IOSOR ส่งมอบ SMS ขาเข้า คำสำคัญ STOP/HELP และเหตุการณ์การส่งมอบเป็น webhook เติมเงินแบบ white-label — พฤติกรรมการลองใหม่และการจัดลำดับด้านล่างคือสิ่งที่การผสานรวม B2B ที่จริงจังใดๆ ควรสมมติ ไม่ว่าแพลตฟอร์มใดจะอยู่เบื้องหลัง.
ทำไม webhook จึงลองใหม่เลย
ผู้ให้บริการ webhook ไม่สามารถทราบได้อย่างแน่ชัดว่า endpoint ของคุณประมวลผลการส่งมอบแล้วหรือไม่ เซิร์ฟเวอร์ของคุณอาจส่งคืน 200 หลังจากคอมมิตในฐานข้อมูลที่ถูกย้อนกลับในภายหลัง; load balancer อาจสูญเสียการตอบสนองระหว่างทางกลับแม้ว่าตัวจัดการของคุณจะสำเร็จ; การปรับใช้อาจรีสตาร์ทกระบวนการของคุณกลางคำขอ เนื่องจาก "สูญเสียเหตุการณ์อย่างเงียบๆ" แย่กว่า "ส่งมันสองครั้งเป็นครั้งคราว" ระบบ webhook ที่จริงจังทุกระบบจึงเลือก.
สามโหมดความล้มเหลวที่คุณต้องออกแบบรองรับ
| โหมดความล้มเหลว | เกิดอะไรขึ้น | อะไรพังถ้าคุณเพิกเฉย |
|---|---|---|
| การส่งมอบซ้ำซ้อน | ID เหตุการณ์เดียวกันมาถึง 2 ครั้งขึ้นไป | การตอบกลับถูกนับซ้ำ การประมวลผล STOP ซ้ำซ้อน เธรดการสนทนาซ้ำซ้อน |
| เหตุการณ์ไม่เรียงลำดับ | เหตุการณ์ที่มีการประทับเวลาใหม่กว่ามาถึงก่อนเหตุการณ์ที่เก่ากว่า | สถานะ "delivered" ถูกเขียนทับกลับเป็น "sent" |
| ความล้มเหลวบางส่วน/คลุมเครือ |
Idempotency: คุณสมบัติเดียวที่แก้ไขทั้งสามอย่าง
endpoint การรับที่เป็น idempotent จะสร้างสถานะสุดท้ายเดียวกันไม่ว่าเหตุการณ์เดียวกันจะถูกส่งมอบกี่ครั้งก็ตาม กลไกนี้เรียบง่ายและเข้าใจได้ดี: ทุกเหตุการณ์ขาเข้ามี ID เหตุการณ์ที่ไม่ซ้ำกัน; ก่อนการประมวลผล คุณตรวจสอบว่าคุณได้บันทึก ID นั้นไว้แล้วหรือไม่; ถ้าใช่ คุณจะส่งคืนความสำเร็จทันทีโดยไม่ต้องประมวลผลใหม่.
ลำดับเหตุการณ์: ทำไม "การเขียนครั้งล่าสุดชนะ" จึงเป็นอันตราย
เหตุการณ์ webhook สำหรับข้อความเดียวกันไม่รับประกันว่าจะมาถึงตามลำดับที่เกิดขึ้น การลองใหม่ของเหตุการณ์ "queued" ก่อนหน้านี้อาจมาถึงหลังจากเหตุการณ์ "delivered" ในภายหลังเนื่องจากความสั่นไหวของเครือข่าย การจัดคิวฝั่งผู้ให้บริการ หรือ worker pool ของคุณเองประมวลผลคำขอไม่เรียงลำดับ หา.
STOP, HELP และคำสำคัญขาเข้าอื่นๆ ต้องการวินัยแบบเดียวกัน
คำสำคัญขาเข้าที่สำคัญต่อการปฏิบัติตามข้อกำหนดสมควรได้รับ idempotency ที่เข้มงวดที่สุด STOP ที่ซ้ำซ้อนไม่ควรบันทึกเหตุการณ์เลิกรับข้อมูลสองครั้งหรือส่งการตอบกลับยืนยันสองครั้งเลย HELP ที่ซ้ำซ้อนไม่ควรเรียกใช้ข้อความข้อมูลสนับสนุนแยกกันสองข้อความไปยังหมายเลขเดียวกันในนาทีเดียวกันเลย กำหนดเส้นทางการประมวลผลคำสำคัญผ่านตารางลบข้อมูลซ้ำเดียวกับข้อความขาเข้าปกติ — STOP.
เริ่มต้นกับ IOSOR
ดึงบันทึก webhook ขาเข้าสัปดาห์ก่อน นับ event ID ที่มาเกินครั้ง. เล่นซ้ำหนึ่งซ้ำและคู่ลำดับสลับ (failed แล้ว delivered). ฝั่งรับเก็บผลเดียว: แถวกล่องหนึ่ง เขียน STOP หนึ่ง แตะกระเป๋าหนึ่ง. Last-write-wins ที่ถอน STOP ถือว่าตก. นี่คือความไม่แปรผันตอนรับกับลำดับลองใหม่ ไม่ใช่ตรวจลายเซ็น และไม่ใช่กุญแจเกตเวย์ก่อนคิว.
- สัปดาห์ทดลองใช้งานขาเข้า: ตรวจสอบ MO สดบน DID เช่า
- นโยบายคำ STOP และ HELP
- ข้อมูลรับรอง sandbox ที่ไม่เผา debit Live
สรุป IOSOR
webhook ขาเข้าลองใหม่. ความไม่แปรผันตอนรับคือคำตอบปลอดภัยเดียว; ลำดับไม่ใช่สัญญา.
ทำ: กุญแจเหตุการณ์และทิ้งแฝด. อย่า: last-write-wins บน STOP หรือหักเหตุการณ์เดียวกันสองครั้ง.
คู่มือนี้มีประโยชน์ไหม?
คู่มือที่เกี่ยวข้อง
- การกำหนดค่าทริกเกอร์ SMS สำหรับสายโทรเข้าเสียงที่พลาดในระบบ IOSOR
เรียนรู้วิธีการกำหนดค่าทริกเกอร์ SMS อัตโนมัติสำหรับสายโทรเข้าเสียงที่พลาดและสัญญาณไม่ว่างภายในคอนโซล white-label CPaaS ของ IOSOR
- บัฟเฟอร์การประมวลผล Webhook ขาเข้าเพื่อรับมือกับความหน่วงของเครือข่าย
เรียนรู้วิธีการกำหนดค่าบัฟเฟอร์ขาเข้าของ IOSOR เพื่อปกป้องเว็บฮุกของคุณจากความล่าช้าในการจัดส่งของเครือข่าย ความหนาแน่นของการเรียกใช้งานพร้อมกัน และข้อผิดพลาดหมดเวลาต้นทาง
- การซิงโครไนซ์คีย์เวิร์ดปฏิเสธการรับข้อความขาเข้าข้ามบัญชีหลายผู้เช่า
ควบคุมการซิงโครไนซ์การปฏิเสธการรับข้อความแบบหลายผู้เช่าใน IOSOR เรียนรู้วิธีที่คีย์เวิร์ดหยุดขาเข้าจัดการการบล็อกทั่วโลกพร้อมกับแยกย่อยบัญชีย่อย