قوالب الخدمة

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

تُحتسب رسائل الخدمة كما تُحتسب رسائل التحقق، وتخضع للضوابط نفسها — التحقق من الرصيد، ومهلة إعادة الإرسال لكل رقم، ومفتاح منع التكرار.


إرسال رسائل الخدمة

الخطوات

  1. أنشئ قالب خدمة من قسم "قوالب الخدمة" في لوحة التحكم، محدّدًا الترويسة والمحتوى وأي متغيّرات مثل {{1}}.
  2. انتظر موافقة واتساب على القالب — يمكنك متابعة الحالة في جدول القوالب.
  3. بمجرد أن تصبح الحالة Approved، استدعِ Endpoint أدناه باستخدام معرّف القالب وقيم متغيّراته.

Endpoint

Endpoint:

POSThttps://api.lightotp.com/SendUtilityMessage
البندالقيمة
الطريقة (Method)POST
المسار (Path)/SendUtilityMessage
Content-Typeapplication/json
المصادقةHeader X-Api-Key
حالة النجاح200 OK

المصادقة

يجب أن يتضمّن كل طلب مفتاح API الخاص بك في ترويسة X-Api-Key. يمكنك إنشاء مفاتيح API وإدارتها من قسم "مفاتيح API" في لوحة التحكم.

حافظ على سرية مفتاح API. لا تكشفه أبدًا في الشيفرة التي تعمل على المتصفح أو في المستودعات العامة — تعامل معه كأنه كلمة مرور.

Headers

Headerإلزاميةالوصف
X-Api-Keyنعممفتاح API الخاص بك.
Content-Typeنعميجب أن يكون application/json.
Accept-Languageلالغة رسائل الأخطاء (en أو ar).

Body

مثال على الـ Body:

{
  "templateId": "f5b2d2e9-2c1f-4f1d-9c89-2c41f3d9a4e2",
  "toPhoneE164": "+966551234567",
  "headerParameter": "Ahmad",
  "bodyParameters": ["#4021", "March 5"],
  "idempotencyKey": "a3f1c2e4-9b27-4d6a-8e5f-1c2b3d4e5f60"
}
الحقلالنوعإلزاميالوصف
templateIdstring (uuid)نعممعرّف قالب الخدمة المعتمد الخاص بك.
toPhoneE164stringنعمرقم هاتف المستلم بصيغة E.164، مثل +966551234567.
headerParameterstringشرطيمطلوب فقط عندما تحتوي ترويسة القالب على متغيّر؛ وإلا فاحذفه.
bodyParametersstring[]شرطيقيمة واحدة لكل متغيّر في المحتوى، بالترتيب. يجب أن تطابق عدد المتغيّرات في محتوى القالب.
idempotencyKeystring (uuid)لامفتاح فريد لإعادة المحاولة بأمان دون إرسال الرسالة مرتين.

المتغيّرات والمعاملات

قد تحتوي القوالب على متغيّرات مرقّمة مثل {{1}} و{{2}}. تُدخل قيمها عند الإرسال:

  • يملأ headerParameter المتغيّر الوحيد الذي قد تحتويه الترويسة. أرسله فقط عندما تحتوي الترويسة على متغيّر فعليًا، وإلا فسيُرفض الطلب.
  • bodyParameters مصفوفة مرتّبة: العنصر الأول يحل محل {{1}}، والثاني يحل محل {{2}}، وهكذا. يجب أن يطابق طولها عدد متغيّرات المحتوى تمامًا.

استجابة النجاح — 200 OK

200 OK

{
  "id": "f5b2d2e9-2c1f-4f1d-9c89-2c41f3d9a4e2",
  "messageStatus": "Sent"
}
الحقلالنوعالوصف
idstring (uuid)معرّف الرسالة المنشأة. استخدمه للتحقق من حالة التسليم.
messageStatusstringالحالة الأولية للرسالة.

حالة الرسالة

الحالةالمعنى
Pendingمقبولة وفي قائمة انتظار الإرسال.
Sentتم تسليمها إلى واتساب.
Deliveredتم توصيلها إلى جهاز المستلم.
Readفتحها المستلم.
Failedتعذّر توصيلها.

الأخطاء

تُعاد الأخطاء مع رمز حالة HTTP المطابق ورمز خطأ قابل للقراءة آليًا في جسم الاستجابة.

شكل الخطأ

{
  "errorMessage": "BodyParameterCountMismatch"
}

رموز الأخطاء

الرمزHTTPالمعنى
ApiKeyIsRequired400ترويسة X-Api-Key مفقودة.
ApiKeyNotFound404لا يوجد مفتاح API يطابق القيمة المُدخلة.
ApiKeyExpired400انتهت صلاحية مفتاح API.
TemplateIdIsRequired400لم يتم تقديم templateId.
DestinationPhoneNumberIsRequired400لم يتم تقديم toPhoneE164.
TemplateNotFound404لا يوجد قالب يطابق templateId المُدخل.
ThisTemplateIsForAnotherClient400القالب لا يخص حسابك.
TemplateIsNotUtility400القالب ليس قالب خدمة.
TemplateIsRejected400تم رفض القالب من قِبل واتساب ولا يمكن استخدامه.
TemplateIsNotApproved400لم تتم الموافقة على القالب بعد (قيد المراجعة أو موقوف أو معطّل).
HeaderParameterIsRequired400تحتوي ترويسة القالب على متغيّر لكن لم يتم تقديم headerParameter.
HeaderParameterNotAllowed400تم تقديم headerParameter لكن ترويسة القالب لا تحتوي على متغيّر.
BodyParameterCountMismatch400عدد bodyParameters لا يطابق متغيّرات القالب.
InsufficientBalance400لا يملك اشتراكك رصيدًا كافيًا لإرسال الرسالة.
SenderNumberNotFound404لا يوجد رقم مُرسِل مُخصّص لحسابك. تواصل مع دعم LightOTP لتخصيص رقم مُرسِل لك.
رسالة المهلة400حاولت مراسلة الرقم نفسه مجددًا بسرعة كبيرة؛ انتظر انتهاء المهلة.

الفوترة والرصيد

تستهلك رسائل الخدمة الرصيد تمامًا مثل رسائل التحقق:

  • تكلّف كل رسالة نقاطًا بحسب تسعير بلد الوجهة.
  • لا تُحتسب رسوم على عمليات الإرسال الفاشلة.
  • يُوسم اشتراكك بأنه منتهٍ عند وصول رصيده إلى الصفر.
  • يُرسَل بريد تحذيري عند انخفاض رصيدك.

مثال (cURL)

cURL

curl -X POST "https://api.lightotp.com/SendUtilityMessage" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Accept-Language: en" \
  -d '{
    "templateId": "f5b2d2e9-2c1f-4f1d-9c89-2c41f3d9a4e2",
    "toPhoneE164": "+966551234567",
    "headerParameter": "Ahmad",
    "bodyParameters": ["#4021", "March 5"],
    "idempotencyKey": "a3f1c2e4-9b27-4d6a-8e5f-1c2b3d4e5f60"
  }'