# استدعاء BroadNet من Python (REST)

> لا توجد حزمة SDK للغة Python: استدعِ واجهة REST API مباشرة باستخدام requests. أرسل جسم JSON إلى /sms/sendSms مع رمز Bearer، أو ولّد عميلًا محدد الأنواع من مواصفة OpenAPI 3.1 باستخدام openapi-generator.

- الرابط الأساسي: https://www.broadnet.me/ar/developers/python
- اللغة: ar
- آخر تحديث: 2026-10-21
- الناشر: BroadNet (https://www.broadnet.me)

استدعِ BroadNet REST API من Python باستخدام مكتبة requests أو httpx. لا توجد حزمة BroadNet للغة Python: حزمة SDK الرسمية الوحيدة مخصّصة لـ TypeScript وNode.js فقط. إذا أردت عميل Python بأنواع محددة، فأنشئه من مواصفات OpenAPI باستخدام openapi-generator؛ وإلا فإن استدعاءات HTTP البسيطة أدناه تكفي.

> **احتفظ برابط URL الأساسي في الإعدادات** تستدعي النماذج https://api.broadnet.me. اقرأ رابط URL الأساسي ورمز الوصول (BROADNET_TOKEN) من متغيرات البيئة، وليس من الكود. تصلك بيانات اعتماد الاختبار، ومعها وجهة إرسال حركة الاختبار، مع وصولك التجريبي: اطلبه عبر /signup وسنرد عليك خلال يوم عمل واحد.

## معالجة الأخطاء

تُعيد الأخطاء رمز حالة HTTP وجسم JSON لاستجابة الاستثناء (status, error, message, errorCode, requestUri). تقوم الدالة resp.raise_for_status() بتحويلها إلى استثناءات. أعد المحاولة فقط عند أخطاء الشبكة واستجابات 5xx، مع تأخير تدريجي (backoff)؛ فبمجرد أن يُعيد الاستدعاء معرّف رسالة يكون الإرسال قد قُبل، لذا لا تُعِد إرساله دون تحقق.

## متطلبات

أي إصدار مدعوم من Python 3. يستخدم المثال المتزامن requests، بينما يستخدم المثال غير المتزامن httpx؛ قم بتثبيت المكتبة التي تستخدمها.

## أمثلة

### terminal

```bash
pip install requests httpx
```

مكتبات HTTP الأساسية. لا حاجة لحزمة BroadNet.

### send.py

```python
import os, requests

r = requests.post(
    "https://api.broadnet.me/sms/sendSms",
    headers={"Authorization": f"Bearer {os.environ['BROADNET_TOKEN']}"},
    json={
        "senderId": "BroadNet",
        "destinationNumber": "447700900123",
        "message": "Your verification code is 482913",
        "messageType": "TEXT",
    },
)

print(r.status_code, r.text)  # message ID
```

200 OK · نص الاستجابة هو معرف الرسالة.

### async.py

```python
import asyncio
import os

import httpx

URL = "https://api.broadnet.me/sms/sendSms"
HEADERS = {"Authorization": f"Bearer {os.environ['BROADNET_TOKEN']}"}

async def send(client: httpx.AsyncClient, number: str, text: str) -> str:
    resp = await client.post(
        URL,
        headers=HEADERS,
        json={
            "senderId": "BroadNet",
            "destinationNumber": number,
            "message": text,
            "messageType": "TEXT",
        },
    )
    resp.raise_for_status()
    return resp.text  # message ID

async def main() -> None:
    recipients = ["447700900123", "447700900124", "447700900125"]
    async with httpx.AsyncClient(timeout=10) as client:
        ids = await asyncio.gather(
            *(send(client, n, "Your code is 482913") for n in recipients)
        )
    print(ids)

if __name__ == "__main__":
    asyncio.run(main())
```

بالنسبة للقوائم الكبيرة، استخدم POST /sms/sendbulk مع تحميل ملف بدلاً من عمليات الإرسال الفردية المتعددة.

### terminal

```bash
# Optional: generate a typed Python client from the OpenAPI spec
curl -O https://www.broadnet.me/developers/openapi.yaml
npx @openapitools/openapi-generator-cli generate \
  -i openapi.yaml -g python -o broadnet-python
```

## ذو صلة

- [مرجع واجهة برمجة التطبيقات](https://www.broadnet.me/ar/developers/api-reference)
- [التشغيل السريع](https://www.broadnet.me/ar/developers/quickstart)
- [خطافات الويب (Webhooks)](https://www.broadnet.me/ar/developers/webhooks)
