كيفية حساب حقل SM Length في SMPP
في بروتوكول SMPP، يحدد حقل sm_length
الطول بالبايت لمحتوى الرسالة القصيرة الموجود في حقل short_message
لـ PDUs مثل submit_sm
و deliver_sm
و data_sm
.
تفاصيل الحقل
- اسم الحقل: sm_length
- الحجم: 1 بايت (عدد صحيح غير موقّع)
- النطاق: 0–254 (الحد الأقصى المسموح به في SMPP 3.4)
- الموقع: مباشرة قبل حقل
short_message
- الغرض: يشير إلى عدد البايتات في حمولة
short_message
السلوك الرئيسي
تعتمد قيمة sm_length
على الترميز المستخدم:
الترميز | عدد الأحرف لكل رسالة SMS | حجم البايت | ملاحظات |
---|---|---|---|
GSM 7-bit | حتى 160 | حتى 140 | بتات مضغوطة؛ يعتمد حجم البايت الفعلي على المحتوى |
UCS2 | حتى 70 | 2 × عدد الأحرف | كل حرف يمثل 2 بايت |
8-bit binary | غير متاح | حتى 140 | طول البايت الخام |
مثال: رسالة ASCII
رسالة بسيطة باستخدام ترميز 7-bit الافتراضي:
النص: "Hello" الترميز: GSM 7-bit البايتات المضغوطة (Hex): C8 32 9B FD 06 طول البايت: 5 sm_length: 5
مثال: رسالة مشفرة بـ UCS2
رسالة يونيكود باستخدام ترميز UCS2 (data_coding = 0x08):
النص: "Hi" UCS2 Hex: 0048 0069 مصفوفة البايت: 00 48 00 69 طول البايت: 4 sm_length: 4
مثال PDU لـ SMPP (submit_sm)
0000003B // طول الأمر (59 بايت) 00000004 // معرف الأمر: submit_sm 00000000 // حالة الأمر 00000001 // رقم التسلسل 00 // service_type 01 // source_addr_ton 01 // source_addr_npi 31323334 // source_addr ("1234") 00 01 // dest_addr_ton 01 // dest_addr_npi 35363738 // destination_addr ("5678") 00 00 // esm_class 00 // protocol_id 00 // priority_flag 00 // schedule_delivery_time 00 // validity_period 00 // registered_delivery 00 // replace_if_present_flag 08 // data_coding: UCS2 00 // sm_default_msg_id 04 // sm_length: 4 00480069 // short_message: "Hi" في UCS2
ملاحظات مهمة
- يشير
sm_length
إلى طول البايت، وليس عدد الأحرف. - إذا تم تقسيم محتوى الرسالة عبر عدة رسائل (ربط)، فإن كل جزء له
sm_length
الخاص به. - لا تخلط بين
sm_length
والطول الكلي للرسالة (طول PDU).
تقسيم الرسائل والربط
عندما تتجاوز الرسالة الحد الأقصى لحجم الحمولة، يتم تقسيمها إلى أجزاء باستخدام UDH (رأس بيانات المستخدم). في مثل هذه الحالات، يتضمن sm_length
UDH أيضًا:
مثال: UDH (6 بايت) + 67 بايت UCS2 = 73 sm_length = 73
الختام
يعتبر حقل sm_length
حاسمًا في مراسلة SMPP لأنه يحدد عدد البايتات التي يجب على SMSC قراءتها لجسم الرسالة الفعلي. فهم كيفية تأثير الترميز على هذا الحقل يضمن تسليم الرسائل بدقة ونجاح.
المراجع
- مواصفات SMPP 3.4
- مجموعة أحرف GSM 03.38
- ترميز Unicode UCS2
More information
- كيفية تكوين حقل نوع خدمة SMPP
- كيفية تكوين حقول أرقام هواتف SMPP
- كيفية تكوين حقل فئة ESM في SMPP
- كيفية تكوين حقل PID في SMPP
- كيفية تكوين حقل الأولوية في SMPP
- كيفية تكوين حقل الوقت المجدول في SMPP
- كيفية تكوين حقل فترة الصلاحية في SMPP
- كيفية تكوين حقل التسليم المسجل في SMPP
- كيفية تكوين حقل استبدال إذا كان موجودًا في SMPP
- كيفية تكوين حقل sm_default_msg_id
- كيفية تكوين حقل DCS في SMPP
- كيفية حساب حقل طول SM في SMPP
- كيفية إدخال البيانات في حقل SMPP SM