BroadNet
SMPPالعمليات

SMPP deliver_sm: رسائل MO والإيصالات

آخر تحديث 2 دقائق للقراءةقائم على المعايير
إجابة مباشرة

تُرسَل deliver_sm (رمز العملية 0x00000005) من SMSC إلى ESME لتسليم إما رسالة منشأة من المحمول (MO) أو إيصال تسليم (DLR). ويعكس جسمها جسم submit_sm. ويميّز حقل esm_class بينهما: يشير البتّ 0x04 إلى إيصال تسليم. ويجب أن يجيب ESME دائمًا بـ deliver_sm_resp.

مخططجلسة SMPP بين منصتكم وBroadNet
منصتكم (ESME)
BroadNet SMSC
اتصال TCP/TLS مستمر واحد
  1. bind_transceiverفتح الجلسة والمصادقة عليها
  2. bind_transceiver_respتم قبول الجلسة
  3. submit_smإرسال رسالة
  4. submit_sm_respتم القبول، وإعادة معرف الرسالة
  5. deliver_smإيصال استلام أو رسالة واردة
  6. deliver_sm_respتم التأكيد
  7. enquire_linkإشارة Keepalive أثناء الخمول
§01

وحدة واحدة، مهمتان

deliver_sm هي نظير submit_sm في الاتجاه من SMSC إلى ESME وتتشارك تخطيط الجسم نفسه. وتحمل إما رسالة MO واردة (مشترك يراسل رقمك الطويل أو الرمز القصير) أو إيصال تسليم يبلّغ عن مصير رسالة أرسلتها سابقًا. ويتولى ربط receiver أو transceiver لديك كليهما؛ وتتفرّع حسب esm_class لتوجيههما صحيحًا.

§02

تمييز MO عن DLR بواسطة esm_class

تحدّد بتّات نوع الرسالة في esm_class الحمولة. رسالة MO العادية بتّات نوع الرسالة فيها صفرية. ويضبط إيصال التسليم البتّ 0x04. وحين يُضبَط 0x04، يحتوي short_message على نص الإيصال المحدَّد في الملحق B (id وstat وerr…) ويحمل معامل receipted_message_id عادةً قيمة message_id الأصلية. لا تحلّل نص الإيصال كمحتوى مستخدم.

قيم نوع الرسالة في esm_class على deliver_sm
esm_class (بتات نوع الرسالة)الحمولة (Payload)
0x00رسالة عادية صادرة من الهاتف المحمول (MO)
0x04إيصال تسليم SMSC (DLR)
0x08إشعار تسليم SME
0x10إقرار يدوي/من المستخدم على SME
0x20إنهاء المحادثة (CDMA الكوري)
0x40إشعار التسليم الوسيط
§03

أجب دائمًا بـ deliver_sm_resp

لكل deliver_sm يجب أن يعيد ESME استجابة deliver_sm_resp (0x80000005) بـ sequence_number مطابق وESME_ROK. وإذا لم تُقرّ الاستلام، يعامل SMSC التسليم على أنه فاشل، ويعيد إرساله، و — لأن وحدات PDU المعلَّقة غير المُقرّة تُحسَب ضمن النافذة — قد يعطّل الجلسة بأكملها. أقرّ الاستلام فورًا وأجرِ المعالجة الثقيلة بشكل غير متزامن.

إقرار كل من MO وDLRtext
SMSC → ESME  deliver_sm  seq=88  esm_class=0x00  (MO: user text)
ESME → SMSC  deliver_sm_resp seq=88  status=ESME_ROK
SMSC → ESME  deliver_sm  seq=89  esm_class=0x04  (DLR: id:... stat:DELIVRD)
ESME → SMSC  deliver_sm_resp seq=89  status=ESME_ROK
§04

data_sm كبديل

data_sm (0x00000103) عملية أخفّ وأكثر انسيابية يمكنها حمل رسائل MO والإيصالات باستخدام معاملات TLV (خصوصًا message_payload) بدل حقل short_message الثابت. وتفضّلها بعض الشبكات للحركة التفاعلية أو من نمط WAP. ودعمها اختياري وخاص بكل مزوّد — تأكّد قبل الاعتماد عليها.

التعليمات

الأسئلة المتكررة

كيف أميّز إيصال التسليم عن رسالة MO واردة؟

افحص esm_class في deliver_sm. إذا كان بتّ نوع الرسالة 0x04 مضبوطًا فهو إيصال تسليم ويحمل short_message نص الإيصال وفق الملحق B. وإذا كانت تلك البتّات صفرية فهي رسالة عادية منشأة من المحمول من مشترك.

ماذا يحدث إن لم أرسل deliver_sm_resp؟

يفترض SMSC أن التسليم فشل ويعيد إرسال deliver_sm. كما تستهلك وحدات PDU غير المُقرّة نافذتك، لذا قد يؤدي عدم الردّ إلى تعطيل الجلسة وإنتاج معالجة مكرّرة لرسائل MO/DLR.

هل لـ deliver_sm الحقول نفسها التي في submit_sm؟

نعم — تعيد deliver_sm استخدام تخطيط جسم submit_sm (service_type وعنونة TON/NPI وesm_class وdata_coding وshort_message وما إلى ذلك). يختلف فقط الاتجاه وتفسير الحمولة.

هل يمكن أن تُدمَج رسالة MO واحدة؟

نعم. تصل الرسائل الواردة الطويلة كوحدات deliver_sm متعددة بترويسة دمج UDH (بتّ UDHI 0x40 مضبوط في esm_class) أو بمعاملات SAR. أعِد تجميعها حسب الرقم المرجعي والتسلسل تمامًا كما تفعل مع الأجزاء الصادرة.

مراجع

مواصفات المصدر

تستند هذه الصفحة إلى المعايير المنشورة. يفتح في علامة تبويب جديدة.

BNتتم صيانته بواسطة فريق الهندسة BroadNet·خدمة الرسائل عالية الجودة منذ عام 2003
ضعه على السلك

قم بالبناء باستخدام ربط SMPP حقيقي وواجهة برمجة تطبيقات REST.

اطلب الوصول التجريبي باستخدام مفاتيح اختبار حقيقية: أرسل أولاً إلى رقمك الذي تم التحقق منه، ثم انتقل إلى الإنتاج عبر أكثر من 200 دولة بمجرد الموافقة على معرّف المُرسِل ومساراته.