كيفية إدخال البيانات في حقل SM لبروتوكول SMPP
في بروتوكول SMPP (Short Message Peer-to-Peer)، فإن حمولة الرسالة القصيرة (SM) هي النص الفعلي (أو البيانات الثنائية) للرسالة النصية القصيرة (SMS) التي يتم نقلها. لضمان التفسير الصحيح لهذا المحتوى، يلعب حقل data_coding في وحدة بيانات البروتوكول (PDU) دورًا حاسمًا من خلال الإشارة إلى تنسيق ترميز الرسالة.
ترميزات SMPP الشائعة
حقل data_coding
هو بايت واحد ويخبر مركز خدمة الرسائل القصيرة (SMSC) بكيفية تفسير حمولة الرسالة.
سداسي عشر | عشري | الترميز | الوصف |
---|---|---|---|
0x00 | 0 | GSM 7-bit الافتراضي | مجموعة أحرف SMS القياسية |
0x01 | 1 | ASCII | ASCII 8-bit (مجموعة فرعية من Latin-1) |
0x03 | 3 | Latin-1 (ISO 8859-1) | مجموعة أحرف أوروبا الغربية |
0x08 | 8 | UCS2 | يونيكود (16-bit، big-endian) |
0x04 | 4 | ثنائي | بيانات ثنائية خام 8-bit |
أمثلة على الرسائل المرمزة
1. GSM 7-bit (data_coding = 0x00)
ترميز SMS القياسي. فعال (حتى 160 حرفًا في رسالة واحدة).
النص: "Hello" GSM 7-bit Packed: C8 32 9B FD 06
2. UCS2 (data_coding = 0x08)
يستخدم للنصوص غير اللاتينية (مثل العربية، الصينية، الرموز التعبيرية). يدعم 70 حرفًا لكل رسالة.
النص: "مرحبا" UCS2 Hex: 0645 0631 062D 0628 0627 بايت (سداسي عشر): 06 45 06 31 06 2D 06 28 06 27
3. ASCII (data_coding = 0x01)
أحرف لاتينية أساسية فقط، أقل كفاءة في المساحة من GSM 7-bit.
النص: "Hello" ASCII Hex: 48 65 6C 6C 6F
مثال على PDU لـ SMPP بترميز UCS2
إليك وحدة بيانات بروتوكول (PDU) submit_sm
لـ SMPP تحمل رسالة يونيكود:
0000004B // طول الأمر (75 بايت) 00000004 // معرف الأمر (submit_sm) 00000000 // حالة الأمر 00000001 // رقم التسلسل 74657374 // service_type: "test" 01 // source_addr_ton: دولي 01 // source_addr_npi: ISDN 31323334 // source_addr: "1234" (ASCII) 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 0A // sm_length: 10 بايت 06450631 // الرسالة بـ UCS2 (مثال: "مر") 062D0628
الترميز والتقسيم
يتم تقسيم الرسائل الطويلة إلى أجزاء باستخدام رأس بيانات المستخدم (UDH). وهذا يقلل من الحجم الأقصى للحمل:
- GSM 7-bit: 160 → 153 حرفًا لكل جزء
- UCS2: 70 → 67 حرفًا لكل جزء
مثال على UDH لجزء من الرسالة:
05 00 03 CC 02 01 // 05: طول الرأس // 00 03: معرف عنصر التقسيم // CC: مرجع الرسالة // 02: إجمالي الأجزاء // 01: الجزء الحالي
ملخص
يوفر بروتوكول SMPP خيارات ترميز مرنة من خلال حقل data_coding
. يضمن الترميز الصحيح التوافق عبر الشبكات العالمية، خاصة عند التعامل مع نصوص متعددة اللغات أو بيانات ثنائية. يجب على المطورين مطابقة أنواع الترميز مع المحتوى والمستلمين المتوقعين لتجنب تلف الرسائل.
مراجع
- مواصفات SMPP 3.4
- مجموعة أحرف GSM 03.38
- معيار يونيكود
More information
- كيفية تكوين حقل نوع خدمة SMPP
- كيفية تكوين حقول أرقام هواتف SMPP
- كيفية تكوين حقل فئة ESM في SMPP
- كيفية تكوين حقل PID في SMPP
- كيفية تكوين حقل الأولوية في SMPP
- كيفية تكوين حقل الوقت المجدول في SMPP
- كيفية تكوين حقل فترة الصلاحية في SMPP
- كيفية تكوين حقل التسليم المسجل في SMPP
- كيفية تكوين حقل استبدال إذا كان موجودًا في SMPP
- كيفية تكوين حقل sm_default_msg_id
- كيفية تكوين حقل DCS في SMPP
- كيفية حساب حقل طول SM في SMPP
- كيفية إدخال البيانات في حقل SMPP SM