إيصال التسليم (DLR) هو deliver_sm يشير esm_class فيه إلى أنه إيصال. ويحمل short_message نصًا بصيغة ثابتة — id وsub وdlvrd وتاريخ الإرسال وتاريخ الإنجاز وstat وerr وText — محدَّدة في الملحق B من مواصفة SMPP v3.4. وحقل stat (DELIVRD وEXPIRED وUNDELIV وREJECTD…) هو الحالة النهائية للرسالة.
bind_transceiverفتح الجلسة والمصادقة عليهاbind_transceiver_respتم قبول الجلسةsubmit_smإرسال رسالةsubmit_sm_respتم القبول، وإعادة معرف الرسالةdeliver_smإيصال استلام أو رسالة واردةdeliver_sm_respتم التأكيدenquire_linkإشارة Keepalive أثناء الخمول
نص الإيصال وفق الملحق B
حين يبلّغ SMSC عن مصير رسالة، يرسل deliver_sm مع ضبط بتّ الإيصال في esm_class (0x04) ويضع سلسلة نصية مهيكلة في short_message. والصيغة محدَّدة في الملحق B من مواصفة v3.4. وكل حقل مفتاح يتبعه قيمة؛ ويربط حقل id الإيصال بقيمة message_id من submit_sm_resp لديك.
id:0a1b2c3d4e sub:001 dlvrd:001 submit date:2607181432 done date:2607181433 stat:DELIVRD err:000 Text:Your code is 4حقلًا بحقل
الإيصال مقتضب لكن كل حقل مهمّ للمطابقة. تستخدم التواريخ الصيغة YYMMDDhhmm. ويحصي sub وdlvrd الأجزاء المُرسَلة والمُسلَّمة. وstat الحالة النهائية بسبعة محارف. وerr رمز خطأ خاص بالشبكة/SMSC (000 عند النجاح). وText أول 20 محرفًا من الرسالة الأصلية.
| الحقل | المعنى |
|---|---|
| id | SMSC message_id من submit_sm الأصلي |
| sub | عدد الرسائل القصيرة المُرسلة (أجزاء) |
| dlvrd | عدد الرسائل القصيرة التي تم تسليمها |
| تاريخ التقديم | وقت إرسال الرسالة (YYMMDDhhmm) |
| تاريخ الإنجاز | متى وصلت الرسالة إلى حالتها النهائية (YYMMDDhhmm) |
| stat | حالة الرسالة النهائية — كلمة مفتاحية مكونة من 7 أحرف (انظر أدناه) |
| err | رمز خطأ خاص بالشبكة/SMSC (000 = لا يوجد) |
| النص | أول 20 حرفًا من الرسالة الأصلية |
كلمات stat وأرقام message_state
كلمة stat هي الحالة النهائية القابلة للقراءة البشرية؛ ويحمل معامل message_state (0x0427) المعلومة نفسها كرقم. عامِل DELIVRD وحدها كنجاح لا لبس فيه؛ أما EXPIRED وUNDELIV وREJECTD وDELETED وUNKNOWN فهي إخفاقات نهائية. وACCEPTD وENROUTE غير نهائيتين وينبغي ألا تُغلِقا الرسالة.
| stat | message_state | نهائي؟ | المعنى |
|---|---|---|---|
| ENROUTE | 1 | No | قيد النقل |
| DELIVRD | 2 | نعم | تم التسليم إلى الهاتف المحمول |
| EXPIRED | 3 | نعم | انقضت فترة الصلاحية |
| DELETED | 4 | نعم | تم حذف الرسالة |
| UNDELIV | 5 | نعم | غير قابل للتسليم |
| ACCEPTD | 6 | No | مقبول / تمت قراءته يدويًا |
| UNKNOWN | 7 | نعم | الحالة غير معروفة |
| REJECTD | 8 | نعم | تم رفضها من قبل الشبكة |
التحليل الآمن
حلّل الإيصال من short_message في deliver_sm، لكن اربطه بمعامل receipted_message_id (0x001E) لا بنص id وحده، ووحّد صيغتي المعرّف السداس عشرية والعشرية. وميّز الإيصالات الوسيطة (بتّ الإشعار الوسيط في esm_class) عن الحالات النهائية، وطابِق رمز err على تصنيف موحَّد — مشترك غائب، هاتف مشغول، محجوب كمزعج، رقم غير صالح — لأن قيم err الخام تتباين حسب المسار. أجب دائمًا بـ deliver_sm_resp.
الأسئلة المتكررة
ماذا يعني stat:DELIVRD؟
DELIVRD هي الحالة النهائية التي تعني أن الرسالة وصلت إلى هاتف المستلِم. تقابل message_state بقيمة 2 وهي قيمة stat الوحيدة التي تمثّل النجاح بلا لبس.
أين يقع نص إيصال التسليم داخل وحدة PDU؟
في حقل short_message من deliver_sm يكون فيه بتّ إيصال التسليم (0x04) مضبوطًا في esm_class. ويتبع النص صيغة الملحق B: id وsub وdlvrd وتاريخ الإرسال وتاريخ الإنجاز وstat وerr وText.
ما هو حقل err في DLR؟
err رمز خطأ خاص بالشبكة أو SMSC يعطي سبب عدم التسليم (000 يعني لا شيء). ولأن القيم تختلف حسب المسار، طابقها على تصنيف داخلي موحَّد لتقارير جودة متسقة.
لماذا لا يطابق id في DLR قيمة message_id من submit_sm_resp؟
عادةً بسبب عدم تطابق الصيغة: تعيد بعض مراكز SMSC قيمة message_id بالنظام السداس عشري في submit_sm_resp وبالعشري في الإيصال (أو العكس). وحّد كليهما إلى تمثيل واحد قبل المقارنة، وفضّل معامل receipted_message_id.
هل كل إيصالات التسليم نهائية؟
لا. ENROUTE وACCEPTD حالتان وسيطتان، وترسل بعض الشبكات إشعارات وسيطة. أغلِق الرسالة فقط على حالة stat نهائية مثل DELIVRD أو EXPIRED أو UNDELIV أو REJECTD أو DELETED أو UNKNOWN.
مواصفات المصدر
تستند هذه الصفحة إلى المعايير المنشورة. يفتح في علامة تبويب جديدة.