Виправте кампанію без створення нової реєстрації
Використовуйте цей маршрут, щоб змінити опис наявної кампанії, приклади повідомлень, пояснення отримання згоди або підтримувані характеристики вмісту. Збережіть ідентифікатор кампанії та її поточний бренд і сценарій використання. Нова реєстрація не є механізмом повторної спроби виправлення наявної кампанії.
Пройдіть автентифікацію за допомогою ввімкненого облікового запису API через HTTPS з дозволеної вихідної IP-адреси. Доступна лише кампанія, що належить цьому обліковому запису. Перш ніж готувати зміни, зчитайте її поточний стан; кампанії, термін дії яких минув, не можна оновлювати за цією процедурою.
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Виберіть поля, які справді змінилися
Підготуйте файл campaign-update.json із підтримуваними змінами. Поточний портал надсилає лише змінені поля кампанії та не надсилає brandId, usecase, campaignId або інформацію про статус, що міститься лише у відповіді. Прямі оновлення через API також використовують об’єкт JSON з полями, а не обгортку changes/version порталу.
| Поля | Що надати |
|---|---|
| description, messageFlow | Точний опис послуги та пояснення того, як люди надають згоду, отримують повідомлення й відкликають згоду. Кожне поле допускає 40–4096 символів. |
| sample1–sample5 | Реалістичні приклади для цієї кампанії, по 20–1024 символи в кожному непорожньому прикладі. Збережіть кількість прикладів, яку вимагає сценарій використання, що пройшов кваліфікацію; не надсилайте повідомлення, які не стосуються кампанії. |
| helpMessage, optinMessage, optoutMessage | Відповідні відповіді для одержувачів, довжиною до 1024 символів. Якщо це обов’язково, дотримуйтеся мінімуму в 20 символів і пояснюйте фактичну послугу. Перш ніж очищати поле, перегляньте поточні вимоги щодо згоди. |
| optinKeywords, optoutKeywords, helpKeywords | Ключові слова, розділені комами без пробілів, загальною довжиною до 255 символів. Узгоджуйте відповіді з фактичною обробкою ключових слів. |
| privacyPolicyLink, termsAndConditionsLink | Відповідні загальнодоступні URL-адреси довжиною до 2048 символів, що описують фактичні практики цієї послуги. |
| embeddedLinkSample | Типове посилання, яке міститиметься в повідомленнях, довжиною до 255 символів. |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | Фактичні характеристики кампанії як логічні значення JSON. Щоб вимкнути характеристику, використовуйте false, а не рядок "false". |
| autoRenewal | Публічна схема API підтримує це логічне значення JSON, хоча звичайний редактор вмісту кампанії на порталі не надає до нього доступу. Вимкнення продовження не скасовує наявного мінімального зобов’язання й не анулює вже належних до сплати сум. |
| resellerId | Схема також дає змогу пов’язати кампанію з реселером. Ця можливість не входить до звичайної форми виправлення вмісту на порталі. Не використовуйте це поле для перенесення кампанії між клієнтами й не припускайте, що API налаштує послугу оператора зв’язку для іншого реселера. |
Схема оновлення не передбачає зміни полів brandId, usecase, subscriberOptin, subscriberOptout або subscriberHelp. Не копіюйте повне тіло запиту на створення кампанії до запиту на оновлення. Зверніться до поточної кваліфікації під час перевірки вимог до повідомлень.
Надішліть конкретне виправлення
Цей приклад ілюструє послугу нагадувань про заплановані зустрічі. Перш ніж використовувати його, адаптуйте до фактичної послуги кампанії та процесу отримання згоди.
{
"description": "Appointment reminders requested by customers of the registered business.",
"sample1": "Example business: Your requested appointment reminder is ready. Reply STOP to opt out."
}curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
--request PUT \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign-update.json \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Для повторення того самого запланованого надсилання зберігайте той самий ключ і точні байти методу, шляху, параметрів запиту та тіла. Змінений вміст потребує окремо перевіреного запиту; не змінюйте ключі навмання після перевищення часу очікування. Завершений запит може повторно повернути кешовану помилку, а дублікат запиту, який ще обробляється, може повернути 409 із Retry-After.
Повторно зчитайте кампанію
Відповідь HTTP 200 повертає безпосередньо об’єкт кампанії у форматі JSON. Перевірте campaignId, потім зчитайте ту саму кампанію методом GET і порівняйте потрібні поля. Успішне збереження саме по собі не запитує повторної перевірки оператором зв’язку, не змінює призначення номерів, не активує надсилання й не надсилає повідомлення.
Портал перевіряє версію форми перед збереженням і повторно зчитує кампанію після нього. Публічна кінцева точка PUT не перевіряє відповідність цій версії порталу: узгоджуйте одночасні зміни. Ключ ідемпотентності не виявляє оновлення, внесеного іншим редактором.
Якщо портал показує неврегульовану відмову за результатами перевірки, спочатку виправте вміст, а потім скористайтеся окремою дією запиту на перевірку, коли вона доступна. Ця дія перевіряє поточну кампанію в робочому середовищі та стан спільного доступу. Саме лише збереження вмісту не запускає цю дію, а наявність ідентифікатора кампанії не підтверджує її схвалення.
Звичайні оновлення кампанії методом PUT у поточному сервісі не спричиняють окремого списання за реєстрацію кампанії. Наявні щомісячні платежі, мінімальні зобов’язання, плата за оренду номерів і використання повідомлень залишаються чинними. Поточні налаштовані тарифи кампаній див. у розділі плата за кампанії.
Дії за наявності обмежень і невизначених результатів
У разі HTTP 400 прочитайте помилку конкретного поля та перевірте довжини, текст згоди й стан кампанії. У разі 401, 403 або 404 перевірте облікові дані API, дозволену вихідну IP-адресу та належність кампанії обліковому запису. У разі 429 дотримуйтеся Retry-After. У разі 500, 502 або перерваного запиту збережіть ідентифікатор кампанії та будь-який requestId, а потім перевірте й узгодьте наявний запис перед повторним надсиланням.
Локальний знімок залежить від повернутого тіла відповіді. Непорожня часткова відповідь може не містити попередніх полів, зокрема метаданих продовження; порожня відповідь може залишити застарілі значення. Перевірте повний результат GET, а не вважайте сам факт успіху доказом збереження кожного поля. Повідомляйте службу підтримки про неврегульовані розбіжності. Цей маршрут не оновлює призначення операторів зв’язку атомарно й не надає загальної дії відновлення для активації послуги оператора зв’язку.