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

- الرابط الأساسي: https://www.broadnet.me/ar/developers/migrate
- اللغة: ar
- آخر تحديث: 2026-10-21
- الناشر: BroadNet (https://www.broadnet.me)
- نسخة Markdown من الصفحة، مولّدة من الصفحة المعروضة.

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

يأخذ هذا الدليل المفاهيم التي يستخدمها مزود الخدمة الحالي (إرسال رسالة، والمرسل، وإيصالات التسليم، وإشعارات الحالة عبر 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 وسنرد عليك خلال يوم عمل واحد. |
| المصادقة | معرّف الحساب والسر عبر المصادقة الأساسية، أو رأس مفتاح API | `Authorization: Bearer <token>` رمز وصول واحد لكل حساب. |
| أرسل رسالة واحدة | طلب HTTP POST إلى نقطة نهاية الرسائل | `POST /sms/sendSms` نص الطلب بصيغة JSON. |
| مرسل | `from`، `sender`، `originator` | `senderId` معرّف مُرسِل أبجدي رقمي أو رقم، مسجل لكل دولة. |
| متلقي | `to`، `destination`، `msisdn` | `destinationNumber` التنسيق الدولي، كما هو الحال في مثال المواصفات `447700900101`. |
| نص الرسالة | `body`، `text`، `content` | `message` نص الرسالة، تمامًا كما سيراه المستلم. |
| ترميز الأحرف وأجزاء الرسالة | يتم حسابها بواسطة المزود، أو يتم إرجاعها من خلال استدعاء واجهة برمجة API منفصلة | `messageType` `TEXT` (GSM-7) أو `UNICODE`. `POST /sms/identify` تُرجع `messageType` و `charCount` و `smsParts` و `charLimit` قبل الإرسال. |
| إرسال مُجدول | حقل `send_at` أو حقل وقت الجدولة | `isSchedule · gmt · time` اترك هذه الحقول فارغة لإرسال الرسالة فوراً. |
| معرف الرسالة | حقل المعرف في استجابة JSON | `200 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 OpenAPI. قم بتنزيلها وتحقق من مطابقة بياناتك معها قبل كتابة التعليمات البرمجية. [افتح مواصفات OpenAPI](https://www.broadnet.me/developers/openapi.yaml)

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

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

1. 1 قم بإدراج كل معرّف مُرسِل، والدول التي يرسل إليها، ونوع حركة الرسائل التي يحملها: OTP، أو المعاملات، أو التسويق.
2. 2 تحقق من قواعد كل دولة. في الإمارات العربية المتحدة تُسجَّل معرّفات المُرسِلين وفق قواعد TDRA عبر المشغّل، بمعرّف واحد لكل كيان قانوني لكل حالة استخدام. أما في المملكة العربية السعودية فيتطلب الأمر موافقة CST والمشغّل، ويرتبط المرسلون الأجانب عبر مجمّع محلي مرخّص من CST.
3. 3 يقوم مهندس الترحيل الخاص بك بتقديم طلبات التسجيل لمسارات BroadNet، ويتابع فريق الامتثال في BroadNet كل طلب حتى الموافقة عليه.
4. 4 ابدأ التشغيل الموازي في أي بلد فقط بعد الموافقة على معرّف المُرسِل فيه بالنسبة لمسارات BroadNet. وحتى ذلك الحين، استمر في الإرسال عبر مزود الخدمة الحالي.

توجد قواعد كل سوق في صفحات اللوائح. [لوائح رسائل SMS حسب البلد](https://www.broadnet.me/ar/regulations)

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

أبقِ مزود الخدمة الحالي لديك فعالاً، وأضف 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 يوم عمل؛ أما في الأسواق التي تستغرق فيها الجهات التنظيمية وقتًا أطول للموافقة على معرّفات المُرسِلين، فيستغرق الأمر وقتًا أطول. [اطلع على خطوات الإعداد](https://www.broadnet.me/ar/onboarding)

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

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

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

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

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

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

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

[الانتقال إلى BroadNet لماذا تنتقل الفرق إلى BroadNet، وخطة الانتقال المكونة من أربع خطوات.](https://www.broadnet.me/ar/switch) [مرجع واجهة API مصادقة Bearer، والإرسال الفردي والجماعي، والبحث عن الأرقام، والأخطاء.](https://www.broadnet.me/ar/developers/api) [Webhooks يتم إرسال حالة التسليم إلى عنوان URL webhook في حسابك.](https://www.broadnet.me/ar/developers/webhooks)

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

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

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

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

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

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

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

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

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

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

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

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

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

[اطلب وصولاً تجريبياً](https://www.broadnet.me/ar/signup) [لماذا تنتقل الفرق إلى BroadNet](https://www.broadnet.me/ar/switch)
