Skip to main content

Что это такое

Шаблоны WhatsApp — это предварительно одобренные структуры сообщений, используемые для начала или продолжения диалогов за пределами окна обслуживания клиентов. Шаблон идентифицируется по WABA, имени и языку. Используйте это руководство для управления жизненным циклом API и поддержания стабильности рабочих шаблонов между командами, версиями и локалями.

Перед началом работы

  • Подключите WABA, которой будет принадлежать шаблон.
  • Выберите категорию шаблона, поддерживаемый язык, имя и компоненты.
  • Подготовьте репрезентативные примеры переменных и медиафайлов, необходимые для проверки.
  • Соблюдайте правила Meta для аутентификационного, сервисного (utility) и маркетингового контента.
  • Настройте конечную точку Webhook, способную принимать события whatsapp.template.reviewed.

Как это работает

  1. Создайте шаблон в WABA.
  2. Сохраните его имя, язык, категорию и текущий status.
  3. Дождитесь одобрения, если требуется проверка.
  4. Получайте данные шаблона или список шаблонов для отслеживания изменений статуса.
  5. Отправляйте только те шаблоны, которые подходят для целевого сценария использования и находятся в статусе, допускающем отправку.
  6. Редактируйте или удаляйте шаблон при изменении его контента или жизненного цикла.
Редактирование полностью заменяет существующее содержимое шаблона. Включайте каждый компонент, который должен остаться после редактирования.

Запрос

POST /whatsapp/templates
Имена шаблонов должны быть стабильными идентификаторами приложения. Используйте переменные только в позициях, поддерживаемых выбранным компонентом.

Ответ

Ответ подтверждает создание шаблона и его текущее состояние. PENDING не означает, что шаблон уже можно отправлять.

Определение стабильного идентификатора ресурса

Рассматривайте каждую комбинацию WABA, имени шаблона и языка как единый ресурс. Ведите реестр ресурсов с указанием владельца wabaId, постоянного имени, точного кода локали, назначения, владельца, контракта переменных, текущего статуса API, состояния развертывания и версии для замены. Используйте предсказуемые имена, например <domain>_<purpose>_v<major>:
  • auth_login_otp_v1
  • orders_pickup_ready_v2
  • growth_summer_offer_v3
Увеличивайте мажорную версию, если изменение затрагивает позиции переменных, типы компонентов, кнопки, категорию или смысл сообщения. Не привязывайте имена к названиям команд и датам.

Выбор категории перед написанием контента

Выбирайте категорию исходя из причины, по которой клиент получает сообщение. Если шаблон объединяет транзакционную информацию с рекламой, оформите его как маркетинговый или разделите цели на отдельные шаблоны.

Фиксация контракта переменных

Определите переменные как контракт API до того, как копирайтеры или переводчики приступят к работе. Для каждой переменной зафиксируйте ее позицию, смысловое значение, формат, источник, репрезентативный пример и поведение по умолчанию (fallback). Например, Order {{0}} is ready at {{1}}. может использовать следующий контракт: Сохраняйте значение каждой позиции неизменным в разных версиях и локалях. Создайте новую версию, если вам необходимо изменить порядок или назначение переменных. Перед отправкой:
  • Предоставьте безопасный репрезентативный образец для каждой переменной в тексте сообщения (body) или текстовом заголовке.
  • Проверьте URL-адреса, форматы и размеры файлов медиазаголовков.
  • Используйте не более одной переменной в текстовом заголовке и укажите ее образец.
  • Убедитесь, что переменные в кнопках-ссылках (URL) используются только там, где это разрешено API, и приложите полный образец URL.
  • Никогда не используйте учетные данные, одноразовые коды, персональные данные или приватные медиафайлы в примерах для проверки.

Организация локалей в рамках одного релиза

Повторно используйте одно и то же версионированное имя для всех локалей в одном релизе, но управляйте каждой парой name и language как отдельным ресурсом. Сохраняйте согласованность значений переменных и действий кнопок, даже если порядок слов меняется. Утверждайте и выпускайте каждую локаль независимо. Никогда не перенаправляйте пользователя на другой язык только потому, что эта локаль уже одобрена. Используйте точный, чувствительный к регистру код локали в запросах на создание, получение, редактирование, удаление и отправку.

Ограничение отправки по статусу шаблона

Используйте получение данных или Webhook-уведомления whatsapp.template.reviewed для обработки одобрения, отклонения, приостановки, отключения, архивации и других изменений жизненного цикла. Сохраняйте точное имя и язык, используемые в запросах сообщений. Храните API-status отдельно от состояния развертывания. Направляйте рабочие отправки только на тот шаблон, чей текущий статус — APPROVED, а состояние развертывания — активное. Успешный ответ на создание или редактирование не дает разрешения на отправку в рабочей среде.

Синхронизация состояния

Используйте Webhook для оперативных обновлений, а API получения или списков — для сверки данных:
  1. Проверяйте подпись каждого события whatsapp.template.reviewed.
  2. Дедуплицируйте доставку по id события.
  3. Идентифицируйте ресурс по wabaId, name и language.
  4. Сохраняйте как событие обновления, так и текущий status.
  5. Немедленно прекращайте маршрутизацию, если текущий статус отличается от APPROVED.
  6. Запрашивайте шаблон, если событие пропущено, задержано или конфликтует с более новым состоянием реестра.
  7. Выполняйте регулярную постраничную сверку списков для выявления расхождений.
Не используйте Webhook как единственный источник данных о шаблонах и не опрашивайте API перед каждым сообщением.

Особенности редактирования и удаления

  • Редактируйте только шаблоны в статусе, поддерживаемом эндпоинтом.
  • Включайте полный желаемый набор компонентов в запрос на редактирование.
  • Удаление по имени удаляет все языковые версии с этим именем.
  • Удаление по имени и языку удаляет только указанную локализацию шаблона.
  • Архивированные шаблоны могут по-прежнему отображаться в результатах списков и запросов.

Релиз, откат и вывод версий из эксплуатации

Для существенных изменений предпочтительнее создавать параллельную версию:
  1. Создайте новое имя с версией для каждой необходимой локали. Оставьте текущую одобренную версию без изменений.
  2. Дождитесь, пока каждая целевая локаль получит статус APPROVED, затем проверьте ее переменные, медиафайлы, кнопки, категорию и отображаемый контент.
  3. Направьте контролируемую часть подходящих отправок на новую версию и отслеживайте доставку, качество, ответы и обновления статуса.
  4. Переводите оставшийся трафик только после того, как новая версия будет соответствовать вашим критериям развертывания.
Выполните откат, переключив маршрутизацию на предыдущие одобренные имя и язык. Не используйте экстренное редактирование в качестве отката. Выводите предыдущую версию из эксплуатации только после того, как очереди, кампании, конфигурации, тесты и окна отката перестанут на нее ссылаться.

Ограничения и устранение неполадок

  • Запрос на отправку завершается с ошибкой, если шаблон не одобрен или его компоненты не соответствуют параметрам сообщения.
  • Шаблоны аутентификации используют строго ограниченные предустановленные структуры.
  • Категория и контент шаблона должны соответствовать политикам Meta.
  • Ознакомьтесь с подробностями отклонения перед повторным созданием того же контента.
  • Используйте новое имя, если удаленный или существенно измененный шаблон нельзя безопасно восстановить.

Чек-лист перед запуском

  • Имя, назначение, владелец, категория и версия зафиксированы.
  • Каждая переменная имеет одно значение, формат, безопасный пример и правило резервного значения.
  • Медиафайлы и кнопки проходят проверку формата, целевых ссылок и примеров.
  • Каждая требуемая локаль независимо переведена в статус APPROVED.
  • Маршрут отправки отклоняет любой статус, кроме APPROVED.
  • Обработка Webhook проверена, идемпотентна и синхронизирована с получением данных через API.
  • Процесс развертывания позволяет восстановить предыдущую одобренную версию.
  • Очереди, кампании, конфигурации, тесты и регламенты используют нужную версию.

Поддерживаемые языки

Выберите точный код языка и региональной локали для шаблона.

Примеры создания шаблонов

Адаптируйте шаблоны аутентификации, маркетинга, служебных уведомлений, коммерции, Flow и звонков.

API создания шаблонов

Ознакомьтесь с полной схемой компонентов.

Webhook проверки шаблонов

Обрабатывайте изменения статуса проверки и жизненного цикла.