أهّل العلامة التجارية قبل تسجيل حملتها
تصف حملة 10DLC الرسائل التي يعتزم نشاط تجاري مسجل إرسالها، وكيف يوافق المستلمون، وكيف يمكنهم الحصول على المساعدة أو إيقاف الرسائل. يُنشئ هذا الـ API سجل السجل؛ ويُعد إكمال تفعيل الناقل للإنتاج خطوة إعداد حساب منفصلة. استخدم علامة تجارية مملوكة من تسجيل العلامة التجارية، ثم حمّل لعلامتك حالات الاستخدام المتاحة ولحالة الاستخدام المحددة المتطلبات الحالية.
استخدم نتيجة التأهيل الحالية لاختيار حالات الاستخدام الفرعية ومعرفات الشبكات المؤهلة وعينات الرسائل وإعلانات الاشتراك/إلغاء الاشتراك/المساعدة. قد تختلف المتطلبات حسب العلامة التجارية والشبكة. لا ترسل معرفات المثال ولا تنسخ وصف الموافقة الخاص به لنشاط تجاري ذي عملية مختلفة.
افصل بين بيئة الاختبار وبيئة الإنتاج
لتمرين في بيئة الاختبار، استخدم علامتك التجارية الوهمية الخاصة وحالة استخدام حالية تتأهل لها. استخدم TRIAL فقط عندما يوفره ذلك التأهيل. تتحقق البوابة من تطابق بيئة العلامة التجارية المحددة وبيئة الحملة. لا يشغّل طلب API المباشر التحقق الكامل لمعالج البوابة نيابة عنك، لذا حافظ على هذا الفصل في تكاملك.
إنشاء حملة الإنتاج قابل للفوترة ولا يجعل الرقم جاهزا للإرسال تلقائيا. حافظ على اتساق بيئة الحملة مع علامتها التجارية، وراجع الرسم والشروط المنطبقة قبل إنشاء حملة فعلية.
أرسل JSON الحملة
أعدّ campaign.json بقيمك المؤهلة. يعني R000000 عدم وجود بائع؛ فلا تستخدمه إلا عندما يكون ذلك هو الإعداد المقصود. للإعداد المعتاد لبائع MultiTEL، احصل على معرف بائع MultiTEL LLC المسموح به من مجموعة البائعين في حسابك أو من تدفق الإعداد في البوابة بدلا من تثبيت معرف شخص آخر.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'يوضح JSON التالي حملة تجريبية لعلامة تجارية وهمية مملوكة. استبدل العلامة التجارية وحالة الاستخدام والبائع ونص الموافقة بالقيم التي تتأهل فعلا لاختبارك.
{
"brandId": "B123ABC",
"channelId": "10DLC",
"usecase": "TRIAL",
"subUsecases": [],
"resellerId": "R000000",
"description": "Trial account notices requested by users of the example application.",
"messageFlow": "Test users explicitly select an unchecked consent box before requesting these trial notices.",
"sample1": "Example application: your requested account notice is available. Reply STOP to stop notices.",
"subscriberOptin": true,
"optinKeywords": "START",
"optinMessage": "You are subscribed to the example application's requested account notices.",
"subscriberOptout": true,
"optoutKeywords": "STOP",
"optoutMessage": "You will no longer receive the example application's account notices.",
"subscriberHelp": true,
"helpKeywords": "HELP",
"helpMessage": "For help with example account notices, contact support@example.invalid.",
"embeddedLink": false,
"embeddedPhone": false,
"numberPool": false,
"ageGated": false,
"directLending": false,
"termsAndConditions": true,
"autoRenewal": false,
"mnoIds": [],
"referenceId": "your-trial-reference"
}اضبط termsAndConditions على true فقط بعد أن يراجع الشخص المخول الشروط المنطبقة ويقبلها. المثال ليس موافقة نيابة عنك. استخدم قيم JSON المنطقية للأعلام، وليس سلاسل مقتبسة.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign.json \
'https://api.multitel.net/tcr/v2/campaignBuilder'حقول الحملة والمتطلبات المشروطة
| الحقول | ما يجب تقديمه |
|---|---|
| brandId, channelId, usecase | علامتك التجارية المملوكة، والقناة 10DLC، ورمز حالة استخدام حالي مؤهل. استخدم الرموز من التأهيل، وليس التسميات المترجمة. |
| subUsecases | مصفوفة من رموز حالات الاستخدام الفرعية المؤهلة. احترم الحد الأدنى والحد الأقصى للعدد في التأهيل المحدد. |
| resellerId | معرف بائع مسموح به. يقبل المسار المملوك للحساب البائعين المملوكين أو بائعه المشترك المهيأ أو قيمة عدم وجود بائع المقصودة. ويُرفض البائع غير المرتبط. |
| description, messageFlow | صف الغرض الفعلي وكيفية جمع الموافقة. يجب أن يحتوي كل منهما على 40–4096 حرفا. اذكر إجراء المستخدم أو النموذج أو العملية الحقيقية؛ ولا تخترع موافقة لا يجمعها تطبيقك. |
| sample1 … sample5 | رسائل تمثيلية، عادة 20–1024 حرفا لكل منها. تتطلب البوابة واحدة على الأقل؛ وقد تتطلب الشبكات المؤهلة المزيد. قدم العدد الذي يتطلبه التأهيل الحالي. |
| subscriberOptin, subscriberOptout, subscriberHelp | أعلن عن تدفقات المستلمين المدعومة باستخدام أسماء الحقول هذه بالضبط. عندما يكون التدفق ممكّنا، قدم حقلي الكلمة الأساسية والرسالة الخاصين به. وقد تجعل متطلبات الشبكة تدفقات معينة إلزامية. |
| optinKeywords, optoutKeywords, helpKeywords | الكلمات الأساسية المعترف بها فعليا، حتى 255 حرفا. يجب أن تطابق سلوك التطبيق المستقبل. |
| optinMessage, optoutMessage, helpMessage | الرسائل المقابلة. تحدد قواعد الحقول المنشورة الحالية 20–1024 حرفا. اذكر سلوك الدعم وإلغاء الاشتراك الحقيقي. |
| embeddedLink, embeddedPhone, embeddedLinkSample | أعلن عن الروابط أو أرقام الهواتف المضمنة بصدق. وقد تحظرها حتى شبكة تستوفي شروط التأهيل الأخرى. وتسمح عينة الرابط بما يصل إلى 255 حرفا. |
| mnoIds | مصفوفة اختيارية من معرفات الشبكات الرقمية المؤهلة من التأهيل. لا تفترض أن كل شبكة تدعم حالة الاستخدام المحددة. |
| numberPool, ageGated, directLending | خصائص الحملة المنطبقة كقيم JSON منطقية. اخترها وفقا للخدمة الفعلية. |
| privacyPolicyLink, termsAndConditionsLink | روابط سياسة الخصوصية والشروط العامة ذات الصلة عند الانطباق، حتى 2048 حرفا لكل منها. يجب أن تصف خدمة المراسلة الفعلية. |
| termsAndConditions | قبول صريح لشروط الحملة المنطبقة. تتطلب البوابة true كما يجمع معالجها التأكيدات الفردية الحالية. |
| autoRenewal | ما إذا كانت الحملة تتجدد. القيمة الافتراضية هي true. ولا يؤدي تعطيل التجديد إلى إزالة حد أدنى من الالتزام مرتبط بالفعل بحملة إنتاج. |
| referenceId, tag | مرجع حملتك، حتى 50 حرفا، والعلامات الاختيارية. referenceId ليس ترويسة Idempotency-Key. |
يحتوي المخطط المنشور على بعض عدم الاتساق في الأحرف الكبيرة في الجداول الوصفية. يستخدم طلب البوابة الحالي subscriberOptin وsubscriberOptout كما هو موضح أعلاه. حافظ على حالة الأحرف هذه بالضبط. يغطي هذا الدليل سير عمل 10DLC الموجه للمستأجرين؛ ولا تستنتج أن الحقول المطلوبة أو خطوات التفعيل لقناة مختلفة هي نفسها.
أعد المحاولة للطلب المقصود نفسه بأمان
استخدم Idempotency-Key واحدا لهذا الإنشاء المقصود. المفتاح من 1–128 حرف ASCII قابلا للطباعة دون مسافات ومرتبط بحساب المالك. أبق طريقة HTTP والمسار وسلسلة الاستعلام وبايتات جسم الطلب الدقيقة دون تغيير عند إعادة المحاولة. ويتعارض ملف JSON المعاد تنسيقه حتى لو كانت قيمه متكافئة.
قد يعيد التكرار قيد التنفيذ HTTP 409 مع Retry-After؛ وقد تعيد الطلبات المكتملة استجابتها المخزنة. ولا يثبت الخطأ المخزن مؤقتا أن السجل لم ينشئ شيئا. احفظ campaignId وrequestId وأي ترويسات ارتباط، وافحص الحملة الموجودة وتحقق من الحالة الفعلية وعالج التناقضات الناجمة عن الفشل الجزئي قبل التفكير في مفتاح جديد.
معرف الحملة ليس هو الإعداد النهائي للإرسال
تستخدم الاستجابة حالة HTTP وJSON مباشرا. عند نجاح الإنشاء، احتفظ بـ campaignId واقرأ حالته الحالية:
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"يشارك سير عمل الإنتاج الحالي في البوابة أيضا الحملة مع ناقل المراسلة ويحمّل العلامة التجارية/الحملة في حساب الإرسال. وهذه عمليات منفصلة عن استدعاء الإنشاء العام هذا. وقد توجد حملة في السجل حتى لو فشلت خطوة مشاركة أو تحميل لاحقة لدى الناقل.
استخدم سير عمل إنشاء الإنتاج المتكامل في البوابة عندما تحتاج إلى تسلسل التسجيل والمشاركة والتحميل لدى الناقل معا. وبالنسبة لحملة إنتاج أنشأها هذا الـ API مباشرة بالفعل، احتفظ بمعرف حملتها وسوّ إعداد الناقل للحساب عبر الدعم. لا تعرض واجهة العميل الحالية زر استئناف عاما لكل حملة إنتاج منشأة مباشرة. ولا تنشئ تسجيلا آخر لإعادة محاولة تفعيلها. وتأكد من أن الحملة نشطة وأن إعداد الناقل قد اكتمل قبل تعيين رقم إرسال. ويجب أن يكون الرقم مملوكا ونشطا وممكّنا لـ SMS أيضا. ولا يؤدي إنشاء الحملة إلى إرسال رسائل.
رسوم حملات الإنتاج
| حالة الاستخدام | الرسم الشهري |
|---|---|
| LOW_VOLUME, UCAAS_LOW | $1.67 |
| SOLE_PROPRIETOR | $2.23 |
| CHARITY | $3.34 |
| EMERGENCY | $5.56 |
| AGENTS_FRANCHISES | $33.34 |
| حالات الاستخدام الاحتياطية المهيأة الأخرى | $11.12 |
تم التحقق من مبالغ التجزئة هذه مقابل إعداد البوابة الحالي في 24 أكتوبر 2026. أكّد حالة الاستخدام المؤهلة الحالية والسعر المعروض قبل تقديم طلب إنتاج. فـ monthlyFee في استجابة تأهيل السجل ليس تلقائيا سعر تجزئة MultiTEL الخاص بك.
تنص البوابة الحالية على حد أدنى من الالتزام لمدة ثلاثة أشهر لحملات الإنتاج غير السياسية. راجع الشروط المنطبقة وخيار التجديد قبل التأكيد. ويُعد التسجيل واستئجار الرقم والتدقيق الإضافي واستخدام الرسائل رسوما منفصلة. ولا تثبت استجابة الإنشاء الناجحة وحدها أن كل خطوات الفوترة أو تفعيل الناقل قد اكتملت.
معالجة أخطاء التحقق والفشل الجزئي
اقرأ status الخاص بـ HTTP وJSON المعاد. وقد تكون أخطاء التحقق مصفوفات من كائنات code/description؛ وقد تكون الأخطاء المحلية بدلا من ذلك كائنات تحتوي على message وstatus، ولبعض أخطاء المعالجة requestId.
| نتيجة HTTP | الإجراء التالي |
|---|---|
| 400 | صحح الحقول المحددة أو مفتاح عدم التكرار. وأعد قراءة التأهيل الحالي وعدد العينات المطلوب ومتطلبات تدفق المستلمين. |
| 401, 403 أو 404 | تحقق من بيانات اعتماد API وعنوان IP المصدر المسموح به، ثم من ملكية العلامة التجارية/البائع والأذونات. ولا تستخدم معرفات من حساب آخر. |
| 402 | راجع تمويل الإنتاج وإذن الشراء قبل إعادة محاولة الإنشاء المقصود نفسه. |
| 409 | ميّز بين إعادة التشغيل قيد التنفيذ والطلب المغيّر الذي يستخدم المفتاح نفسه. واحتفظ بالحملة الموجودة وتفاصيل الطلب عند التسوية. |
| 429 أو المحدد غير متاح | احترم Retry-After عند وجوده واحتفظ بالمفتاح الأصلي والطلب الدقيق. |
| 500 أو 502 | ربما حدث الإنشاء بالفعل. احفظ أي campaignId وrequestId، وتحقق من الحملة الموجودة، واستأنف تفعيلها أو سوّه بدلا من إنشاء نسخة مكررة. |