BroadNet
SMPPالجلسة

عمليات الربط في SMPP وحالات الجلسة

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

تصادِق عملية bind جلسة SMPP وتفتحها. يتيح bind_transmitter الإرسال فقط، وbind_receiver الاستقبال فقط، وbind_transceiver الاتجاهين معًا على اتصال واحد. يقدّم ESME حقول system_id وpassword وsystem_type؛ ويردّ SMSC بـ bind_resp. وينقل الربط الناجح الجلسة إلى حالة مربوطة حتى unbind أو قطع الاتصال.

مخططجلسة 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

أنواع الربط الثلاثة

يحدّد نوع الربط اتجاه حركة الجلسة. اختر transmitter للإرسال فقط (إرسال الرسائل المنتهية إلى المحمول MT)، أو receiver للاستقبال فقط (رسائل MO وإيصالات التسليم)، أو transceiver لحمل الاتجاهين عبر اتصال واحد — وهو الخيار المعتاد في v3.4 لأنه يخفّض عدد الاتصالات التي تصونها إلى النصف.

عمليات الربط
العمليةcommand_idيمكن للجلسة
bind_transmitter0x00000002إرسال الرسائل (MT) فقط
bind_receiver0x00000001استقبال الرسائل / الإيصالات (MO + DLR) فقط
bind_transceiver0x00000009الإرسال والاستقبال معًا على اتصال واحد
§02

حقول طلب الربط

يحمل جسم الـ bind بيانات الاعتماد وقدرات ESME المُعلَنة. يصادِق system_id وpassword على الحساب؛ ويصنّف system_type اختياريًا نوع ESME؛ ويعلن interface_version إصدار SMPP؛ وتتيح addr_ton وaddr_npi وaddress_range لـ SMSC توجيه الحركة المنشأة من المحمول إلى هذا الربط. ويؤدي address_range غير المطابق إلى حجب توجيه رسائل MO/DLR بصمت على ربط receiver أو transceiver — وهو خطأ تكامل شائع.

جسم bind_transmitter/receiver/transceiver
الحقلالنوعالحد الأقصىملاحظات
system_idC-Octet String16معرّف الحساب/تسجيل الدخول
passwordC-Octet String9كلمة مرور الحساب
system_typeC-Octet String13فئة ESME اختيارية (غالباً ما تكون فارغة)
interface_versionInteger10x34 = v3.4, 0x50 = v5.0
addr_tonInteger1نوع الرقم لتوجيه رسائل MO إلى هذا ESME
addr_npiInteger1مؤشر خطة الترقيم
address_rangeC-Octet String41العنوان/التعبير النمطي الذي يوجّهه SMSC إلى هذا الربط (bind)
§03

استجابة الربط

يردّ SMSC بـ bind_resp المطابق (مثل bind_transceiver_resp بقيمة 0x80000009). ويكون command_status مساويًا ESME_ROK عند النجاح أو خطأً مثل ESME_RINVPASWD (كلمة مرور غير صالحة) أو ESME_RINVSYSID (معرّف نظام غير صالح) أو ESME_RBINDFAIL. ويعيد الجسم قيمة system_id الخاصة بـ SMSC، وفي v3.4 فما فوق معامل sc_interface_version الاختياري (TLV) الذي يخبر ESME بالإصدار الذي يدعمه SMSC فعليًا.

تبادل ربط transceiver ناجحtext
ESME → SMSC   bind_transceiver   seq=1  system_id=acme  password=****
SMSC → ESME   bind_transceiver_resp seq=1  status=ESME_ROK  system_id=smsc01
  (session now BOUND_TRX — submit_sm and deliver_sm may flow)
§04

حالات الجلسة

جلسة SMPP آلة حالات صغيرة. تبدأ بحالة OPEN بعد اتصال TCP، وتنتقل إلى حالة BOUND عند نجاح الربط، وتعود إلى UNBOUND ثم CLOSED عند unbind أو قطع الاتصال. ويؤدي إرسال عملية غير مشروعة للحالة الراهنة إلى إعادة ESME_RINVBNDSTS (حالة ربط غير صحيحة). ويؤدي الربط مرتين على اتصال واحد إلى إعادة ESME_RALYBND (مربوط سلفًا).

حالات جلسة SMPP
الحالةالمعنى
OPENاتصال TCP قائم، ولم يتم الـ bind بعد
BOUND_TXمرتبط كمرسِل (transmitter) — يمكنه الإرسال
BOUND_RXمرتبط كمستقبِل (receiver) — يمكنه الاستقبال
BOUND_TRXمرتبط كـ transceiver — يمكنه الإرسال والاستقبال
UNBOUNDتم إرسال unbind، في انتظار الإغلاق
CLOSEDتم قطع الاتصال
§05

unbind وoutbind

تطلب unbind (0x00000006) إغلاقًا سلسًا للجلسة؛ يردّ الطرف الآخر بـ unbind_resp ويغلق الجانبان اتصال TCP. أما outbind (0x0000000B) فهي حالة الاتجاه المعاكس: يطلب SMSC من ESME مستمِع بدء ربط receiver، وتُستخدم حين يحتاج SMSC إلى تسليم حركة MO إلى ESME ينتظر عادة الاتصالات الواردة.

التعليمات

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

هل أستخدم أزواج transmitter/receiver أم transceiver؟

فضّل transceiver حيثما يسمح المزوّد — فاتصال واحد يحمل الإرسال والاستقبال معًا، ما يخفّض عدد الاتصالات إلى النصف ويبسّط ربط إيصالات التسليم. استخدم ربطي transmitter وreceiver المنفصلين فقط حين يشترط المزوّد الفصل الاتجاهي.

ما الغرض من system_type؟

يعرّف system_type اختياريًا فئة ESME (مثل فئة تطبيق محددة). ويتركه كثير من المزوّدين فارغًا. اضبطه فقط على القيمة الدقيقة التي يوفّرها المزوّد، لأن بعضهم يوجّه اعتمادًا عليه.

لماذا لا يتلقّى ربط receiver لديّ إيصالات التسليم؟

السبب الأشيع عدم تطابق address_range / addr_ton / addr_npi: يوجّه SMSC حركة MO وDLR إلى الربط الذي يطابق address_range الخاص به، لذا تحجب القيمة الخاطئة تلك الحركة بصمت. تأكّد من القيم الدقيقة المزوَّدة مع المزوّد.

ماذا يعني ESME_RALYBND؟

يعني ESME_RALYBND (0x00000005) أن ESME في حالة مربوطة سلفًا وحاول الربط مجددًا على الجلسة نفسها. اربط مرة واحدة فقط لكل اتصال؛ وإذا رأيت ربطًا فاشلًا، افتح اتصالًا جديدًا بدل إعادة ربط القديم.

كم عدد عمليات الربط المتزامنة التي يمكنني فتحها؟

هذا حدّ تجاري يضعه مزوّدك وليس البروتوكول. وفتح عمليات ربط أكثر مما هو مزوَّد سبب متكرر للخنق أو تعليق الحساب — اتفق على عدد عمليات الربط والإنتاجية لكل ربط (TPS) كتابةً قبل التوسّع.

مراجع

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

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

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

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

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