BroadNet
دليل ترحيل محايد لمقدمي الخدمات·/developers/migrate

انقل حركة رسائل SMS الخاصة بك إلى BroadNet من أي مزود خدمة.

يأخذ هذا الدليل المفاهيم التي يستخدمها مزود الخدمة الحالي (إرسال رسالة، والمرسل، وإيصالات التسليم، وإشعارات الحالة عبر webhook) ويبيّن ما يقابلها في BroadNet API. ثم يتناول الجانب التشغيلي: تسجيل معرّف المُرسِل، وتشغيل المزودَين بالتوازي، وزيادة حركة الرسائل على مراحل، والتراجع، ومن المسؤول عن كل خطوة. لا يذكر الدليل اسم أي مزود، لأن المفاهيم واحدة في كل مكان.

أرسل رسالة نصية واحدة
POST /sms/sendSms
المصادقة
Authorization: Bearer <token>
API HTTP القديمة
/websmpp/websms
SMPP
الإصدار 3.4، مع إيصالات التسليم

طابِق واجهة API الحالية مع BroadNet

تشترك معظم واجهات API لرسائل SMS في المفاهيم نفسها وإن اختلفت أسماؤها. ابحث عن المفهوم في العمود الأول، أياً كان اسمه لدى مزودك، واستخدم ما يقابله في BroadNet. أسماء الحقول مطابقة تماماً لما ورد في مواصفات OpenAPI.

مفهومالنموذج المعتاد لدى مقدمي الخدمات الآخرينBroadNet
مضيف APIمضيف واجهة API إقليمي لحسابكhttps://api.broadnet.me

تصلك بيانات اعتماد الاختبار، ومعها وجهة إرسال حركة الاختبار، مع وصولك التجريبي: اطلبه عبر /signup وسنرد عليك خلال يوم عمل واحد.

المصادقةمعرّف الحساب والسر عبر المصادقة الأساسية، أو رأس مفتاح APIAuthorization: Bearer <token>

رمز وصول واحد لكل حساب.

أرسل رسالة واحدةطلب HTTP POST إلى نقطة نهاية الرسائلPOST /sms/sendSms

نص الطلب بصيغة JSON.

مرسلfrom، sender، originatorsenderId

معرّف مُرسِل أبجدي رقمي أو رقم، مسجل لكل دولة.

متلقيto، destination، msisdndestinationNumber

التنسيق الدولي، كما هو الحال في مثال المواصفات 447700900101.

نص الرسالةbody، text، contentmessage

نص الرسالة، تمامًا كما سيراه المستلم.

ترميز الأحرف وأجزاء الرسالةيتم حسابها بواسطة المزود، أو يتم إرجاعها من خلال استدعاء واجهة برمجة API منفصلةmessageType

TEXT (GSM-7) أو UNICODE. POST /sms/identify تُرجع messageType و charCount و smsParts و charLimit قبل الإرسال.

إرسال مُجدولحقل send_at أو حقل وقت الجدولةisSchedule · gmt · time

اترك هذه الحقول فارغة لإرسال الرسالة فوراً.

معرف الرسالةحقل المعرف في استجابة JSON200 OK → 2603121407537573731

نص الاستجابة الخاص بـ /sms/sendSms هو معرف الرسالة.

عدة مستلميننقطة نهاية الدفعة، أو حلقة تكراريةPOST /sms/sendSmsGroupData

مصفوفة contacts في نص الطلب. أما POST /sms/sendbulk فتستقبل ملفًا مرفوعًا بدلاً من ذلك.

Webhook حالة التسليمعنوان URL لرد الاستدعاء (callback) لكل طلب أو لكل حسابWebhook URL on your account

يتم إرسال حالة التسليم إلى عنوان URL webhook المُعدّ في حسابك. يقوم POST /sms/resendDlr بإعادة إرسال الإيصالات عندما لا تصل إليه.

الاستعلام عن حالة التسليمطلب GET للرسالة باستخدام معرّفهاGET /websmpp/websmsstatus

API HTTP القديمة. مرر معرف الرسالة كـ respid، و format=json لـ JSON. القيم: DELIVRD، UNDELIV، EXPIRED، REJECTD.

تصدير إيصال التسليمتصدير ملف CSV في وحدة التحكم/websmpp/api/dlrreport

API HTTP القديمة. تقرير تسليم بصيغة XLSX لفترة زمنية محددة.

استجابات الأخطاءحالة HTTP بالإضافة إلى رمز خطأ من مزود الخدمة400 · 401 · 500

400: خطأ في التحقق أو حقل مفقود. 401: رمز Bearer غير صالح أو مفقود. 500: خطأ غير متوقع في الخادم.

SMPPجلسات SMPP (bind) مع SMSC لدى المزودbind · submit_sm · deliver_sm

جلسات SMPP الإصدار 3.4 كمرسل أو مستقبل أو جهاز إرسال واستقبال. تصل إيصالات التسليم على شكل deliver_sm. يتضمن حسابك بيانات اعتماد تسجيل الدخول SMPP.

إرسال باستخدام عنوان URL HTTP GETعنوان URL لطلب GET مع بيانات الاعتماد في المعلماتGET /websmpp/websms

API HTTP القديمة. user، pass (أو accesskey)، sid، mno، type، text. يتم الاحتفاظ بها للتكاملات الحالية؛ يجب على التكاملات الجديدة استخدام /sms.

SDKمكتبة عميل لكل لغة@broadnet/cpaas-sdk

SDK رسمية واحدة للغة TypeScript و Node.js. أما بالنسبة للغات الأخرى، فيتم إنشاء عميل من مواصفات OpenAPI.

إليك نفس عملية الإرسال كطلب واحد. استبدل حقول المرسل والمستلم والنص الخاصة بمزود الخدمة الخاص بك بـ senderId و destinationNumber و message :

POST /sms/sendSms
curl -X POST https://api.broadnet.me/sms/sendSms \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "senderId": "ACME",
    "destinationNumber": "447700900101",
    "message": "Your code is 8123",
    "messageType": "TEXT"
  }'

# 200 OK — the response body is the message ID, e.g. 2603121407537573731

للتحقق من رسالة واحدة، استعلم عن حالتها باستخدام معرّف الرسالة الذي أعاده طلب الإرسال:

الاستعلام عن حالة التسليم
# Status lookup on the legacy HTTP API (/websmpp), by message ID
curl "https://api.broadnet.me/websmpp/websmsstatus?respid=2603121407537573731&format=json" \
  -H "Authorization: Bearer $BROADNET_TOKEN"

# "status": "DELIVRD"   (or UNDELIV, EXPIRED, REJECTD)

انقل معرّفات المُرسِلين الخاصة بك

تُعدّ معرّفات المُرسِلين الأبجدية الرقمية والرموز المختصرة قابلة للنقل عمومًا، وتخضع لقواعد التسجيل الخاصة بكل مشغّل وهيئة تنظيمية. يرتبط التسجيل بالمسار الذي تسلكه حركة البيانات، لذا يُنصح بالتخطيط له قبل إرسال أي رسالة إنتاجية إلى BroadNet.

  1. 1

    قم بإدراج كل معرّف مُرسِل، والدول التي يرسل إليها، ونوع حركة الرسائل التي يحملها: OTP، أو المعاملات، أو التسويق.

  2. 2

    تحقق من قواعد كل دولة. في الإمارات العربية المتحدة تُسجَّل معرّفات المُرسِلين وفق قواعد TDRA عبر المشغّل، بمعرّف واحد لكل كيان قانوني لكل حالة استخدام. أما في المملكة العربية السعودية فيتطلب الأمر موافقة CST والمشغّل، ويرتبط المرسلون الأجانب عبر مجمّع محلي مرخّص من CST.

  3. 3

    يقوم مهندس الترحيل الخاص بك بتقديم طلبات التسجيل لمسارات BroadNet، ويتابع فريق الامتثال في BroadNet كل طلب حتى الموافقة عليه.

  4. 4

    ابدأ التشغيل الموازي في أي بلد فقط بعد الموافقة على معرّف المُرسِل فيه بالنسبة لمسارات BroadNet. وحتى ذلك الحين، استمر في الإرسال عبر مزود الخدمة الحالي.

توجد قواعد كل سوق في صفحات اللوائح. لوائح رسائل SMS حسب البلد

شغّل المزودَين بالتوازي

أبقِ مزود الخدمة الحالي لديك فعالاً، وأضف BroadNet كمسار ثانٍ خلف محوّل في برمجتك. أرسل أولاً إلى أرقامك الموثقة، ثم إلى جزء صغير من حركة الرسائل الحقيقية، وقارن بين المسارين على نفس الوجهات.

مقارنة حسب البلد والمشغّل:

  • مزيج حالات التسليم: تم التسليم، لم يتم التسليم، منتهية الصلاحية، ومرفوضة.
  • الوقت المستغرق من إرسال الرسالة إلى استلام إيصال التسليم.
  • المرسل الذي يظهر على الهاتف.
  • عدد المقاطع لنفس النص، من POST /sms/identify.

اختر المسار لكل مستلم لا لكل رسالة، حتى تمر كل محاولات إعادة إرسال OTP للمستخدم نفسه عبر المزود نفسه. مفتاح توجيه بسيط:

route.ts
// Send a share of recipients through BroadNet; the rest stay on your
// current provider. BROADNET_SHARE is a percentage (0-100) you control.
const BROADNET_SHARE = Number(process.env.BROADNET_SHARE ?? "0");

// Same recipient -> same bucket, so OTP retries stay on one provider.
function bucket(to: string): number {
  let h = 0;
  for (const c of to) h = (h * 31 + c.charCodeAt(0)) >>> 0;
  return h % 100;
}

export async function sendSms(to: string, text: string, senderId: string) {
  if (bucket(to) < BROADNET_SHARE) return sendViaBroadNet(to, text, senderId);
  return sendViaCurrentProvider(to, text, senderId); // your existing code
}

async function sendViaBroadNet(to: string, text: string, senderId: string) {
  const res = await fetch("https://api.broadnet.me/sms/sendSms", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.BROADNET_TOKEN}`,
      "Content-Type": "application/json",
    },
    // Use UNICODE for non-GSM text; POST /sms/identify tells you which.
    body: JSON.stringify({ senderId, destinationNumber: to, message: text, messageType: "TEXT" }),
  });
  if (!res.ok) throw new Error(`BroadNet send failed: ${res.status}`);
  return { provider: "broadnet", messageId: await res.text() };
}

زيادة حركة الرسائل على مراحل

انقل حجم الإنتاج إلى BroadNet على مراحل تختارها، دولةً تلو الأخرى أو حالة استخدام تلو الأخرى. ابقَ في كل مرحلة حتى تتطابق إيصالات التسليم مع ما أرسلته، ثم انتقل إلى المرحلة التالية.

  1. الاختبار

    أرقامك الموثقة فقط. تأكد من معرّف المُرسِل، ونص الرسالة، وإيصالات التسليم.

  2. 5%

    نسبة صغيرة من حركة الرسائل الحقيقية. حركة رسائل OTP إلى دولة واحدة تُعيد إيصالات تسليم سريعة وواضحة.

  3. 25%

    حجم كافٍ لمقارنة معدلات التسليم وأوقات الاستلام مع مزود الخدمة الحالي.

  4. 100%

    كل حركة الرسائل لهذا البلد أو لحالة الاستخدام هذه. يبقى مزودك الحالي فعالاً حتى تتطابق إيصالات التسليم مع ما أرسلته.

كم من الوقت يستغرق ذلك

زيادة حركة الرسائل تستغرق الوقت الذي تختاره. عملية الإعداد تتم وفق مسار واحد: نرد على طلب الوصول التجريبي خلال يوم عمل واحد، ويستغرق التكامل التقني من يومين إلى خمسة أيام عمل، بينما يستغرق التحقق من المسار مع الموافقة على معرّف المُرسِل من ثلاثة إلى عشرة أيام عمل. في معظم الأسواق، ينتقل النظام من مرحلة الاكتشاف إلى مرحلة التشغيل الفعلي في غضون 5 إلى 15 يوم عمل؛ أما في الأسواق التي تستغرق فيها الجهات التنظيمية وقتًا أطول للموافقة على معرّفات المُرسِلين، فيستغرق الأمر وقتًا أطول. اطلع على خطوات الإعداد

العودة إلى مزودك الحالي دون انقطاع

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

  • احتفظ ببيانات اعتماد مزود الخدمة الحالي، وتسجيلات معرّف المُرسِل، ونقطة نهاية webhook نشطة حتى يتم نقل جميع حركة الرسائل وتتطابق إيصالات التسليم مع ما أرسلته.
  • قبل البدء، اتفقوا على ما الذي يؤدي إلى التراجع، على سبيل المثال انخفاض في نسبة الرسائل التي يتم تسليمها في بلد واحد، ومن يُسمح له باتخاذ القرار.
  • أبقِ معالج webhook قيد التشغيل بعد عملية التراجع: لا يزال من الممكن وصول إيصالات التسليم للرسائل التي تم إرسالها بالفعل عبر BroadNet.
  • لا تقم بإلغاء المسار القديم إلا بعد أن تسير جميع حركة الرسائل بسلاسة عبر BroadNet وتتطابق إيصالات التسليم مع ما أرسلته.

من المسؤول عن ماذا؟

تؤثر عملية الترحيل على الكود البرمجي، وتسجيلات المرسلين، وحركة البيانات المباشرة. هكذا يتم تقسيم العمل.

مهمةفريقكBroadNet
تعيين الحقول وتغييرات التعليمات البرمجيةقم بإجراء التغييرات البرمجية وتحكم في مفتاح التوجيه.يقوم مهندس الترحيل الخاص بك بربط حمولاتك الحالية ومعرّفات المُرسِلين والإيصالات بواجهة برمجة API BroadNet.
بيانات الاعتمادقم بتخزين رمز الوصول بشكل آمن واحتفظ به بعيدًا عن نظام التحكم في المصدر.يقوم بإصدار رمز الوصول، وبالنسبة لبروتوكول SMPP، بيانات اعتماد تسجيل الدخول.
تسجيل معرّف المُرسِلقم بتزويد كل جهة تنظيمية بالوثائق المطلوبة من الشركة.تقدّم طلبات التسجيل لمساراتها وتتابع كل طلب حتى الموافقة عليه.
التحقق من صحة المسارتأكد من نتائج الاختبار على أرقام هواتفك الخاصة.يتم اختبار التسليم في كل سوق قبل بدء الإنتاج الفعلي.
زيادة حركة الرسائل والتراجعحدد كل خطوة، وما الذي يؤدي إلى التراجع، ومن يقرر ذلك.يمكن التواصل مع مهندس ترحيل مخصّص طوال فترة التشغيل المتوازي والانتقال.
التسليم بعد قبول BroadNet للرسالةراقب إيصالات التسليم في أنظمتك الخاصة.توجّه كل رسالة من منصتها إلى المشغّل وتبلغ عن إيصال التسليم.
حوادث الإنتاجأبلغ عنها عبر developers@broadnet.me.دعم هندسي على مدار الساعة طوال أيام الأسبوع لحسابات الإنتاج، مع استجابة خلال 15 دقيقة لحوادث الأولوية P1.
إيقاف المسار القديمأغلق حسابك لدى مزود الخدمة السابق.تؤكد تسوية معرّفات المُرسِلين والإنتاجية وإيصالات التسليم قبل أن تغلقه.

الوثائق ذات الصلة

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

هل يجب عليّ إعادة كتابة التكامل الخاص بي للانتقال إلى BroadNet؟

عادةً لا. تغيّر المضيف وترويسة المصادقة وبعض أسماء الحقول: يصبح حقل المرسل senderId، وحقل المستلم destinationNumber، وحقل النص message. أما تكاملات SMPP فتوجّه اتصال bind الحالي إلى BroadNet ببيانات اعتماد جديدة.

هل يمكنني الاحتفاظ بمعرّفات المُرسِلين الخاصة بي؟

نعم عموماً، رهناً بقواعد التسجيل الخاصة بكل مشغّل وهيئة تنظيمية. تُقدّم طلبات التسجيل على مسارات BroadNet قبل بدء التشغيل: في الإمارات العربية المتحدة بموجب قواعد TDRA، وفي المملكة العربية السعودية بموافقة CST والمشغّل.

كم تستغرق عملية الترحيل؟

تستغرق معظم الأسواق من مرحلة الاكتشاف إلى مرحلة التشغيل الفعلي من 5 إلى 15 يوم عمل؛ أما الأسواق التي تستغرق فيها الجهات التنظيمية وقتاً أطول للموافقة على معرّفات المُرسِلين، فتستغرق وقتاً أطول. ويستغرق ازدياد حركة البيانات بعد ذلك المدة التي تختارها.

ماذا يحدث إذا انخفضت معدلات التوصيل بينما أزيد من حركة الرسائل؟

خفّض نسبة حركة الرسائل المرسلة عبر BroadNet إلى آخر خطوة نجحت، أو إلى الصفر. مزودك الحالي ما زال يعمل، لذا تستمر حركة الرسائل. ثم راجع إيصالات التسليم الخاصة بالبلد المتأثر مع مهندس الترحيل قبل المحاولة مرة أخرى.

هل هناك رسوم مقابل خدمات دعم الترحيل؟

لا. دعم الترحيل ونافذة التشغيل المتوازي مُضمّنان في حسابك. أنت تدفع فقط مقابل الرسائل التي ترسلها.

اطلب وصولاً تجريبياً · نرد خلال يوم عمل واحد

احصل على بيانات الاعتماد، وأرسل رسائل اختبار إلى رقمك الموثّق، وطابِق تكاملك الحالي مع مهندس اتصالات من BroadNet قبل نقل أي حركة إنتاجية.