Разработчикам

PUT/tcr/v2/campaign/{campaignId}

Обновление кампании обмена сообщениями

Измените содержимое кампании, проверьте сохранённый результат и явно указывайте запросы на проверку и решения о продлении.

На этой странице
  1. Исправьте кампанию без повторной регистрации
  2. Выберите только те поля, которые действительно изменились
  3. Отправьте конкретные исправления
  4. Получите данные кампании повторно
  5. Учитывайте ограничения и неопределённые результаты

Исправьте кампанию без повторной регистрации

Используйте этот маршрут для изменения описания существующей кампании, примеров сообщений, пояснения о получении согласия или поддерживаемых характеристик содержимого. Сохраните идентификатор кампании, её текущий бренд и сценарий использования. Новая регистрация не служит способом повторной попытки исправления существующей кампании.

Пройдите аутентификацию с помощью активной учётной записи 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, а не считайте один лишь успешный статус доказательством сохранения всех полей. Сообщите о неустранённых расхождениях в службу поддержки. Этот маршрут не выполняет атомарное обновление привязок к операторам и не предоставляет универсального действия для восстановления активации у оператора.