أداة فك ترميز PDU الخاصة بـ SMPP.
الصق الترميز السداسي عشري لـ PDU من SMPP v3.4 لفك ترميز ترويسته المكوّنة من 16 بايت — command_length وcommand_id (مع اسمه) وcommand_status وsequence_number — واطّلع على تخطيط حقول الجسم الإلزامية لـsubmit_sm وdeliver_sm. لا تغادر البيانات جهازك.
ESME_ROK — No error
PDU يقتصر على الترويسة فقط — بلا جسم (نموذجي في enquire_link وunbind ومعظم إقرارات _resp).
الإجابة المختصرة
ما هو PDU الخاص بـ SMPP؟
PDU (وحدة بيانات البروتوكول) هي رسالة SMPP واحدة على السلك. تبدأ كل PDU — سواء bind أو submit_sm أو إيصال تسليم أو enquire_link — بالترويسة نفسها المكوّنة من 16 بايت وأربعة أعداد صحيحة من 32 بت بترتيب big-endian: command_length (إجمالي الطول بالبايت شاملًا الترويسة)، وcommand_id (نوع العملية)، وcommand_status (النتيجة، وتكون 0 / ESME_ROK في استجابة ناجحة)، وsequence_number (تُستخدم لمطابقة الاستجابة بطلبها). تتبع أي حقول جسم الترويسة.
تخطيط الترويسة المكوّنة من 16 بايت
| البايتات | الحقل | المعنى |
|---|---|---|
| 0–3 | command_length | الطول الإجمالي لـPDU بالأوكتيت، شاملًا الترويسة. |
| 4–7 | command_id | يحدّد العملية (مثلًا 0x00000004 = submit_sm). |
| 8–11 | command_status | رمز النتيجة؛ 0 = ESME_ROK. ذو معنى فقط في الاستجابات. |
| 12–15 | sequence_number | يربط الطلب باستجابته. |
حقول جسم submit_sm / deliver_sm
بعد الترويسة، يحمل submit_sm أو deliver_sm حقوله الإلزامية بترتيب ثابت، تليها اختياريًا معاملات TLV. تسرد هذه الأداة الترتيب؛ ولا تحلّل بالكامل سلاسل C-Octet المتغيرة الطول، لأن حدودها تعتمد على المُنهيات الفارغة وحقل sm_length.
| الحقل | النوع | المعنى |
|---|---|---|
| service_type | C-Octet String | يشير إلى خدمة تطبيق الرسائل القصيرة (فارغ = افتراضي). |
| source_addr_ton | Integer (1) | نوع رقم المرسل. |
| source_addr_npi | Integer (1) | مؤشر خطة الترقيم الخاص بالمرسل. |
| source_addr | C-Octet String | عنوان مُصدر الرسالة. |
| dest_addr_ton | Integer (1) | نوع رقم المستلم. |
| dest_addr_npi | Integer (1) | مؤشر خطة الترقيم الخاص بالمستلم. |
| destination_addr | C-Octet String | رقم MSISDN أو الرمز القصير للوجهة. |
| esm_class | Integer (1) | وضع الرسالة ونوعها (مثلًا 0x04 = إيصال تسليم). |
| protocol_id | Integer (1) | معرّف البروتوكول (خاص بالشبكة). |
| priority_flag | Integer (1) | مستوى أولوية الرسالة. |
| schedule_delivery_time | C-Octet String | وقت التسليم المُجدوَل (فارغ = فوري). |
| validity_period | C-Octet String | فترة صلاحية الرسالة (فارغ = افتراضي). |
| registered_delivery | Integer (1) | ما إذا كان قد طُلب إيصال تسليم (DLR). |
| replace_if_present_flag | Integer (1) | استبدال رسالة موجودة إن وُجدت. |
| data_coding | Integer (1) | مخطط الترميز (0 = GSM-7، 8 = UCS-2). |
| sm_default_msg_id | Integer (1) | معرّف رسالة محدّد مسبقًا. |
| sm_length | Integer (1) | طول حقل short_message بالأوكتيت. |
| short_message | Octet String | حمولة الرسالة (حتى 254 أوكتيت). |
الأسئلة الشائعة
ما هي الحقول الأربعة في ترويسة SMPP؟
تبدأ كل PDU من SMPP بترويسة مكوّنة من 16 بايت وأربعة أعداد صحيحة من 32 بت بترتيب big-endian: command_length (إجمالي طول PDU بالأوكتيت شاملًا الترويسة)، وcommand_id (العملية، مثل 0x00000004 لـsubmit_sm)، وcommand_status (رمز النتيجة، 0 = ESME_ROK)، وsequence_number (الذي يربط استجابة بطلبها الأصلي).
لماذا تكون command_status عادةً 0 في طلباتي؟
لا يكون command_status ذا معنى إلا في PDU من نوع الاستجابة وgeneric_nack. في PDU الطلب (submit_sm وbind وenquire_link) تكون محجوزة ويجب ضبطها على 0. أي قيمة غير صفرية في _resp تشير إلى خطأ — فمثلًا 0x00000058 هي ESME_RTHROTTLED.
هل الأعداد الصحيحة في SMPP بترتيب big-endian؟
نعم. يرمّز SMPP الأعداد الصحيحة متعددة الأوكتيت بترتيب بايت الشبكة (big-endian، الأكثر أهمية أولًا). تقرأ هذه الأداة كل حقل ترويسة من 4 بايت كعدد صحيح غير موقّع من 32 بت بترتيب big-endian.
هل تفكّ هذه الأداة ترميز نص الرسالة؟
تفكّ ترميز الترويسة الثابتة المكوّنة من 16 بايت وتسرد ترتيب حقول الجسم لـsubmit_sm وdeliver_sm، لكنها لا تحلّل الجسم متغيّر الطول إلى قيم فردية. سلاسل C-Octet منتهية بصفر، ويُحمل طول short_message في sm_length، لذا يعتمد التحليل الكامل للجسم على تلك الحدود — وتلتزم هذه الأداة بتخطيط الترويسة القياسي فقط.
أين يمكنني البحث عن command_status لا أتعرّف عليها؟
استخدم مرجع رموز أخطاء SMPP، الذي يسرد كل قيمة command_status في SMPP v3.4 بالاسم السداسي عشري والرمزي مع معنى واضح والسبب والحل المحتملين.
هل تحتاج إلى ارتباط SMPP حقيقي؟
تقدّم BroadNet ارتباطات SMPP 3.4 مباشرة إلى جانب واجهة REST وwebhooks لإيصالات التسليم عبر أكثر من 200 دولة. تحدّث إلى فريقنا حول الإنتاجية والتوجيه.