BroadNet
مرجع SMPP v3.4 · command_status

أكواد أخطاء SMPP.

كل قيمة command_status مُعرَّفة في مواصفة SMPP v3.4 — الكود السداسي عشري، والاسم الرمزي، والمعنى بلغة بسيطة، والسبب المحتمل والحل. ابحث بالكود أو الاسم لتصحيح خلل في الربط أو submit_sm بسرعة.

48 من أصل 48 كودًا
SMPP v3.4 command_status error codes
سداسي عشريالاسم الرمزيالمعنى والسبب المحتمل / الحل
0x00000000ESME_ROKلا يوجد خطأ. تم قبول الوحدة (PDU). بالنسبة لـ submit_sm، هذا يعني فقط أن SMSC استلم الرسالة، وليس أنها سُلّمت — تتبع التسليم عبر إيصال التسليم (DLR) في deliver_sm.
0x00000001ESME_RINVMSGLENطول الرسالة غير صالح. الحقل short_message أو message_payload طويل جدًا أو فارغ بالنسبة للترميز المستخدم. قسّم المحتوى الطويل أو استخدم TLV الخاص بـ message_payload؛ تحقق من تطابق data_coding مع طول البايتات.
0x00000002ESME_RINVCMDLENطول الأمر غير صالح. لا يتطابق الحقل command_length في ترويسة الوحدة مع عدد البايتات الفعلي المُرسَل. يكاد يكون دائمًا خطأً في مرمّز الوحدة لدى العميل أو خطأ في حدود التأطير/المخزن المؤقت.
0x00000003ESME_RINVCMDIDمعرّف الأمر غير صالح. الحقل command_id غير معروف أو غير مدعوم من قبل SMSC. تحقق من أنك ترسل عملية صالحة وإصدار SMPP الصحيح.
0x00000004ESME_RINVBNDSTSحالة BIND غير صحيحة بالنسبة للأمر المُعطى. العملية غير مسموح بها في وضع الربط الحالي — مثلاً submit_sm على ربط من نوع receiver، أو طلب قبل اكتمال الربط. اربط كـ transmitter أو transceiver أولاً.
0x00000005ESME_RALYBNDالـ ESME موجود بالفعل في حالة ربط. تم إصدار طلب ربط ثانٍ على جلسة مربوطة بالفعل. أعد استخدام الجلسة الحالية أو ألغِ الربط قبل إعادة الربط.
0x00000006ESME_RINVPRTFLGعلم الأولوية غير صالح. priority_flag خارج النطاق 0–3 الذي يقبله SMSC. حدّد قيمة مدعومة (عادةً 0).
0x00000007ESME_RINVREGDLVFLGعلم التسليم المسجَّل غير صالح. يحمل الحقل registered_delivery قيمة غير مدعومة. استخدم قناع بت (bitmask) يدعمه SMSC (مثل 0x01 لطلب إيصال تسليم نهائي).
0x00000008ESME_RSYSERRخطأ في النظام. فشل عام من جانب SMSC يمنع المعالجة. مؤقت — أعد المحاولة مع تأخير تصاعدي؛ إذا استمر، تواصل مع مزوّد الخدمة.
0x0000000AESME_RINVSRCADRعنوان المصدر غير صالح. الحقل source_addr (معرّف المُرسِل) غير صحيح أو غير مسموح به — طول خاطئ، أحرف غير مسموحة، أو معرّف مُرسِل أبجدي رقمي غير مسجَّلة. سجّل الهوية أو أضفها إلى القائمة البيضاء.
0x0000000BESME_RINVDSTADRعنوان الوجهة غير صالح. الحقل destination_addr غير صحيح أو غير قابل للتوجيه — تنسيق MSISDN خاطئ، رمز دولة مفقود، أو نطاق محظور. طبّع الرقم إلى صيغة E.164.
0x0000000CESME_RINVMSGIDمعرّف الرسالة غير صالح. لا يطابق message_id في query_sm أو cancel_sm أو replace_sm أي رسالة معروفة. استخدم المعرّف الدقيق المُعاد في submit_sm_resp.
0x0000000DESME_RBINDFAILفشل الربط. رُفض طلب الربط لسبب غير بيانات الاعتماد — مثل عدم إدراج عنوان IP في القائمة المسموحة، أو اشتراط TLS، أو نوع ربط غير مسموح به لهذا الحساب.
0x0000000EESME_RINVPASWDكلمة المرور غير صالحة. كلمة المرور في وحدة الربط خاطئة أو منتهية الصلاحية. تحقق من بيانات الاعتماد؛ لاحظ أن الحقل محدود بـ 8 ثمانيات (octets) في SMPP 3.4.
0x0000000FESME_RINVSYSIDمعرّف النظام غير صالح. الحقل system_id (اسم المستخدم) غير معروف لدى SMSC. تحقق من معرّف الحساب ومن كونه مُفعّلاً.
0x00000011ESME_RCANCELFAILفشل إلغاء الرسالة (Cancel SM). لم يتمكن cancel_sm من إزالة الرسالة — ربما تم تسليمها بالفعل أو انتهت صلاحيتها. لا شيء لإعادة المحاولة.
0x00000013ESME_RREPLACEFAILفشل استبدال الرسالة (Replace SM). لم يتمكن replace_sm من تحديث الرسالة، عادةً لأنها غادرت قائمة الانتظار بالفعل. أرسل رسالة جديدة بدلاً من ذلك.
0x00000014ESME_RMSGQFULقائمة انتظار الرسائل ممتلئة. وصلت قائمة تخزين وإعادة توجيه SMSC إلى سعتها القصوى. خفّض معدل الإرسال وأعد المحاولة مع تأخير تصاعدي.
0x00000015ESME_RINVSERTYPنوع الخدمة غير صالح. قيمة service_type غير معروفة أو غير مسموح بها. اتركها فارغة أو استخدم قيمة متفقًا عليها مع مزوّد الخدمة.
0x00000033ESME_RINVNUMDESTSعدد الوجهات غير صالح. الحقل number_of_dests في وحدة submit_multi خارج النطاق. حافظ عليه ضمن حد الوجهات لكل وحدة الذي يفرضه SMSC.
0x00000034ESME_RINVDLNAMEاسم قائمة التوزيع غير صالح. قائمة التوزيع المُشار إليها في submit_multi غير موجودة لدى SMSC. أنشئ القائمة أو أرسل إلى عناوين صريحة.
0x00000040ESME_RINVDESTFLAGعلم الوجهة غير صالح. في submit_multi، الحقل dest_flag لأحد المدخلات ليس عنوان SME (1) ولا قائمة توزيع (2). صحّح علم الوجهة لكل مدخل.
0x00000042ESME_RINVSUBREPطلب 'الإرسال مع الاستبدال' غير صالح. تم تعيين replace_if_present_flag على عملية لا تدعمه، أو دُمج مع قوائم التوزيع. امسح العلم.
0x00000043ESME_RINVESMCLASSبيانات حقل esm_class غير صالحة. يحمل esm_class مجموعة غير مدعومة — مثل بت UDHI أو بت إيصال تسليم يرفضه SMSC. أعد فحص بتات وضع/نوع الرسالة.
0x00000044ESME_RCNTSUBDLلا يمكن الإرسال إلى قائمة التوزيع. الحساب غير مصرَّح له بالإرسال إلى قائمة التوزيع المحددة. استخدم العنونة المباشرة أو اطلب الإذن.
0x00000045ESME_RSUBMITFAILفشل submit_sm أو submit_multi. فشل عام في الإرسال على مستوى SMSC. غالبًا مؤقت (توجيه/سعة) — أعد المحاولة مع تأخير تصاعدي؛ افحص أي TLV لسبب أكثر تحديدًا.
0x00000048ESME_RINVSRCTONنوع عنوان المصدر (TON) غير صالح. source_addr_ton غير صالح لتنسيق المرسل — مثلاً TON رقم 5 (أبجدي رقمي) مطلوب لمعرّف مُرسِل نصي لكن أُرسل TON رقمي.
0x00000049ESME_RINVSRCNPIخطة ترقيم عنوان المصدر (NPI) غير صالحة. source_addr_npi غير صالح أو غير متسق مع TON. استخدم NPI صفر مع المرسلين الأبجديين الرقميين وNPI رقم 1 (E.164) لأرقام MSISDN.
0x00000050ESME_RINVDSTTONنوع عنوان الوجهة (TON) غير صالح. dest_addr_ton غير صالح للوجهة. استخدم TON رقم 1 (دولي) مع رقم MSISDN بصيغة E.164.
0x00000051ESME_RINVDSTNPIخطة ترقيم عنوان الوجهة (NPI) غير صالحة. dest_addr_npi غير صالح أو غير متسق مع TON. القيمة NPI رقم 1 (ISDN/E.164) هي المعتادة للأرقام المحمولة.
0x00000053ESME_RINVSYSTYPحقل system_type غير صالح. قيمة system_type في وحدة الربط غير مقبولة. اتركها فارغة أو استخدم القيمة الدقيقة التي حددها المزوّد.
0x00000054ESME_RINVREPFLAGعلم replace_if_present غير صالح. تم تعيين replace_if_present_flag على قيمة غير 0 أو 1. أرسل علمًا منطقيًا صالحًا.
0x00000055ESME_RINVNUMMSGSعدد الرسائل غير صالح. حقل sm_count/عدد الرسائل خارج النطاق. صحّح القيمة في الوحدة.
0x00000058ESME_RTHROTTLEDخطأ تقييد المعدل — تجاوز حد الرسائل. أنت ترسل أسرع من المعدل المسموح به للحساب (رسائل في الثانية). قيّد حلقة الإرسال وأعد المحاولة مع تأخير تصاعدي. حالة مؤقتة قابلة لإعادة المحاولة.
0x00000061ESME_RINVSCHEDوقت التسليم المجدوَل غير صالح. الحقل schedule_delivery_time غير صحيح التنسيق أو في الماضي. استخدم صيغة وقت SMPP المطلقة/النسبية (YYMMDDhhmmsstnnp) أو اتركه فارغًا.
0x00000062ESME_RINVEXPIRYفترة صلاحية الرسالة غير صالحة. validity_period غير صحيح التنسيق أو خارج النافذة المسموحة. استخدم صيغة وقت SMPP أو اتركه فارغًا لاستخدام إعداد SMSC الافتراضي.
0x00000063ESME_RINVDFTMSGIDالرسالة المحددة مسبقًا غير صالحة أو غير موجودة. يشير sm_default_msg_id إلى رسالة جاهزة لا يملكها SMSC. أرسل النص الكامل أو معرّفًا صالحًا لرسالة محددة مسبقًا.
0x00000064ESME_RX_T_APPNرمز خطأ تطبيق مؤقت لدى مستقبل ESME. يُعاد من ESME الخاص بك (أو جهة وسيطة) للإشارة إلى فشل تطبيق مؤقت أثناء معالجة deliver_sm/data_sm. قد يعيد SMSC محاولة التسليم لاحقًا.
0x00000065ESME_RX_P_APPNرمز خطأ تطبيق دائم لدى مستقبل ESME. التطبيق المستقبِل يرفض الرسالة بشكل دائم. لن يعيد SMSC المحاولة — أصلح المعالج النهائي أو سبب الرفض.
0x00000066ESME_RX_R_APPNرمز خطأ رفض الرسالة لدى مستقبل ESME. يطلب التطبيق المستقبِل من SMSC رفض الرسالة. يُستخدم لرفض محتوى وارد معين.
0x00000067ESME_RQUERYFAILفشل طلب query_sm. تعذر إتمام استعلام الحالة — قد يكون message_id غير معروف أو منتهيًا من مخزن SMSC. تحقق من المعرّف.
0x000000C0ESME_RINVOPTPARSTREAMخطأ في الجزء الاختياري من نص الوحدة. دفق TLV (المعامل الاختياري) غير صحيح البنية — طول خاطئ أو مبتور. أصلح مرمّز TLV في عميلك.
0x000000C1ESME_ROPTPARNOTALLWDالمعامل الاختياري غير مسموح به. أُرسل TLV لا تسمح به هذه العملية أو SMSC. أزل المعامل الاختياري غير المدعوم.
0x000000C2ESME_RINVPARLENطول المعامل غير صالح. الطول المُعلَن لـ TLV لا يطابق قيمته. صحّح حقل الطول في المعامل الاختياري.
0x000000C3ESME_RMISSINGOPTPARAMمعامل اختياري متوقَّع مفقود. لم يُقدَّم TLV مطلوب لهذه العملية (مثل message_payload عندما يكون short_message فارغًا). أضف المعامل الاختياري الإلزامي.
0x000000C4ESME_RINVOPTPARAMVALقيمة المعامل الاختياري غير صالحة. يحمل TLV قيمة خارج المجموعة المسموحة. راجع مواصفة SMPP للقيم المسموح بها لهذا المعامل.
0x000000FEESME_RDELIVERYFAILUREفشل التسليم (data_sm_resp). يُستخدم مع data_sm للإشارة إلى تعذّر تسليم الرسالة إلى الهاتف. عامله كإيصال تسليم فاشل وافحص الشبكة/المسار.
0x000000FFESME_RUNKNOWNERRخطأ غير معروف. حالة عامة عندما لا يملك SMSC رمزًا محددًا. أعد المحاولة مرة واحدة مع تأخير؛ إذا استمر، أبلغ مزوّد الخدمة مع نموذج من الوحدة (PDU).

القيم غير المدرجة محجوزة. وفقًا لمواصفة SMPP v3.4: النطاق 0x00000100–0x000003FF محجوز لامتدادات بروتوكول SMPP، والنطاق 0x00000400–0x000004FF لأخطاء خاصة بمزوّد SMSC، والنطاق 0x00000500–0xFFFFFFFF محجوز. الفجوات الفردية أقل من 0xFF (مثل 0x09 و0x10) محجوزة وفقًا للمعيار.

الإجابة المختصرة

ما هو كود خطأ SMPP؟

كود خطأ SMPP هو القيمة الموجودة في حقل command_status لكل وحدة PDU استجابة في SMPP. يخبر العميل (ESME) ما إذا كان SMSC قد قبل العملية — القيمة 0x00000000 (ESME_ROK) تعني النجاح، وأي قيمة غير صفرية تحدد سبب فشل عملية ربط أو submit_sm أو query_sm أو غيرها. تُعرَّف الأكواد بواسطة مواصفة SMPP v3.4 وتكون متسقة عبر جميع أنظمة SMSC المتوافقة.

استجابة submit_sm_resp الناجحة بقيمة ESME_ROK تؤكد فقط أن SMSC قبل الرسالة للمعالجة — يُبلَّغ عن التسليم النهائي إلى الهاتف لاحقًا في إيصال التسليم (deliver_sm). عامل أخطاء وقت الإرسال وأخطاء وقت التسليم كطبقتين مختلفتين.

الأسئلة الشائعة

ما هو command_status في SMPP؟

command_status هو حقل من 4 بايت في ترويسة كل وحدة PDU استجابة في SMPP. في وحدة الطلب يكون مضبوطًا على صفر؛ وفي الاستجابة يحمل النتيجة — 0x00000000 (ESME_ROK) للنجاح، أو كود خطأ غير صفري يحدد الفشل. إنه الإشارة الأساسية التي يستخدمها عميلك لتحديد ما إذا كان سيعيد المحاولة، أو يصحح الوحدة، أو يفشل.

ماذا تعني ESME_RTHROTTLED (0x00000058)؟

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

ما الفرق بين ESME_RINVSRCADR وESME_RINVDSTADR؟

ESME_RINVSRCADR (0x0000000A) تعني أن عنوان المصدر — معرّف المُرسِل — غير صحيح أو غير مسموح به، وغالبًا ما يكون مرسلًا أبجديًا رقميًا غير مسجَّل. ESME_RINVDSTADR (0x0000000B) تعني أن رقم MSISDN الوجهة غير صحيح أو غير قابل للتوجيه. طبّع العناوين إلى صيغة E.164 وسجّل معرّفات المُرسِلين حيثما لزم.

هل تعني ESME_ROK أن الرسالة سُلّمت؟

لا. تؤكد ESME_ROK في submit_sm_resp فقط أن SMSC قبل الرسالة للمعالجة. يُبلَّغ عن التسليم النهائي إلى الهاتف لاحقًا في إيصال التسليم (deliver_sm)، الذي يحمل حالته الخاصة مثل DELIVRD أو UNDELIV أو EXPIRED. طابق دائمًا بين قبول الإرسال وإيصال التسليم.

ما هي أخطاء SMPP الآمنة لإعادة المحاولة؟

الأكواد المؤقتة على مستوى النظام قابلة لإعادة المحاولة مع تأخير تصاعدي: ESME_RSYSERR (0x08)، وESME_RMSGQFUL (0x14)، وESME_RTHROTTLED (0x58)، وESME_RSUBMITFAIL (0x45)، وESME_RUNKNOWNERR (0xFF). أخطاء التحقق مثل العناوين غير الصحيحة، أو TON/NPI، أو طول الرسالة، أو بيانات الاعتماد الخاطئة دائمة — أصلح الطلب أو الإعداد بدلاً من إعادة المحاولة.

هل هذه الأكواد نفسها عبر جميع أنظمة SMSC؟

الأكواد ضمن النطاق 0x00000000–0x000000FF مُعرَّفة بواسطة مواصفة SMPP v3.4 وتكون متسقة عبر جميع أنظمة SMSC المتوافقة. النطاقات 0x00000400–0x000004FF محجوزة لأخطاء خاصة بالمزوّد، لذا قد يُعيد نظام SMSC معين أكوادًا إضافية هناك بمعانٍ خاصة به — تحقق دائمًا من وثائق مزوّد الخدمة لهذه الحالات.

هل تربط جلسة SMPP؟

توفّر BroadNet ارتباطات SMPP 3.4 مباشرة بإنتاجية يمكن التنبؤ بها ومعالجة واضحة لـ command_status. تحدّث إلى فريقنا بشأن الاتصال.