BroadNet
المجلةهندسة
هندسة

لماذا تفشل رسائل رمز التحقق لمرة واحدة - وكيفية إصلاح مشاكل التسليم.

تفشل رموز التحقق لمرة واحدة (OTP) لأسباب محددة: رفض معرّف المُرسِل، والمسارات غير الرسمية، والتقييد، وفلاتر المحتوى، والترميز، والازدحام. دليل تشخيصي وعلاجي لمهندس ميداني.

BroadNet Engineering
11 دقائق قراءة
هندسة · العدد 17
11 دقائق قراءة

ندما لا يصل رمز التحقق لمرة واحدة، يعلق المستخدم في شاشة تسجيل الدخول أو صفحة الدفع، ويكون على وشك التخلي عن العملية. يكمن الإحباط لفريق الهندسة في أن الرسالة غالبًا ما تُرسل بنجاح - حيث يُعيد واجهة برمجة التطبيقات رمز 202، ويتم قبول طلب SMPP، وتعرض المنصة رسالة في قائمة الانتظار. يحدث العطل في مكان ما على شبكة لا يستطيع فريق التطبيق الوصول إليها مباشرةً. يستعرض هذا المقال قائمة محدودة من أسباب فشل رموز المرور لمرة واحدة في بيئة الإنتاج، وكيفية التمييز بينها وبين الإيصالات المتوفرة، وطريقة معالجة كل سبب.

سطح الفشل أصغر مما يبدو

يفشل إرسال رسائل رمز التحقق لمرة واحدة (OTP) لأحد الأسباب السبعة التالية، مرتبة تقريبًا حسب التكرار: رفض معرّف المُرسِل لدى مشغّل الشبكة المُستهدفة، أو وجود مسار وسيط يُؤدي إلى إسقاط الرسالة أو تأخيرها، أو تقييد سرعة الإنترنت في مركز خدمة الرسائل القصيرة (SMSC) أو جدار حماية SMS، أو تعطل مُرشّحات المحتوى بسبب قالب مُعين، أو عدم تطابق التشفير بين محتوى UCS-2 وقالب GSM-7، أو ازدحام الشبكة لدى مشغّل الشبكة المُستهدفة، أو عدم إمكانية الوصول إلى الهاتف نفسه (إيقاف التشغيل، أو خارج نطاق التغطية، أو نقله برقم توجيه قديم). أما الأسباب الأخرى - مثل تلف رقم MSISDN، أو انتهاء صلاحية بيانات الاعتماد، أو انقطاع مسار الشبكة - فهي قليلة. ابدأ بتشخيص الحالات الشائعة أولًا.

اقرأ إيصالات التسليم، وليس رد التقديم.

أكبر خطأ ترتكبه الفرق هو اعتبار نجاح عملية الإرسال (رمز الاستجابة 202 من HTTP، ورمز ESME_ROK على submit_sm) دليلاً على تسليم الرسالة. هذا غير صحيح. الإرسال يعني أن المنصة قبلت الرسالة، والتسليم يعني أن الهاتف استلمها. يجب ربط كل نظام OTP بإيصال التسليم (DLR)، الذي يصل لاحقًا كـ webhook أو وحدة بيانات بروتوكول deliver_sm (PDU) ويحمل أحد رموز الحالة التالية: DELIVRD، UNDELIV، REJECTD، EXPIRED، UNKNOWN. أول مؤشر لأي تحقيق في OTP هو توزيع حالة DLR حسب المسار، ومعرّف المُرسِل، ومشغّل الوجهة، والفترة الزمنية - وليس معدل نجاح الإرسال.

التشخيص عن طريق تحديد مكان حدوث العطل

يُقسّم التحقيق الدقيق في حالات فشل رمز التحقق لمرة واحدة (OTP) إلى أربعة أجزاء، ويبدأ من الإشارة الأخيرة. الجزء الأول: فشل الإرسال - رفضت المنصة المكالمة قبل مغادرتها، وغالبًا ما يكون السبب هو معرّف مُرسِل غير صحيح، أو فئة قالب غير مُسجّلة، أو بلد غير مدعوم، أو حقل مطلوب مفقود. الجزء الثاني: قُبلت المكالمة عند الإرسال ولكن لم تصل إلى مركز خدمة الرسائل القصيرة (SMSC) - عادةً ما يكون السبب مشكلة في جودة المسار أو حظر جدار الحماية. الجزء الثالث: وصلت المكالمة إلى مركز خدمة الرسائل القصيرة (SMSC) ولكن تم إرجاع إيصال تسليم سلبي (DLR) - تم تصفية المحتوى، وتم إدراج معرّف المُرسِل في القائمة السوداء لدى المشغّل، وتم حظر المُستلِم. الجزء الرابع: إيصال تسليم إيجابي (DLR) ولكن المستخدم لم يُبلغ عن أي رسالة - الهاتف مُغلق، أو تم تحويل المكالمة إلى مشغّل آخر ذي توجيه قديم، أو فلتر البريد العشوائي على مستوى نظام التشغيل، أو تم كتم الإشعارات. تختلف طريقة المعالجة في كل جزء؛ والخلط بينها يُضلّل فرق العمل.

الأسباب السبعة الشائعة، وكيفية التعامل مع كل منها

1. رفض معرّف المُرسِل

تتطلب العديد من الأسواق الخاضعة للتنظيم - الإمارات العربية المتحدة تحت إشراف هيئة تنظيم الاتصالات والحكومة الرقمية (TDRA)، والمملكة العربية السعودية تحت إشراف هيئة الاتصالات السعودية، ومصر تحت إشراف الهيئة الوطنية لتنظيم الاتصالات، والهند تحت إشراف هيئة تنظيم الاتصالات في الهند - تسجيل كل معرّف مُرسِل أبجدي رقمي مُسبقًا لدى كيان قانوني مُوثّق. يتم رفض حركة البيانات المُرسلة باستخدام معرّف غير مُسجّل عند حدود المشغّل، مما يُنتج عنه إيصال تسليم بيانات سلبي (DLR) دون تسليم أي رسالة، على الرغم من أن استجابة الإرسال كانت 202. يكمن الحل في التسجيل، ويتمثل التشخيص في ربط حالات عدم التسليم/الرفض بمعرّف المُرسِل والبلد المُستهدف: إذا كانت جميع حالات الفشل تشترك في معرّف مُرسِل واحد في بلد واحد، فإن المشكلة تكمن في التسجيل. راجع دليل تسجيل معرّف المُرسِل لأسواق دول مجلس التعاون الخليجي للاطلاع على الوثائق المطلوبة.

2. رحلات عبر المسارات الرمادية

غالبًا ما تتضمن المسارات الدولية الرخيصة قفزة إعادة حقن واحدة أو أكثر عبر مُجمّعي الشركاء أو نقاط إنهاء مزارع شرائح SIM. تُضيف كل قفزة زمن استجابة، وتزيد من احتمالية فقدان الرسالة دون تنبيه، وتزيد من احتمالية تصنيف جدار حماية مشغّل الوجهة لحركة البيانات على أنها A2P غير مصرح بها وحظرها. تتمثل السمة المميزة في ارتفاع معدل عدم التسليم، وتفاوت كبير في زمن الاستجابة، وانخفاض حاد في معدل التسليم عند قيام مشغّل الوجهة بنشر أو ترقية جدار حماية SMS. يكمن الحل في نقل رمز التحقق لمرة واحدة (OTP) إلى مسار مباشر مع المشغّل؛ وتُناقش المفاضلة في المسارات المباشرة مقابل المسارات الرمادية.

3. تقييد السرعة عند مركز خدمة الرسائل القصيرة أو جدار حماية SMS

يفرض كل مشغّل وكل جدار حماية حدًا أقصى لعدد المعاملات في الثانية (TPS) لكل معرّف مُرسِل ولكل مسار. عند تجاوز هذا الحد، تُرفض الرسائل فورًا (في أفضل الأحوال، يُمكن ملاحظة الفشل) أو تُوضع في قائمة الانتظار وتُسلّم متأخرة (في أسوأ الأحوال، تصل الرسائل بعد انتهاء صلاحية رمز التحقق لمرة واحدة (OTP) ويكون المستخدم قد يئس من المحاولة). يتمثل التشخيص في فحص ارتفاعات الإرسال مقابل النسبة المئوية 95 من زمن الاستجابة: يشير منحنى زمن الاستجابة المستقر تحت حمل ثابت والذي يرتفع بشكل حاد أثناء فترات الذروة إلى وجود تقييد. يكمن الحل في تحديد معدل الإرسال على مستوى التطبيق لتخفيف حدة فترات الذروة، والتفاوض على حد أقصى أعلى لعدد المعاملات في الثانية (TPS) لحركة رسائل فئة رمز التحقق لمرة واحدة (OTP) تحديدًا.

4. فلاتر المحتوى

يمكن لمصنفات المحتوى الخاصة بالمشغّلين وجدران الحماية رصد قوالب رموز التحقق لمرة واحدة (OTP) التي تحتوي على كلمات مُحفزة، أو عناوين URL (حيث يُشدد معظم المشغّلين على عدم استخدام الروابط المختصرة غير المُوثقة في محتوى المعاملات)، أو أسماء مُرسلين غير مألوفة، أو تصميمات تُشبه أنماط التصيد الاحتيالي المعروفة. وتتمثل السمة المميزة في ارتفاع معدلات رفض قالب واحد فجأةً، بينما يتم توجيه جميع الطلبات الأخرى بنجاح. يكمن الحل في تحسين جودة القالب: استخدام نص قصير وتقليدي لرمز التحقق لمرة واحدة، وتجنب الروابط المختصرة، وعدم استخدام لغة تُوحي بالاستعجال. إذا كان القالب خاضعًا للتنظيم (في بعض الأسواق، يجب تسجيل قوالب المعاملات مُسبقًا)، فتأكد من تطابق النسخة المُسجلة مع النسخة المُرسلة - حيث يتم رصد الاختلافات الطفيفة.

5. عدم تطابق الترميز

تؤدي قوالب رموز التحقق لمرة واحدة (OTP) التي تحتوي على أحرف غير ASCII (مثل حرف علة مُشكَّل، أو علامة اقتباس خاصة مُنسوخة من وثيقة تصميم، أو رقم عربي) إلى ترقية الرسالة من GSM-7 إلى UCS-2 دون تنبيه، مما يُقلل عدد الأحرف المسموح به لكل مقطع من 160 إلى 70 حرفًا، ويتسبب في رسائل مُدمجة تُعيد بعض الهواتف القديمة تجميعها بشكل غير صحيح. يكمن التشخيص في فحص القالب المُعالَج بايتًا بايتًا، وليس القالب كما يتصوره المُطور. ويتمثل الحل في مراجعة القالب مع مراعاة الترميز، وإجراء فحص أثناء عملية البناء يُشير إلى أي أحرف غير GSM-7 في قالب المعاملات.

6. ازدحام الشبكة

قد تشهد مراكز خدمة الرسائل القصيرة (SMSC) التابعة لمشغّلي الوجهات ازدحامًا مؤقتًا خلال المناسبات الكبرى (عيد الفطر، الجمعة السوداء، العطلات الرسمية، انقطاعات الخدمة الكبيرة) - حيث تُقبل الطلبات، لكن زمن الاستجابة يرتفع من أقل من ثانية إلى عدة دقائق. لا يوجد حل جذري من جانب المرسل؛ الحل الوحيد هو اكتشاف الحالة (ارتفاع حاد في زمن الاستجابة عند النقطة 95 عبر جميع المسارات إلى مشغّل واحد) والتحويل إلى قناة بديلة قبل انتهاء فترة رمز التحقق لمرة واحدة (OTP).

7. الهاتف غير متاح

نسبة صغيرة ولكنها مستمرة من حالات فشل رمز التحقق لمرة واحدة (OTP) لا تتعلق بالبنية التحتية على الإطلاق - فقد يكون الهاتف مغلقًا، أو خارج نطاق التغطية، أو في وضع الطيران، أو أن فلتر البريد العشوائي الخاص بالمشغّل يحظر المرسلين غير المعروفين، أو تم نقله إلى مشغّل جديد ولم تتطابق جداول التوجيه. التوقيع عبارة عن رسائل DLR منتهية الصلاحية أو غير معروفة موزعة على جميع المسارات ومعرّفات المُرسِلين دون تركيز من قبل المشغّل. الحل هو سلسلة النسخ الاحتياطي الموضحة أدناه.

أنشئ لوحة معلومات التشخيص مرة واحدة، واستخدمها للأبد.

تتعثر معظم تحقيقات الثغرات الأمنية في نظام OTP لأن الفريق يقرأ سجلات البيانات الخام تحت ضغط كبير. أما الفرق التي تتعافى بسرعة، فتعتمد على لوحة تحكم ثابتة تضم خمسة عناصر: توزيع حالة DLR حسب مشغّل الوجهة (وهو الرسم البياني الأكثر فائدة)، وزمن الاستجابة من البداية إلى النهاية (p50/p95/p99) لكل مسار، ومعدل التسليم على مستوى معرّف المُرسِل، ومعدل التسليم على مستوى قالب المحتوى، وسلسلة زمنية فورية من الإرسال إلى التسليم للساعة الماضية. أنشئ هذه العناصر مرة واحدة، فهي تُحدث فرقًا كبيرًا بين تشخيص يستغرق أربعين دقيقة وآخر يستغرق أربع ساعات.

أنماط المعالجة التي تعمل بالفعل

يرتبط مباشرة بـ OTP فقط

يجب ألا تشترك حركة رسائل التسويق بالجملة وحركة الرسائل لمرة واحدة في نفس الرابط أو المسار. فالتسويق حساس للتكلفة، ويتحمل التأخير، ويمكنه استخدام مسارات الجملة؛ أما الرسائل لمرة واحدة فهي حساسة للتأخير، وحساسة لإمكانية التسليم، وتحتاج إلى رابط مباشر. إن مشاركة هذين النوعين من حركة الرسائل يعني أن تدفقًا كبيرًا من التسويق يُسبب ازدحامًا في مسار الرسائل لمرة واحدة، وأن فلتر مسار التسويق يُؤثر سلبًا على سمعة المسار بالنسبة للرسائل لمرة واحدة.

سلسلة احتياطية، أوتوماتيكية ومحددة بوقت

صمم النظام مع مراعاة احتمال تعطل أي قناة اتصال، وصمم سلسلة النسخ الاحتياطية وفقًا لذلك: استخدم قالب مصادقة WhatsApp أو RCS أولًا عندما يكون المستخدم متاحًا عبر أي منهما، ثم رسائل SMS كخيار احتياطي عام، وأخيرًا رمز التحقق الصوتي لمرة واحدة. يجب أن يكون النسخ الاحتياطي تلقائيًا (دون إعادة محاولة يدوية من المستخدم)، ومحددًا زمنيًا (مدة الانتظار قبل التحويل أقصر من فترة انتظار المستخدم - عادةً من 8 إلى 15 ثانية)، ومشروطًا (لا يتم التحويل عند نجاح DLR، ويتم عند انتهاء المهلة أو فشل DLR). ويجب إنشاء رمز التحقق لمرة واحدة مرة واحدة وإعادة استخدامه عبر جميع القنوات حتى لا يُعرض على المستخدم رمزان صالحان.

منع التكرار في كل محاولة إعادة

عندما ينقر المستخدم على "إعادة الإرسال" أو عندما يعيد التطبيق المحاولة تلقائيًا، تحقّق قبل الإرسال مجددًا. لا تقبل واجهة BroadNet API مفتاح منع التكرار (idempotency key)، لذا تقع إزالة التكرار في شيفرتك: سجّل كل عملية إرسال قبل تنفيذها، واحتفظ بمعرّف الرسالة الذي تعيده واجهة API، وتحقق من حالة تلك الرسالة قبل أي إعادة إرسال (راجع منع التكرار وإعادة المحاولة الآمنة). بدون هذا التحقق، ينتج عن إرسال أولي بطيء ولكنه ناجح، ثم إعادة إرسال تلقائية، رمزان للتحقق لمرة واحدة (OTP) في صندوق وارد المستخدم. يستخدم المستخدم الرمز الأقدم، فتفشل عملية التحقق، ويلقي الفريق باللوم على خدمة التحقق لمرة واحدة (OTP) بينما يكمن الخلل في منطق إعادة المحاولة.

خيار صوتي احتياطي للذيل الطويل

حوالي واحد بالمئة من المستخدمين في أي يوم لا يتلقون رسالة SMS لأي من الأسباب المذكورة أعلاه، وهذه النسبة تمثل النسبة الضئيلة التي تتصل بالدعم. يُحلّ هذا الأمر مشكلة معظمهم عبر مكالمة صوتية تُقرأ فيها كلمة المرور بصوت عالٍ. إنه الفرق بين مستخدم مُنزعج يُجرّب متصفحًا آخر ومستخدم تائه يستسلم.

تتولى خدمة OTP الخاصة بـ BroadNet (/products/otp) عملية الربط المباشر، وسلسلة القنوات البديلة، وتصعيد الصوت خلف استدعاء API واحد، وتعيد معرّف رسالة يمكنك التحقق منه قبل أي إعادة إرسال - وتكشف عن تفاصيل DLR لكل قناة ولكل مشغّل والتي يعتمد عليها دليل التشخيص أعلاه.

ما هو شكل الجودة، بالأرقام؟

يجب أن يحقق نظام رموز التحقق لمرة واحدة (OTP) المُجهز جيدًا، والذي يُرسل إلى سوق دول مجلس التعاون الخليجي الخاضع للتنظيم عبر مسارات مباشرة مع المشغّلين، مع وجود سلسلة احتياطية فعّالة، ما يلي: معدل إتمام شامل يزيد عن 99.0% (أي أن المستخدم قد تحقق بنجاح، وليس فقط من تسليم الرسالة)، وزمن استجابة أقل من خمس ثوانٍ (p95) على القناة الأساسية، ومعدل رجوع إلى القناة الثانوية ضئيل ولكنه قابل للقياس (1-3%). إذا كانت أرقامك أسوأ بكثير، فمن شبه المؤكد أن المشكلة تكمن في أحد الأسباب السبعة المذكورة أعلاه - لذا، عليك التشخيص الدقيق، وليس التخمين.

قراءات ذات صلة

هل كان هذا مفيداً؟

كيف نكتب المحتوى ونراجعه

بقلم

BroadNet Engineering

يُشغّل قسم الهندسة الشبكة: روابط SMPP، ومجموعات SS7، ومحركات التوجيه، والبنية التحتية الأساسية التي تجعل معالجة مليار رسالة شهريًا أمرًا ممكنًا. يكتبون هنا عندما يكون هناك ما يستحق التدوين.

تابع القراءة

ثلاثة أخرى من المجلة.

اطلع على جميع المقالات
ت
منتج

تسليم رمز التحقق لمرة واحدة بشكل صحيح - زمن الاستجابة، والرجوع إلى الوضع الاحتياطي، والتحويل.

إن وصول رمز التحقق لمرة واحدة متأخرًا، أو عدم وصوله إطلاقًا، يعني فشل تسجيل الدخول وفقدان المستخدم. لذا، من الضروري اتباع ممارسات هندسية تجعل عملية إرسال رمز التحقق لمرة واحدة سريعة وموثوقة وذات معدل تحويل عالٍ.

فريق التحرير في BroadNet
9m
ش
هندسة

شرح إيصالات تسليم رسائل SMS (DLR) ورموز الخطأ.

إيصال التسليم (DLR) هو التقييم النهائي من قِبل شركة الاتصالات لرسالتك النصية. تعرف على معنى DELIVRD وUNDELIV وEXPIRED وREJECTD، وكيفية قراءة حقلي stat وerr.

BroadNet Engineering
10m
ق
هندسة

قبل إرسال الرمز: إجراء فحص مسبق لـ OTP مع MobileValidate و BroadNet

تتمثل عملية التحقق ما قبل الإرسال في عملية بحث واحدة تتم في الفترة ما بين قيام المستخدم بكتابة رقم الهاتف ولحظة إرسالك للرمز. تعمل هذه العملية على رصد الأرقام التي لا يمكنها استقبال OTP، وتحديد الأنماط عالية المخاطر لفرض إجراءات تحقق إضافية، كما تختار القناة المناسبة. إليك الروتين المتبع مع MobileValidate و BroadNet، مع جدول قرارات لكل نتيجة.

فريق التحرير في BroadNet
9m
المجلة، عبر البريد الإلكتروني

مقال واحد شهرياً. لا شيء آخر.

اشترك وسنرسل لك المقال التالي - سواءً كان هندسيًا أو تنظيميًا أو صناعيًا - في يوم شحنه. لا حملات تسويقية عشوائية، ولا عروض منتجات، ولا مشاركة مع جهات خارجية. يمكنك إلغاء الاشتراك بنقرة واحدة.

نرسل رسالة واحدة شهريًا. يمكنك إلغاء الاشتراك في أي وقت. اطّلع على سياسة الخصوصية.

ما ستحصل عليه
  • مقال مطوّل، وليس مجرد رابط لجذب الانتباه.
    من ست إلى إحدى عشرة دقيقة من الكتابة المركزة حول موضوع واحد.
  • كتبه مشغّلون
    مهندسون، ومسؤولون عن الشؤون التنظيمية، وكتابة المنتجات داخل الشركة.
  • مدرك للمنطقة
    نظرة متعمقة من منطقة الشرق الأوسط وشمال أفريقيا حول الجهات التنظيمية والمشغّلين ومزيج القنوات.
  • مرة واحدة في الشهر
    لا حملة ترويجية بالتنقيط. مقال واحد فقط عندما يكون هناك مقال واحد للمشاركة.
توقف عن القراءة. ابدأ الشحن.

معظم ما نكتبه تعلمناه أثناء الإنتاج.

إذا لاقت هذه المعلومات استحسانك، فلنتحدث. أخبرنا عن حالة الاستخدام، والأحجام، والأسواق - وسنعود إليك بمعلومات عن التوجيه والتسعير، وعميل مرجعي يمكنك الاتصال به.

$ curl -X POST https://api.broadnet.me/sms/sendSms