الاتصال عبر SMPP وHTTP

انقل مسار الاختبار إلى الإنتاج دون كسر الربط أو النوافذ أو الإيصالات: الربط، ومعدل النقل، والإبقاء على الاتصال حيا، والترميز، واستدعاءات الرد، ومعالجة الأعطال.

اتصال المراسلة في الإنتاج عقد تشغيل، وليس مجرد نقطة نهاية. يضيف SMPP حالة الربط، ونافذة معدل النقل، وحركة الإبقاء على الاتصال حيا، والإيصالات على الجلسة. ويضيف HTTP المصادقة لكل طلب واستدعاءات الرد. يحول هذا الدليل الاثنين إلى تسلسل من الاختبار إلى الإنتاج.

حالة الربط أول ما يجب أن تتولاه

الربط جلسة ذات اتجاه معلن. المرسل (transmitter) يقدم الرسائل، والمستقبل (receiver) يتلقى الرسائل الواردة والإيصالات، والمرسل والمستقبل (transceiver) يقوم بالأمرين معا. يصدر مقدم الخدمة بيانات الاعتماد لنوع الربط الذي تحتاجه، ويجب أن يعامل العميل الربط كحالة: قيد الفتح، أو مربوط، أو مقيد المعدل، أو قيد إعادة الاتصال، أو مغلق. والعميل الذي يفترض أن الربط قائم دائما سيفقد الرسائل عند أول انقطاع.

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

الربط وأول عملية تقديم

  1. التطبيق (ESME)
  2. bind_transceiver فتح الجلسة
  3. SMSC
  4. submit_sm_resp مقبولة للتسليم
  5. إيصال التسليم
تفتح الجلسة مرة واحدة. ويتلقى كل تقديم استجابة تحمل معرف الرسالة؛ ويصل الإيصال لاحقا على الجلسة نفسها. المصدر: smpp.org: جلسات SMPP وعمليات PDU
وصف نصي

يرسل العميل طلب ربط ويتلقى استجابة الربط. ثم يقدم رسالة عبر submit_sm ويتلقى submit_sm_resp مع معرف الرسالة. لاحقا يرسل مركز الرسائل وحدة PDU من نوع deliver_sm تحمل الإيصال، ويرد العميل بـdeliver_sm_resp. ويغلق unbind الجلسة.

النافذة ونبض الاتصال والترميز

النافذة هي عدد الطلبات المعلقة التي يقبلها مركز الرسائل على ربط واحد. أبق عدد الطلبات قيد التنفيذ دونها، ودع النافذة تفرغ قبل أي دفعة كبيرة. التقديم المقيد المعدل إشارة إلى الإبطاء؛ وإعادة المحاولة بالمعدل نفسه تملأ قائمة الانتظار وتحول رسالة بطيئة واحدة إلى تراكم. حدد عدد الربطات انطلاقا من معدل الذروة، لا من المتوسط الشهري.

تعلم تبادلات الإبقاء على الاتصال حيا كلا الطرفين بأن الجلسة ما زالت قائمة. أرسل enquire_link وفق جدول زمني، وأغلق الجلسة التي تتوقف عن الرد. أما الترميز، فأرسل بـGSM-7 حيث يسمح المحتوى، وبـUCS-2 في غير ذلك. وحرف واحد خارج مجموعة GSM-7 يحول الرسالة كلها إلى UCS-2 وقد يغير عدد المقاطع. اختبر القالب الفعلي، بما في ذلك قيم المتغيرات.

إيصالات التسليم

يصل الإيصال بشكل غير متزامن كوحدة PDU من نوع deliver_sm. ويحمل معرف الرسالة الأصلي، وحالة مثل delivered أو expired أو undelivered أو unknown، وغالبا رمز الشبكة. طابقه بمعرف الرسالة وخزن الحالة مع سجل الرسالة. لا تطابق حسب ترتيب الوصول، ولا تعامل الإيصال المفقود كرسالة فاشلة.

تختلف صيغ الإيصالات. تستخدم مراكز الرسائل الأحدث حقل message_state بصيغة tag-length-value؛ أما الأقدم فتضع نصا بصيغة مفتاح وقيمة في حقل short message. حلل الصيغتين كلتيهما. وحد الحالات التي يحتاجها تطبيقك واحتفظ بالرمز الخام، حتى يمكن تتبع طلب الدعم وصولا إلى ما قالته الشبكة.

أنماط الأعطال والاستجابة الأولى

يذكر كل صف عرضا، والسبب المرجح، والفحص الأول.
العرضالسبب المرجحالفحص الأول
رفض الربطبيانات اعتماد خاطئة، أو نوع ربط أو إصدار واجهة خاطئاقرأ رمز استجابة الربط وإصدار الواجهة
تزايد انتهاء المهلاتتجاوز النافذة أو مسار بطيءتحقق من عدد الطلبات قيد التنفيذ ورموز الاستجابة قبل إعادة المحاولة
الربط مفتوح، ولا ردودالجلسة منقطعة أو توقف العميل عن إرسال رسائل الإبقاء على الاتصالأرسل enquire_link، ثم أعد الاتصال مع تراجع تدريجي
إيصال مفقودلم يصل الإيصال إلى المعالج قطتحقق من سجل الجلسة ومعرف الرسالة قبل إعادة الإرسال
أحرف خاطئةمحتوى GSM-7 أرسل بترميز UCS-2، أو العكستحقق من ترميز البيانات وعدد المقاطع
انتهاء مهلة استدعاء الردنقطة النهاية بطيئة أو يتعذر الوصول إليهارد بسرعة، وعالج بشكل غير متزامن، وتحقق من التوقيع

ترتيب الاستجابة مهم: راقب الحالة أولا، ثم غير متغيرا واحدا.

من مسار الاختبار إلى الإنتاج

  1. اربط بمسار الاختبار

    استخدم بيانات اعتماد الاختبار ونوع الربط الذي ستشغله في الإنتاج. تحقق من استجابة الربط وإصدار الواجهة.

  2. أرسل القوالب الفعلية

    اختبر المحتوى الذي ستطلقه، بما في ذلك الروابط والمتغيرات وأطول رسالة. سجل الترميز وعدد المقاطع.

  3. اقرأ الإيصالات

    طابق كل إيصال بمعرف الرسالة. تحقق من الحالات ورموز الأخطاء التي سيتلقاها تطبيقك.

  4. اختبر مسار الفشل

    أرسل إلى رقم غير صالح، وإلى جهاز ذاكرته ممتلئة، وإلى خدمة محظورة. تحقق من حالات الإيصال ومن طريقة تعامل التطبيق معها.

  5. حدد حجم النافذة

    شغل اختبارا بمعدل الذروة وتحقق من أن عدد الطلبات قيد التنفيذ يبقى دون النافذة. أضف ربطا إذا لم يبق دونها.

  6. فعل الإشراف

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

  7. حول حركة الإنتاج

    انقل حصة صغيرة أولا، وقارن الإيصالات بنتائج الاختبار، ثم زد الحصة. أبق مسار الاختبار متاحا كخيار احتياطي.

مصادقة HTTP واستدعاءات الرد

يصادق تكامل HTTP كل طلب بالمفتاح الصادر عند الإعداد. بدل المفتاح قبل انتهاء صلاحيته، وأبق المفتاح القديم صالحا خلال فترة التداخل. يعيد الإرسال استجابة قبول تحمل معرف الرسالة؛ ويصل الإيصال وأي رسالة واردة إلى عنوان URL الخاص باستدعاء الرد لديك.

يجب أن تتحقق نقطة نهاية استدعاء الرد من التوقيع، وأن ترد بسرعة، وأن تعالج الحدث بعد الاستجابة. نقطة النهاية البطيئة تسبب إعادة المحاولات، وإعادة المحاولات تسبب التكرار ما لم يكن المعالج متساوي الأثر (idempotent). أبق نقطة النهاية قابلة للوصول خلال تغييرات الشهادات وDNS، واضبط تنبيها عندما يرتفع معدل فشل استدعاءات الرد. يتناول شرح SMPP الجلسة؛ وتتناول مقارنة وسائل النقل الاختيار بينهما.

مفكك رموز SMPP و DLR

تعمل أداة فك الترميز في المتصفح؛ ويبقى الإيصال الملصق هناك.

الصق قيمة command_status أو حقلي stat و err من تقرير التسليم أو PDU بالنظام الست عشري لمعرفة معناها وما يجب التحقق منه بعد ذلك.

sample
id:0123456789 sub:001 dlvrd:001 submit date:2610181200 done date:2610181201 stat:DELIVRD err:000 text:Your code is 123456
افتح الأداة

الأسئلة الشائعة

أي إصدار من SMPP يجب أن نستخدم؟

SMPP 3.4 هو الإصدار الأوسع انتشارا. استخدم 5.0 فقط حيث يدعمه كل من مركز الرسائل وحزمتك البرمجية.

كم عدد الربطات التي نحتاجها؟

ما يكفي لإبقاء معدل الذروة دون النافذة مع هامش يحتمل فشل أحد الربطات. اطلب من مقدم الخدمة معدل النقل المخصص لكل ربط.

هل يجب أن يرد استدعاء الرد قبل المعالجة؟

نعم. تحقق من التوقيع، ورد باستجابة نجاح، ثم عالج. الاستجابة البطيئة تسبب إعادة المحاولات والتكرار.

ماذا لو لم يصل الإيصال أبدا؟

تحقق من سجل الجلسة ومعرف الرسالة أولا. فالإيصال المفقود ليس دليلا على فشل الرسالة.

كيف نختبر حالة فشل؟

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

    كيف تعمل معرّفات المرسل عبر الأسواق: المسارات الأبجدية الرقمية والرقمية ومسارات الرموز القصيرة، وتوقعات التسجيل، وأمثلة من الدول.

  • A2P SMS

    رسائل A2P SMS (من التطبيق إلى الشخص) هي حركة مرور يرسلها تطبيق إلى هاتف محمول، مثل رمز التحقق أو تنبيه معاملة، عبر مرسل مسجل.

  • DLR

    يُبلغ إيصال التسليم عن حالة الشبكة المحمولة لرسالة SMS مرسلة، مثل: مسلّمة، أو منتهية الصلاحية، أو مرفوضة، أو غير معروفة.

مجاور لما نقدمه

نشرح هذا هنا لأنه يؤثر في كيفية استخدامك لخدمتنا.