كيفية تكوين حقل "استبدال إذا كان موجودًا" في SMPP

ما هو حقل "استبدال إذا كان موجودًا"؟

حقل استبدال إذا كان موجودًا في SMPP هو علامة بحجم 1 بايت في وحدات PDU مثل submit_sm التي توجه SMSC لاستبدال رسالة موجودة مخزنة على جهة المستلم أو قائمة انتظار SMSC. تشمل التطبيقات الرئيسية:

  • تحديث المحتوى الحساس للوقت (مثل كلمات المرور لمرة واحدة، تنبيهات الحالة)
  • منع تكرار الرسائل
  • إدارة قيود تخزين الجهاز

قيم الحقل وتفسيرها

يستخدم الحقل بنية بسيطة تشبه القيم المنطقية:

القيمة (Hex) الوصف
0x00 عدم استبدال الرسائل الموجودة (افتراضي)
0x01 استبدال الرسائل الموجودة إذا كانت موجودة
ملاحظة: يعتمد منطق استبدال الرسائل على تنفيذ SMSC. تشمل معايير المطابقة الشائعة:
  • عناوين المصدر/الوجهة
  • معرف الرسالة (إذا تم توفيره)
  • معرف البروتوكول (PID=0x41 غالبًا ما يؤدي إلى الاستبدال)

حالات الاستخدام

1. تحديث رسالة كلمة المرور لمرة واحدة

replace_if_present: 0x01  // استبدال رسالة كلمة المرور السابقة
PID: 0x41                 // معرف البروتوكول للاستبدال
payload: "كلمة المرور الجديدة: 5678"

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

replace_if_present: 0x01  // تحديث المحتوى الترويجي
PID: 0x00                 // البروتوكول الافتراضي
payload: "تخفيضات فلاش: أسعار جديدة!"

3. إدارة قائمة الانتظار

replace_if_present: 0x01  // الكتابة فوق الرسالة في قائمة الانتظار
scheduled_delivery_time: (طابع زمني مستقبلي)

أمثلة على وحدات PDU في SMPP

المثال 1: تعطيل الاستبدال (0x00)

0000001D  // طول الأمر (29 بايت)
00000004  // معرف الأمر (SubmitSM)
00000001  // رقم التسلسل
...
00        // استبدال إذا كان موجودًا (0x00: معطل)
...
07        // طول SM (7 سباعية)
C8329BFD06DDDF72  // الحمولة ("مرحبًا!")

المثال 2: تمكين الاستبدال (0x01)

0000001D  // طول الأمر (29 بايت)
00000004  // معرف الأمر (SubmitSM)
00000002  // رقم التسلسل
...
01        // استبدال إذا كان موجودًا (0x01: مفعل)
...
07        // طول SM (7 سباعية)
E8329BFD0E...  // الحمولة ("محدث: 3 مساءً")

المثال 3: مدمج مع PID=0x41

0000001D  // طول الأمر (29 بايت)
00000004  // معرف الأمر (SubmitSM)
00000003  // رقم التسلسل
...
41        // معرف البروتوكول (PID=0x41: استبدال)
01        // استبدال إذا كان موجودًا (0x01)
...
07        // طول SM (7 سباعية)
C8329BFD06...  // الحمولة ("كلمة المرور: 9876")

التفاعلات مع الحقول الأخرى

  • معرف البروتوكول (PID): PID=0x41 يطلق الاستبدال صراحة في العديد من SMSCs
  • message_id: بعض SMSCs تستخدم هذا لتحديد الرسائل للاستبدال
  • registered_delivery: تشير الإيصالات إلى نجاح الاستبدال

المزالق الشائعة

  • تمكين الاستبدال دون دعم SMSC
  • عدم تعيين message_id للاستبدال المستهدف
  • افتراض أن جميع SMSCs تستخدم نفس منطق الاستبدال
  • عدم تطابق قيم PID و replace_if_present
ملاحظة حول سلوك SMSC:
تختلف سياسات الاستبدال على نطاق واسع. بعض SMSCs:
  • تستبدل فقط الرسائل المتطابقة في المصدر/الوجهة
  • تتجاهل replace_if_present إذا كان PID≠0x41
  • تقتصر الاستبدال على الرسائل في قائمة انتظار SMSC (غير المسلمة)

الختام

يوفر حقل "استبدال إذا كان موجودًا" تحكمًا حاسمًا في إدارة دورة حياة الرسالة ولكنه يتطلب تنسيقًا دقيقًا مع إمكانيات SMSC. تحقق دائمًا من سلوك الاستبدال مع مزود الخدمة واستخدم PID=0x41 لطلبات الاستبدال الصريحة. للتنفيذات التفصيلية، راجع القسم 5.2.20 من SMPP v3.4 ووثائق GSM 03.40 حول معالجة الرسائل.

More information