BroadNet
دليل المطورين · واجهة برمجة API REST·OpenAPI 3.1

مرجع BroadNet API.

API REST واحدة لرسائل SMS، WhatsApp، RCS، وتليجرام، والبريد الإلكتروني، وماسنجر، وإنستجرام، والإشعارات الفورية. يتم إرسال كل طلب عبر HTTPS ويتم التحقق من صحته باستخدام رمز Bearer. لكل قناة مجموعة مسارات خاصة بها، ويتم وصف API بالكامل في مواصفات OpenAPI 3.1 القابلة للتنزيل. تغطي هذه الصفحة المكالمات التي تبدأ بها معظم عمليات التكامل، بدءًا من رسالة SMS واحدة.

قراءة لمدة 12 دقيقة·تم التحديث في سبتمبر 2026مركز المطورين

نظرة عامة

API BroadNet هي واجهة REST API عبر HTTPS. يتم المصادقة باستخدام رمز Bearer، ثم إرسال طلب JSON أو multipart إلى نقطة نهاية القناة، واستلام معرّف الرسالة أو ملخص الدفعة. يتم إرسال حالة التسليم إلى عنوان URL الخاص بخطاف الويب المُكوّن في حسابك. تم نشر API الكاملة، التي تضم 329 مسارًا و376 عملية عبر ثماني قنوات، كمواصفة OpenAPI 3.1. تستخدم الأمثلة في هذه الصفحة curl و Node.js و Python و Java و C# و Go و Ruby وحزمة تطوير البرامج الرسمية TypeScript SDK.

البيئات

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

بيئةعنوان URL الأساسي
إنتاجhttps://api.broadnet.me

المصادقة

يحمل كل طلب رمز الوصول الخاص بك في ترويسة HTTP. يُصدر هذا الرمز لكل حساب على حدة، ويأتي من حساب BroadNet الخاص بك. تقرأ الأمثلة في هذه الصفحة الرمز من متغير بيئي يُسمى BROADNET_TOKEN.

HTTP
Authorization: Bearer $BROADNET_TOKEN

في حال كان الرمز المميز مفقودًا أو غير صالح، يُجيب API HTTP 401 مع نص خطأ JSON بالتنسيق القياسي الموضح أدناه. لا يوجد أي استدعاء يستبدل اسم المستخدم وكلمة المرور بالرمز المميز.

أرسل رسالة SMS

أرسل رسالة SMS واحدة تحتوي على نص بتنسيق JSON. الحقول الأربعة المطلوبة هي: المرسل، والمستلم، والنص، والترميز.

POSThttps://api.broadnet.me/sms/sendSms

الحقول المطلوبة

الحقلنوع البياناتوصف
senderIdstringمعرّف المُرسِل المعتمد الخاص بك، والذي يظهر للمستلم كمرسل.
destinationNumberstringرقم المستلم مع رمز البلد، أرقام فقط، بدون علامة زائد.
messagestringنص الرسالة.
messageTypestringالترميز: TEXT لنصوص GSM-7، وUNICODE للغة العربية والرموز التعبيرية والنصوص الأخرى.

الحقول الاختيارية

الحقلنوع البياناتوصف
charCountintegerعدد الأحرف، كما تم إرجاعه بواسطة /sms/identify.
smsPartsintegerعدد المقاطع، كما تم إرجاعه بواسطة /sms/identify.
charLimitintegerعدد الأحرف في كل مقطع، كما تم إرجاعه بواسطة /sms/identify.
expiryHourintegerمدة الصلاحية بالساعات.
isSchedulebooleanاضبطه على true لجدولة الرسالة بدلاً من إرسالها الآن.
delaynumberمهلة التأخير قبل الإرسال.
gmtstringإزاحة التوقيت عن GMT المستخدمة في الجدولة.
time—وقت الإرسال المجدول (مع isSchedule).
repeat—إعداد التكرار للإرسالات المجدولة.
peIdstringمعرف الكيان الرئيسي، حيثما تطلب جهة تنظيمية ذلك.
templateIdstringمعرف القالب المسجل، حيثما تطلبه جهة تنظيمية.
telemarketerIdstringمعرف المسوق عبر الهاتف، حيثما يشترط ذلك من قبل جهة تنظيمية.
campaignNamestringتسمية تختارها لأغراض التقارير.
curl
curl -X POST https://api.broadnet.me/sms/sendSms \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "senderId": "BroadNet",
    "destinationNumber": "447700900123",
    "message": "Your verification code is 482913",
    "messageType": "TEXT"
  }'

# 200 OK → response body is the message ID, e.g. 2603121407537573731
Node.js 18+ · fetch
// Node.js 18+ (fetch)
const res = await fetch("https://api.broadnet.me/sms/sendSms", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BROADNET_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    senderId: "BroadNet",
    destinationNumber: "447700900123",
    message: "Your verification code is 482913",
    messageType: "TEXT",
  }),
});

console.log(await res.text()); // message ID
Python · requests
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
Java 11+ · java.net.http
// Java 11+ — java.net.http is built in, nothing to install
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class SendSms {
    public static void main(String[] args) throws Exception {
        String json = "{"
            + "\"senderId\": \"BroadNet\", "
            + "\"destinationNumber\": \"447700900123\", "
            + "\"message\": \"Your verification code is 482913\", "
            + "\"messageType\": \"TEXT\""
            + "}";

        HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.broadnet.me/sms/sendSms"))
            .header("Authorization", "Bearer " + System.getenv("BROADNET_TOKEN"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpResponse<String> res = HttpClient.newHttpClient()
            .send(req, HttpResponse.BodyHandlers.ofString());

        System.out.println(res.statusCode() + " " + res.body()); // 200 + message ID
    }
}
C# · .NET 6+ HttpClient
// .NET 6+ console app (Program.cs) — HttpClient is built in, no NuGet package
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Http.Json;

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
    "Bearer", Environment.GetEnvironmentVariable("BROADNET_TOKEN"));

// PostAsJsonAsync sends Content-Type: application/json
var res = await http.PostAsJsonAsync("https://api.broadnet.me/sms/sendSms", new
{
    senderId = "BroadNet",
    destinationNumber = "447700900123",
    message = "Your verification code is 482913",
    messageType = "TEXT",
});

var id = await res.Content.ReadAsStringAsync();
Console.WriteLine($"{(int)res.StatusCode} {id}"); // 200 + message ID
Go · net/http
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	body := []byte(`{
		"senderId": "BroadNet",
		"destinationNumber": "447700900123",
		"message": "Your verification code is 482913",
		"messageType": "TEXT"
	}`)

	req, err := http.NewRequest(http.MethodPost, "https://api.broadnet.me/sms/sendSms", bytes.NewReader(body))
	if err != nil {
		panic(err)
	}
	req.Header.Set("Authorization", "Bearer "+os.Getenv("BROADNET_TOKEN"))
	req.Header.Set("Content-Type", "application/json")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	id, _ := io.ReadAll(res.Body)
	fmt.Println(res.StatusCode, string(id)) // 200 + message ID
}
Ruby · Net::HTTP
require "net/http"
require "json"

uri = URI("https://api.broadnet.me/sms/sendSms")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer #{ENV.fetch('BROADNET_TOKEN')}"
req["Content-Type"]  = "application/json"
req.body = {
  senderId:          "BroadNet",
  destinationNumber: "447700900123",
  message:           "Your verification code is 482913",
  messageType:       "TEXT"
}.to_json

res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
puts "#{res.code} #{res.body}" # 200 + message ID
TypeScript SDK · @broadnet/cpaas-sdk
// npm install @broadnet/cpaas-sdk axios
import { Configuration, SMSSMSApi } from "@broadnet/cpaas-sdk";

const sms = new SMSSMSApi(
  new Configuration({
    basePath: "https://api.broadnet.me",
    accessToken: process.env.BROADNET_TOKEN!,
  }),
);

const res = await sms.smsSendsmsPost({
  sMSSmsRequest: {
    senderId: "BroadNet",
    destinationNumber: "447700900123",
    message: "Your verification code is 482913",
    messageType: "TEXT",
  },
});

console.log(res.data); // message ID

يؤدي الاتصال الناجح إلى إرجاع HTTP 200 ومعرف الرسالة كنص الاستجابة، بدون غلاف JSON :

200 OK
HTTP/1.1 200 OK

2603121407537573731

الترميز والمقاطع

يُحدد الحقل messageType الترميز، ويُحدد الترميز عدد الأحرف التي يتسع لها مقطع SMS الواحد. تُقسّم الرسائل الطويلة إلى مقاطع ويُعاد تجميعها على الهاتف.

messageTypeرسالة SMS واحدةلكل مقطع (رسالة طويلة)يستخدم لـ
TEXT160153أحرف GSM-7 فقط.
UNICODE7067أي نص آخر: العربية، السيريلية، الرموز التعبيرية، الأحرف المُشكّلة خارج نطاق GSM-7.

لست متأكدًا من الترميز الذي يجب استخدامه؟ استشر API. تقوم نقطة النهاية "identify" بتحليل الرسالة وإرجاع ترميزها، وعدد الأحرف، وعدد المقاطع، وعدد الأحرف في كل مقطع، والتي يمكنك تمريرها مباشرةً إلى طلب الإرسال.

curl · /sms/identify
curl -X POST https://api.broadnet.me/sms/identify \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "message": "Your verification code is 482913" }'
200 OK
{
  "message": "Your verification code is 482913",
  "messageType": "TEXT",
  "smscount": 1,
  "charCount": 32,
  "charLimit": 160
}

جرب ذلك بدون كتابة أي كود في عداد أحرف رسائل SMS.

تنسيقات أرقام الهواتف

أرقام الوجهة هي رمز الدولة متبوعًا بالرقم الوطني، بالأرقام فقط. لا تُضف علامة زائد في البداية، أو بادئة 00، أو مسافات، أو شرطات، أو أقواس.

مثالنتيجةلماذا
447700900123صالحرمز الدولة 44 بالإضافة إلى الرقم الوطني، أرقام فقط.
+44 7700 900123يرفضيحتوي على علامة زائد ومسافات. قم بإزالتها أولاً.
07700900123يرفضتنسيق وطني يبدأ بصفر ولا يحتوي على رمز الدولة.

الرسائل النصية الجماعية

لإرسال رسالة واحدة إلى عدة مستلمين، حمّل ملفًا من الأرقام في طلب متعدد الأجزاء. يتكون الطلب من جزأين: الأول، destinationNumberFile، وهو ملف CSV أو TXT يحتوي على أرقام. أما الثاني، bulkRequest، فهو سلسلة JSON تتضمن اسم المرسل، والنص، والترميز، واسم الحملة.

POSThttps://api.broadnet.me/sms/sendbulk
curl · /sms/sendbulk
curl -X POST https://api.broadnet.me/sms/sendbulk \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -F destinationNumberFile=@recipients.csv \
  -F 'bulkRequest={"senderId":"BroadNet","message":"Your statement is ready","messageType":"TEXT","campaignName":"statements"}'
200 OK
{
  "status": "success",
  "bulkSessionId": "1_20260228105000887",
  "credits": "9966465.42850",
  "deductcredits": "0.60000",
  "bulkListInfo": {
    "total": 4,
    "validCount": 3,
    "invalidCount": 0,
    "duplicate": 1
  }
}

يُظهر لك كائن bulkListInfo عدد الأرقام المقبولة، وعدد الأرقام غير الصالحة، وعدد الأرقام المكررة. بمجرد تشغيل المهمة، يمكنك إدارتها باستخدام معرّف الدفعة الخاص بها.

طريقة HTTPمسار نقطة النهايةوصف
GET/sms/listاعرض مهام الإرسال الجماعي مع عدد الرسائل المُعالجة والمعلّقة.
GET/sms/pause?batch_Id=…إيقاف مؤقت لمهمة قيد التشغيل.
GET/sms/resume?batch_Id=…استئناف مهمة متوقفة مؤقتًا.
DELETE/sms/abort?batch_Id=…إلغاء المهمة؛ لن يتم إرسال الرسائل المعلقة.
POST/sms/resendإعادة إرسال الرسائل من مهمة سابقة.
POST/sms/send-nowإطلاق مهمة مجدولة للإرسال فورًا.
POST/sms/auto-scheduleجدولة مهمة جماعية تلقائيًا.
curl · batch control
# List your bulk jobs (each entry's id is the batch_Id below)
curl https://api.broadnet.me/sms/list \
  -H "Authorization: Bearer $BROADNET_TOKEN"

# Pause, then resume, a running job
curl "https://api.broadnet.me/sms/pause?batch_Id=1024" \
  -H "Authorization: Bearer $BROADNET_TOKEN"
curl "https://api.broadnet.me/sms/resume?batch_Id=1024" \
  -H "Authorization: Bearer $BROADNET_TOKEN"

البحث عن رقم

تحقق من حالة الرقم (HLR و MNP) قبل إرساله، على سبيل المثال لتنظيف قائمة أو لمعالجة الأرقام المنقولة. مرر الرقم كمعامل استعلام destinationNumber. يحدد المعامل الاختياري reqType نوع البحث.

POSThttps://api.broadnet.me/sms/lookup
curl · /sms/lookup
curl -X POST "https://api.broadnet.me/sms/lookup?destinationNumber=447700900123" \
  -H "Authorization: Bearer $BROADNET_TOKEN"

حالة التسليم

يتم إرسال حالة التسليم إلى عنوان URL الخاص بخطاف الويب المُكوّن على حساب BroadNet الخاص بك مع انتقال كل رسالة خلال دورة حياتها. وتتبع حالات الرسائل دورة الحياة التالية:

  • SUBMITTED · تم قبول الطلب من قبل BroadNet ووضعه في قائمة الانتظار للشبكة.
  • SENT · يتم تسليمها إلى المشغّل أو القناة.
  • DELIVERED · تم التأكد من ذلك على الهاتف.
  • READ · يتم فتحها من قبل المستلم، على قنوات يتم الإبلاغ عن قراءتها، مثل WhatsApp.
  • FAILED / REJECTED · لم يتم التسليم.

يمكنك أيضًا الاستعلام الدوري عن الحالة (polling). بالنسبة إلى WhatsApp، تُعيد نقطة النهاية bulk-insights حالة كل مُستلم في الدفعة. أما مهام SMS الجماعية، فتُعيد نقطة النهاية list عدد الرسائل المُعالجة والمعلقة.

أخطاء

يتم رفض رمز Bearer المفقود أو غير الصالح عند بوابة API قبل وصول الطلب إلى API. تُعيد البوابة HTTP 401 مع نص JSON يحتوي على حقلين: error وmessage.

401 Unauthorized
{
  "error": "Unauthorized",
  "message": "Missing Authorization token"
}

تُعيد الأخطاء التي يُثيرها API نفسها، مثل خطأ التحقق 400، نص JSON يُسمى ExceptionResponse، يحتوي على خمسة حقول: status و error و message و errorCode و requestUri. القيم أدناه عناصر نائبة للتوضيح.

400 · ExceptionResponse
{
  "status": 400,
  "error": "Bad Request",
  "message": "…",
  "errorCode": "…",
  "requestUri": "/sms/sendSms"
}
حالةمعنى
200نجاح.
400طلب غير صالح: خطأ في التحقق من الصحة أو حقل مطلوب مفقود.
401رمز Bearer مفقود أو غير صالح.
403الرمز المميز صالح ولكن لا يُسمح له باستدعاء هذه العملية.
500خطأ غير متوقع في الخادم. أعد المحاولة لاحقًا بتأخير تدريجي (backoff).

أعد المحاولة فقط في حالة حدوث أخطاء في الشبكة أو تلقي استجابات من نوع 5xx، مع تطبيق آلية التراجع الأسي. أصلح أخطاء 4xx بدلاً من إعادة محاولة معالجتها. إذا كان حسابك مرتبطًا أيضًا عبر SMPP، فإن عمليات الإرسال هناك تُعيد رموز حالة SMPP القياسية، والمُدرجة في دليل بروتوكول SMPP.

قنوات مراسلة أخرى

يُستخدم نفس الرمز المميز وعنوان URL الأساسي لكل قناة. هذه هي نقاط الإرسال؛ وتوثّق مواصفات OpenAPI حقولها ونقاط الإدارة المرتبطة بها (القوالب، جهات الاتصال، التقارير).

قناة المراسلةطريقة HTTPمسار نقطة النهايةوصف
SMSPOST/sms/sendSmsرسالة واحدة (JSON).
SMSPOST/sms/sendbulkإرسال جماعي من ملف (multipart).
WhatsAppPOST/whatsapp/message/sendbulkنص، وسائط، قوالب، تفاعلي (متعدد الأجزاء).
RCSPOST/rcs/message/sendbulkرسائل RCS (متعددة الأجزاء).
TelegramPOST/telegram-sms/sendرسائل تيليجرام.
EmailPOST/email/email-service/sendبريد إلكتروني يتضمن الموضوع، والنص، والمستلمين.
MessengerPOST/messenger/message/sendbulkرسائل فيسبوك ماسنجر (متعددة الأجزاء).
InstagramPOST/instagram/message/sendbulkرسائل إنستغرام (متعددة الأجزاء).
PushPOST/push/message/sendإشعارات الدفع (JSON).

نموذج إرسال WhatsApp، على سبيل المثال:

curl · /whatsapp/message/sendbulk
curl -X POST https://api.broadnet.me/whatsapp/message/sendbulk \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -F batchId=0 \
  -F campaignName=order-updates \
  -F destinationNo=447700900123 \
  -F messageType=TEMPLATE \
  -F templateName=order_update \
  -F templateLanguage=en_US \
  -F bodyTemplateVariables=INV-400

عيّن قيمة batchId إلى 0 لبدء دفعة جديدة. يقبل حقل destinationNo عدة أرقام مفصولة بفواصل. تحتوي الاستجابة على معرّف الدفعة الذي تستخدمه لقراءة حالة كل مستلم.

SDK TypeScript

تنشر BroadNet SDK رسمية واحدة، لـ TypeScript و Node.js : @broadnet/cpaas-sdk متوفر على npm. تم إنشاؤه من مواصفات BroadNet OpenAPI، ويأتي مزودًا بوحدات CommonJS وES مع تعريفات كاملة للأنواع، ويحتوي على ميزة فئة API واحدة لكل قناة. اعتماديته الوحيدة وقت التشغيل هي axios، ويثبّتها npm معه.

terminal
npm install @broadnet/cpaas-sdk axios
TypeScript · WhatsApp
import { Configuration, WhatsAppWhatsAppMessagingAPIApi } from "@broadnet/cpaas-sdk";

const wa = new WhatsAppWhatsAppMessagingAPIApi(
  new Configuration({
    basePath: "https://api.broadnet.me",
    accessToken: process.env.BROADNET_TOKEN!,
  }),
);

const res = await wa.whatsappMessageSendbulkPost({
  campaignName: "order-updates",
  messageType: "TEXT",
  destinationNo: "447700900123",
  content: "Your order has shipped.",
});

console.log(res.data); // batchId + per-file acceptance counts

بالنسبة لأي لغة أخرى، قم باستدعاء API REST مباشرة (أمثلة Node.js و Python و Java و C# و Go و Ruby المذكورة أعلاه لا تستخدم مكتبة BroadNet) أو قم بإنشاء عميل من مواصفات OpenAPI.

مواصفات OpenAPI

تم وصف API بالكامل في ملف واحد من OpenAPI 3.1: 329 مسارًا و376 عملية عبر ثماني قنوات. هذه نسخة عامة من المواصفات مع حذف الأمثلة الداخلية. يمكنك استيرادها إلى Postman أو Insomnia، أو استعراضها في واجهة Swagger UI، أو إنشاء عميل.

terminal
curl -O https://www.broadnet.me/developers/openapi.yaml

# Generate a client in any language, e.g. Python
npx @openapitools/openapi-generator-cli generate \
  -i openapi.yaml -g python -o broadnet-python

هل تفضل استخدام Postman؟ استورد المواصفات للحصول على كل عملية، أو ابدأ بمجموعة صغيرة من الاستدعاءات الأساسية.

API HTTP القديمة (/websmpp)

قد تستخدم الحسابات التي تم إنشاؤها على منصة BroadNet الخاصة ببروتوكول SMPP API HTTP القديمة ضمن المسار /websmpp. وهي تعمل باستمرار مع عمليات التكامل الحالية، وموثقة في مواصفات OpenAPI. وتستقبل هذه الواجهة بيانات الاعتماد كمعاملات طلب (اسم المستخدم وكلمة المرور، أو مفتاح الوصول) بدلاً من رمز Bearer. أما عمليات التكامل الجديدة، فينبغي أن تستخدم API REST الموضحة أعلاه.

طريقة HTTPمسار نقطة النهايةوصف
GET/websmpp/websmsأرسل رسالة SMS. أضف schtime وgmt لجدولتها.user, pass (or accesskey), sid, mno, type, text, schtime, gmt
POST/websmpp/json/smsأرسل باستخدام كائن حملة JSON الذي يحمل بيانات الاعتماد والمرسل والأرقام والنص.campaign { username, password, sender, gsm, text, type }
GET/websmpp/websmsstatusحالة الرسالة المُرسلة، حسب معرّف الاستجابة الخاص بها.respid, format
POST/websmpp/api/dlrreportتقرير التسليم لفترة زمنية محددة، بصيغة جدول بيانات.username, pass, from_date, to_date
GET/websmpp/hlr/lookupالبحث عن رقم واحد في HLR.username, password, destination
curl · legacy
# Legacy HTTP API — credentials as query parameters (existing integrations only)
curl "https://api.broadnet.me/websmpp/websms?user=USERNAME&pass=PASSWORD&sid=BroadNet&mno=447700900123&type=1&text=Hello"

# Status of a submitted message
curl "https://api.broadnet.me/websmpp/websmsstatus?respid=MESSAGE_ID&format=json"

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

كيف أقوم بالمصادقة؟

أرسل رمز الوصول الخاص بك في ترويسة Authorization: Bearer مع كل طلب. يأتي الرمز من حسابك BroadNet؛ ولا توجد عملية إنشاء رموز في API. يتم رفض الرمز المميز المفقود أو غير الصالح عند بوابة API باستخدام HTTP 401 وجسم JSON يحتوي على حقلين، error وmessage. احتفظ بالرمز في متغير بيئي أو مدير أسرار، ولا تقم أبدًا بتضمينه في نظام التحكم بالمصادر أو في كود جانب العميل.

ما هو عنوان URL الأساسي؟

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

كيف يمكنني إرسال نص عربي أو نص آخر بتنسيق يونيكود؟

اضبط messageType على UNICODE. واستخدم TEXT فقط عندما تكون كل الأحرف من أبجدية GSM-7. وإذا لم تكن متأكدًا، فاستدعِ POST /sms/identify مع الرسالة: فهو يُعيد messageType، وعدد الأحرف، وعدد المقاطع، وعدد الأحرف في كل مقطع.

ماذا يُرجع الإرسال الناجح؟

يُعيد POST /sms/sendSms الرمز HTTP 200 ومعرّف الرسالة في جسم الاستجابة. أما الإرسال الجماعي فيُعيد كائن JSON يحتوي على status وbulkSessionId وcredits وdeductcredits وbulkListInfo.

كيف يمكنني إرسال رسالة SMS إلى العديد من المستلمين؟

استخدم POST /sms/sendbulk مع تحميل متعدد الأجزاء: حيث يمثل destinationNumberFile ملف CSV أو TXT يحتوي على أرقام، بينما يمثل bulkRequest سلسلة JSON تتضمن senderId وmessage وmessageType وcampaignName. يمكن بعد ذلك عرض المهام أو إيقافها مؤقتًا أو استئنافها أو إلغاؤها باستخدام معرّف الدفعة.

كيف يمكنني معرفة حالة التسليم؟

يتم إرسال حالة التسليم إلى عنوان URL الخاص بخطاف الويب المُعدّ في حسابك. بالنسبة WhatsApp، يمكن أيضًا قراءة حالة كل مُستلم من خلال الرابط /whatsapp/message/bulk-insights.

هل يوجد SDK؟

نعم، واحدة: SDK الرسمية لـ TypeScript / Node.js، @broadnet/cpaas-sdk على npm، والمُنشأة من مواصفات BroadNet OpenAPI. لأي لغة أخرى، يُمكنك استدعاء API REST مباشرةً أو إنشاء عميل من مواصفات OpenAPI 3.1 الموجودة في /developers/openapi.yaml.

ما هي API /websmpp؟

API HTTP القديمة، المستخدمة حاليًا لعمليات التكامل القائمة من عصر SMPP. وهي تقبل بيانات الاعتماد كمعاملات طلب. أما عمليات التكامل الجديدة، فينبغي أن تستخدم API REST الخاصة برمز Bearer الموضحة في هذه الصفحة.

ابدأ الإرسال

هل أنت مستعد لإرسال أول رسالة SMS؟