ESME_RALYBND في SMPP

ما هو ESME_RALYBND؟

ESME_RALYBND (كود الخطأ: 0x0000000B) هو خطأ في SMPP يشير إلى أن ESME (كيان الرسائل القصيرة الخارجي) مربوط بالفعل. يحدث هذا عندما يحاول عميل SMPP الربط بينما هناك جلسة نشطة بنفس معرف النظام موجودة بالفعل.

الأسباب المحتملة

  • العميل مربوط بالفعل لكنه يحاول إرسال طلب bind_transmitter أو bind_receiver أو bind_transceiver دون فك الربط أولاً.
  • الجلسة السابقة لم تُغلق بشكل صحيح، مما يجعل SMSC يعتقد أن العميل لا يزال متصلاً.
  • عدة نسخ من نفس العميل بنفس معرف النظام تحاول الربط في نفس الوقت.
  • SMSC يفرض قيودًا على الربط المتزامن لنفس معرف النظام.

متى يحدث هذا الخطأ؟

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

مثال على معاملة SMPP PDU

التالي مثال على سيناريو خاطئ حيث يتم إرسال طلب bind_transmitter ثانٍ أثناء الربط بالفعل:

0000001C (الطول)
00000002 (معرف الأمر لـ bind_transmitter)
00000000 (حالة الأمر)
00000001 (رقم التسلسل)
74657374 000000 (معرف النظام: "test")
000000 (كلمة المرور)
    

المشكلة: العميل مربوط بالفعل، وSMSC يرفض محاولة الربط الثانية برد ESME_RALYBND.

الطريقة الصحيحة:

  1. أولاً، قم بفك الربط قبل محاولة ربط جديد:
  2. 00000010 (الطول)
    00000006 (معرف الأمر لـ unbind)
    00000000 (حالة الأمر)
    00000002 (رقم التسلسل)
            
  3. انتظر رد unbind_resp قبل إرسال طلب ربط جديد.

كيفية حل المشكلة؟

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

إذا استمرت المشكلة، قم بتمكين سجلات التصحيح لتتبع طلبات الربط وحالات الجلسة.

More information