Кваліфікуйте бренд перед реєстрацією його кампанії
Кампанія 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 | Ваші відповідні публічні URL-адреси політики та умов, коли застосовно, до 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.
Поточний портал зазначає тримісячне мінімальне зобов’язання для неполітичних промислових кампаній. Перегляньте застосовні умови та вибір поновлення перед підтвердженням. Реєстрація, оренда номера, додаткова перевірка та використання повідомлень — це окремі плати. Успішна відповідь про створення сама по собі не доводить, що кожен крок виставлення рахунків або активації в оператора завершено.
Обробляйте помилки валідації та часткові збої
Читайте HTTP status і повернутий JSON. Помилки валідації можуть бути масивами об’єктів code/description; локальні збої натомість можуть бути об’єктами з message, status і, для деяких помилок обробки, requestId.
| Результат HTTP | Наступна дія |
|---|---|
| 400 | Виправте конкретні поля або ключ ідемпотентності. Перечитайте поточну кваліфікацію, необхідну кількість зразків і вимоги до потоків одержувачів. |
| 401, 403 або 404 | Перевірте облікові дані API та дозволений вихідний IP, потім володіння брендом/реселером і дозволи. Не використовуйте ідентифікатори з іншого облікового запису. |
| 402 | Перегляньте фінансування промислового середовища та дозвіл на покупку, перш ніж повторювати те саме задумане створення. |
| 409 | Розрізняйте повторне відтворення виконуваного запиту та змінений запит із тим самим ключем. Зберігайте наявну кампанію та деталі запиту під час перевірки фактичного стану й усунення розбіжностей. |
| 429 або обмежувач недоступний | Дотримуйтеся Retry-After, коли він присутній, і зберігайте початковий ключ і точний запит. |
| 500 або 502 | Створення вже могло відбутися. Збережіть будь-які campaignId і requestId, перевірте наявну кампанію та продовжте її активацію або перевірте її фактичний стан і усуньте розбіжності, а не створюйте дублікат. |