كيفية تكوين حقل ESM Class في SMPP

إعدادات ESM class في Ozeki SMS Gateway

يسمح لك Ozeki SMS Gateway بتكوين حقل ESM class يدويًا (الشكل 1)

الشكل 1 - إعداد حقل ESM class

ما هو حقل ESM Class؟

حقل Extended Service Message (ESM) Class في SMPP هو حقل بطول 1 بايت في وحدات PDU الخاصة بـ SMPP يتحكم في ميزات معالجة الرسائل المتقدمة. يتم استخدامه في عمليات submit_sm و deliver_sm و data_sm لتحديد:

  • أنواع الرسائل (مثل SMS، إيصال التسليم)
  • سلوك إيصال التسليم
  • وجود UDH (رأس بيانات المستخدم)
  • أولويات الرسائل وأعلام التوجيه

هيكل ESM Class و Bitmask

ESM class هو bitmask حيث يقوم كل بت أو مجموعة من البتات بتنشيط ميزات محددة:

البتات الوصف
7 وضع المراسلة: 0 = افتراضي، 1 = Datagram
6 نوع الرسالة: 0 = عادي، 1 = إيصال تسليم
5 مؤشر UDHI: 1 = UDH موجود في الحمولة
4 مسار الرد: 1 = طلب مسار الرد
3-2 أولوية الرسالة (00 = عادي، 01 = تفاعلي، 10 = عاجل، 11 = طارئ)
1-0 محجوز

قيم ESM Class الشائعة

ESM (Hex) ثنائي الوصف
0x00 00000000 افتراضي (لا يوجد معالجة خاصة)
0x04 00000100 تم تعيين علامة UDHI (UDH موجود)
0x08 00001000 تم طلب مسار الرد
0x20 00100000 إيصال تسليم (بت 6 = 1)
0x30 00110000 أولوية عاجلة + إيصال تسليم
0x60 01100000 وضع Datagram + إيصال تسليم
ملاحظة: تتجاهل العديد من SMSCs البتات المحجوزة (1-0). مستويات الأولوية (البتات 3-2) تعتمد على الشبكة.

حالات الاستخدام الرئيسية

1. رسائل SMS المجمعة (علامة UDHI)

عند إرسال رسائل متعددة الأجزاء، قم بتعيين البت 5 (UDHI=1) وتضمين رأس بيانات المستخدم (UDH) في الحمولة. مثال لرسالة من 3 أجزاء:

ESM Class: 0x40 (ثنائي 01000000: تم تمكين UDHI)
الحمولة: 
05 00 03 02 01  // UDH (5 بايت: IEI=00، IEDL=03، الجزء 1 من 2)
C8329BFD06       // حمولة GSM-7 ("Hello")

2. طلبات إيصال التسليم

قم بتعيين البت 6 (0x20) لطلب إيصال تسليم. غالبًا ما يتم دمجه مع حقل registered_delivery:

ESM Class: 0x20 (ثنائي 00100000)
registered_delivery: 0x01 (طلب إيصال)

3. المراسلة ذات الأولوية

استخدم البتات 3-2 لإعطاء أولوية للرسائل. مثال للأولوية العاجلة:

ESM Class: 0x10 (ثنائي 00010000: أولوية عاجلة)

أمثلة على وحدات PDU الخاصة بـ SMPP

المثال 1: رسالة SMS أساسية (ESM=0x00)

0000001D  // طول الأمر (29 بايت)
00000004  // معرف الأمر (SubmitSM)
00000001  // رقم التسلسل
00        // مصدر TON
00        // مصدر NPI
736F7572636500  // عنوان المصدر ("source")
00        // وجهة TON
00        // وجهة NPI
36353433323100  // عنوان الوجهة ("654321")
00        // ESM Class (0x00: افتراضي)
00        // معرف البروتوكول (PID)
00        // الأولوية
00        // وقت تسليم الجدولة
00        // فترة الصلاحية
00        // التسليم المسجل
00        // استبدال إذا موجود
00        // ترميز البيانات (DCS=0x00)
00        // معرف الرسالة الافتراضي SM
07        // طول SM (7 septets)
C8329BFD06DDDF72  // الحمولة ("Hello!")

المثال 2: رسالة SMS مجمعة (ESM=0x40)

00000025  // طول الأمر (37 بايت)
00000004  // معرف الأمر (SubmitSM)
00000002  // رقم التسلسل
00        // مصدر TON
00        // مصدر NPI
736F7572636500  // عنوان المصدر ("source")
00        // وجهة TON
00        // وجهة NPI
36353433323100  // عنوان الوجهة ("654321")
40        // ESM Class (0x40: تم تمكين UDHI)
00        // معرف البروتوكول (PID)
00        // الأولوية
00        // وقت تسليم الجدولة
00        // فترة الصلاحية
00        // التسليم المسجل
00        // استبدال إذا موجود
00        // ترميز البيانات (DCS=0x00)
00        // معرف الرسالة الافتراضي SM
0C        // طول SM (12 بايت)
0500030201C8329BFD06DDDF72  // UDH + "Hello" (الجزء 1/2)

المثال 3: إيصال تسليم (ESM=0x20)

0000001D  // طول الأمر (29 بايت)
00000004  // معرف الأمر (SubmitSM)
00000003  // رقم التسلسل
00        // مصدر TON
00        // مصدر NPI
736F7572636500  // عنوان المصدر ("source")
00        // وجهة TON
00        // وجهة NPI
36353433323100  // عنوان الوجهة ("654321")
20        // ESM Class (0x20: إيصال تسليم)
00        // معرف البروتوكول (PID)
00        // الأولوية
00        // وقت تسليم الجدولة
00        // فترة الصلاحية
01        // التسليم المسجل (تم طلب الإيصال)
00        // استبدال إذا موجود
00        // ترميز البيانات (DCS=0x00)
00        // معرف الرسالة الافتراضي SM
07        // طول SM (7 septets)
C8329BFD06DDDF72  // الحمولة ("Hello!")

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

  • UDHI (ESM) + DCS: إذا تم تعيين UDHI، تأكد من أن DCS يدعم UDH (مثل GSM-7 أو 8-bit).
  • ESM Class + registered_delivery: استخدم كليهما لطلب إيصالات التسليم صراحةً.
  • بتات الأولوية + علم الأولوية: بعض SMSCs تعطي أولوية للرسائل بناءً على بتات ESM بدلاً من حقل الأولوية المنفصل.

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

  • تعيين UDHI دون تضمين رأس بيانات مستخدم صالح.
  • استخدام أعلام إيصال التسليم (ESM=0x20) دون تعيين registered_delivery.
  • عدم تطابق بتات أولوية ESM مع حقل priority_flag المنفصل.

الخاتمة

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

More information