Переменные шаблона WhatsApp: {{1}} или именованные параметры
Как работают переменные шаблона WhatsApp: позиционные {{1}} и именованные, где их можно ставить, примеры значений, причины отклонения Meta и запрос на отправку.
Автор: OmniChannels.ai Editorial Team · Проверил: BroadNet Messaging Solutions Team
Короткий ответ
Переменная шаблона WhatsApp — это заполнитель, который вы подставляете при каждой отправке: {{1}} в позиционных шаблонах или {{first_name}} в именованных. Формат выбирается полем parameter_format при создании шаблона; по умолчанию используется позиционный. Для проверки каждой переменной нужен пример значения. Переменные разрешены в теле, в текстовом заголовке (одна) и в суффиксе URL-кнопки (одна), а шаблоны, которые начинаются или заканчиваются переменной, Meta отклоняет.
На этой странице
- Что такое переменные шаблона WhatsApp?
- Чем позиционные параметры отличаются от именованных?
- Где разрешены переменные?
- Как передать примеры значений?
- Что Meta говорит о правилах для переменных и отклонениях?
- Как передать параметры в вызове API?
- Пример: шаблон «заказ отправлен»
- Как персонализировать шаблон из CSV?
- Как выбрать между позиционными и именованными?
- Какие ошибки встречаются чаще всего?
- Чем помогает OmniChannels.ai
Главное
- Позиционные переменные нумеруются {{1}}, {{2}} и заполняются строго по порядку; именованные используют строчные имена с подчёркиваниями и заполняются в любом порядке.
- При создании шаблона для каждой переменной нужно указать пример значения; Meta использует примеры при проверке.
- Текстовый заголовок поддерживает одну переменную, тело — несколько, а URL-кнопка — одну переменную, которая добавляется в конец URL.
- Среди документированных причин отклонения у Meta: некорректные или непоследовательные переменные, шаблон, начинающийся или заканчивающийся переменной, слишком много переменных для длины текста и спецсимволы вроде #, $ или %.
- Персонализация из CSV означает одну строку на получателя и чистое значение для каждой переменной.
Это руководство для разработчиков и маркетологов, которые создают шаблоны WhatsApp с персонализированным содержанием. В нём объясняются два формата переменных, где их можно размещать, что Meta говорит о проверке и как передавать значения через API или из таблицы.
Что такое переменные шаблона WhatsApp?
Переменная — это заполнитель в тексте шаблона, который вы заменяете настоящим значением при отправке. Meta называет их параметрами (parameters), а WhatsApp Manager — переменными (variables). Текст шаблона и примеры значений проверяются один раз, а настоящие значения передаются для каждого сообщения.
Например, тело шаблона выглядит так: Hi {{1}}! Your order number is {{2}}. Thank you., и вы отправляете Hi Layla! Your order number is OM-4821. Thank you. одному клиенту, а следующему — другую пару значений.
Meta не переводит ни текст шаблона, ни значения переменных. Вы сами подставляете их на нужном языке для каждой языковой версии шаблона.
Чем позиционные параметры отличаются от именованных?
Формат выбирается при создании шаблона полем parameter_format. Если его не указать, Meta использует positional.
| Позиционные | Именованные | |
|---|---|---|
| Заполнитель | {{1}}, {{2}} |
{{first_name}}, {{order_number}} |
| Правило именования | Нумерация с 1 по порядку | Уникальные имена из строчных букв и подчёркиваний |
| Значения при отправке | Должны идти в порядке заполнителей | Могут идти в любом порядке |
| Примеры значений | Массив body_text |
body_text_named_params с param_name |
| Лучше всего для | Коротких шаблонов с одной-двумя переменными | Шаблонов с несколькими переменными, которые поддерживают другие люди |
Именованные параметры лучше читаются в библиотеке шаблонов, а перепутанный порядок не подставит номер заказа туда, где должно быть имя. Позиционные шаблоны короче в записи и остаются форматом по умолчанию.
Где разрешены переменные?
В документации Meta по компонентам указаны такие места:
| Компонент | Переменные |
|---|---|
| Текстовый заголовок | Один параметр |
| Тело | Несколько параметров |
| URL-кнопка | Одна переменная, добавляемая в конец URL |
| Медиазаголовок (изображение, видео, документ) | Нет; пример файла передаётся при создании, а сам файл — при отправке |
| Нижний колонтитул, кнопки быстрого ответа и кнопки с номером телефона | Не указаны как поддерживающие переменные |
Документированные ограничения длины: текстовый заголовок до 60 символов, тело до 1024, нижний колонтитул до 60, подпись кнопки до 25 и URL кнопки до 2000 символов. Если значение URL-кнопки содержит спецсимволы, Meta советует закодировать их процентным кодированием.
Как передать примеры значений?
Правило Meta: если шаблон использует переменные, при создании нужно указать примеры значений, по одному на каждый параметр. Заголовку с переменной тоже нужен example.
Позиционное тело с примерами:
{
"type": "BODY",
"text": "Hi {{1}}! Your order {{2}} ships on {{3}}.",
"example": { "body_text": [["Layla", "OM-4821", "12 November"]] }
}
Именованное тело с примерами:
{
"type": "BODY",
"text": "Hi {{first_name}}! Your order {{order_number}} ships on {{ship_date}}.",
"example": {
"body_text_named_params": [
{ "param_name": "first_name", "example": "Layla" },
{ "param_name": "order_number", "example": "OM-4821" },
{ "param_name": "ship_date", "example": "12 November" }
]
}
}
Для второго варианта в самом шаблоне задаётся "parameter_format": "named". Берите реалистичные примеры, чтобы проверяющие видели, что на самом деле будет в сообщении.
Что Meta говорит о правилах для переменных и отклонениях?
В руководстве Meta по проверке шаблонов названы такие причины отклонения, связанные с переменными:
- Переменные пропущены или фигурные скобки не парные. Правильная позиционная форма:
{{1}}. - Переменные непоследовательны, например
{{1}},{{2}},{{5}},{{4}}. - Шаблон начинается или заканчивается переменной. Meta называет такие параметры висячими (dangling parameters).
- Слишком много переменных относительно длины сообщения. Соотношения Meta не приводит, поэтому окружайте каждую переменную постоянным текстом.
- Переменные содержат спецсимволы вроде
#,$или%.
Официального заявления о двух переменных, стоящих вплотную, мы не нашли, поэтому правила для этого случая не даём. Разделяйте их словами: так и читается лучше.
О правилах категорий и других причинах отклонения см. категории шаблонов WhatsApp и одобрение. Готовые формулировки — в статье примеры шаблонов сообщений WhatsApp.
Как передать параметры в вызове API?
Вы отправляете название шаблона, язык и массив components со значениями. Вот структура для позиционного шаблона:
{
"messaging_product": "whatsapp",
"to": "971500000000",
"type": "template",
"template": {
"name": "order_shipped",
"language": { "code": "en" },
"components": [
{ "type": "body", "parameters": [
{ "type": "text", "text": "Layla" },
{ "type": "text", "text": "OM-4821" },
{ "type": "text", "text": "12 November" }
] }
]
}
}
Для именованного шаблона каждая запись дополнительно содержит parameter_name, который должен совпадать с заполнителем:
{ "type": "text", "parameter_name": "order_number", "text": "OM-4821" }
Как работают параметры медиазаголовка?
У медиазаголовка нет текстовой переменной. При создании заголовок содержит handle примера файла из процесса загрузки Meta, и этот пример проверяется вместе с шаблоном. При отправке вы передаёте сам файл, например изображение по идентификатору медиа:
{ "type": "header", "parameters": [ { "type": "image", "image": { "id": "1558081531584829" } } ] }
Идентификатор выше взят из примера в документации Meta и не относится к реальному файлу.
Как это выглядит в API OmniChannels.ai?
Наш эндпоинт sendbulk принимает шаблон в виде полей формы, см. документацию WhatsApp API:
| Элемент шаблона | Поля |
|---|---|
| Переменная тела | bodyTemplateVariables |
| Именованный параметр | bodyTemplateVariables={"parameter_name":"order_id","text":"ORD-12345"} |
| Текстовая переменная заголовка | headerTemplateVariables |
| Изображение, видео или документ в заголовке | mediaUrl (переопределяет медиа заголовка) |
| Динамическая URL-кнопка | buttonsTemplateVariable |
Пример: шаблон «заказ отправлен»
«Souq Rafiq» (вымышленный пример), ритейлер из ОАЭ, хочет отправлять уведомление об отправке с изображением товара и кнопкой отслеживания.
- Напишите шаблон так, чтобы он не начинался и не заканчивался переменной: «Hi {{1}}, your order {{2}} has shipped and should arrive on {{3}}. Tap the button to follow it.»
- Добавьте заголовок с изображением, нижний колонтитул обычным текстом и URL-кнопку
https://shop.example/track/{{1}}с примером вродеOM-4821. - Отправьте на проверку с реалистичными примерами для каждой переменной и дождитесь статуса одобрения.
- Отправляйте с тремя значениями тела, суффиксом для отслеживания и, если нужно переопределить, изображением заголовка.
curl -X POST https://api.broadnet.me/whatsapp/message/sendbulk \
-H "Authorization: Bearer $BROADNET_TOKEN" \
-F batchId=0 \
-F campaignName=order-shipped \
-F destinationNo=971500000000 \
-F messageType=TEMPLATE \
-F templateName=order_shipped \
-F templateLanguage=en \
-F bodyTemplateVariables=Layla \
-F buttonsTemplateVariable=OM-4821
Этот фрагмент показывает названия полей для одного значения. Если у каждого получателя несколько переменных тела, используйте персонализированную загрузку вместо повторения команды. Кодировку уточните у нашей команды перед первой кампанией.
Как персонализировать шаблон из CSV?
Используйте одну строку на получателя и один столбец на переменную, затем загрузите файл при персонализированной отправке.
- Поместите номер получателя в международном формате в первый столбец. См. формат номера E.164.
- Добавьте по столбцу на каждую переменную и уточните структуру столбцов у нашей команды перед первой кампанией.
- Сначала почистите данные: уберите лишние пробелы, исправьте регистр, приведите даты к одному формату и удалите пустые значения, ведь пустая переменная даёт испорченное сообщение или сбой отправки.
- Просмотрите несколько строк в предпросмотре и сначала отправьте на свой номер.
Шаги по очистке данных описаны в статье массовая SMS-рассылка из Excel или CSV; к WhatsApp они применимы так же.
Как выбрать между позиционными и именованными?
Ориентируйтесь на то, сколько людей работает с шаблоном и сколько в нём переменных.
- Одна-две переменные, один владелец: подойдёт позиционный формат, он и так используется по умолчанию.
- Три и больше переменных или шаблоны правят несколько команд: выбирайте именованный, чтобы каждый заполнитель объяснял себя сам.
- Один текст на нескольких языках: сохраняйте одинаковые имена или номера во всех версиях, чтобы одна процедура отправки заполняла любой язык.
- Всегда ведите учёт, какой столбец источника питает какую переменную, чтобы позднее изменение шаблона не сместило данные.
Перед отправкой на проверку прочитайте готовое сообщение вслух с примерами значений. Если звучит неестественно, так же решат и проверяющие, и клиенты.
Какие ошибки встречаются чаще всего?
- Шаблон начинается или заканчивается переменной, что Meta называет причиной отклонения.
- Пропуск номеров или повтор номера не по порядку в позиционном шаблоне.
- Заглушки вместо примеров вроде «test», которые ничего не сообщают проверяющим.
- Спецсимволы вроде
#,$или%внутри переменных. - Неверный порядок при отправке в позиционном шаблоне: верные данные попадают не туда.
- Несовпадающий
parameter_nameв именованном шаблоне. - Переменная, скрывающая настоящую цель сообщения. Шаблон, категория которого не соответствует содержанию, могут отклонить или перекатегоризировать; см. руководство по категориям.
- Границы статьи: руководство передаёт то, что указано в документации Meta на момент написания. Решения по проверке остаются за Meta, а правила меняются, поэтому сверяйтесь со страницами по ссылкам.
Чем помогает OmniChannels.ai
BroadNet — официальный бизнес-провайдер решений Meta (Meta Business Solution Provider). В OmniChannels.ai вы можете создавать шаблоны WhatsApp с переменными, медиа и кнопками, просматривать их и отслеживать статус одобрения, а затем отправлять с персонализированными значениями через API или из загрузки Excel либо CSV в кампании. Фильтрация дубликатов и отчёты о доставке включены. См. страницу WhatsApp Business API и платформу кампаний.
Часто задаваемые вопросы
Чем позиционные параметры отличаются от именованных?
Позиционные шаблоны используют нумерованные заполнители вроде {{1}} и требуют передавать значения при отправке в том же порядке. Именованные шаблоны используют строчные имена с подчёркиваниями, например {{order_number}}, а значения в запросе могут идти в любом порядке. Если не задать parameter_format при создании шаблона, Meta применит позиционный формат.
Где в шаблоне WhatsApp можно использовать переменные?
В документации Meta перечислены тело, которое принимает несколько параметров, текстовый заголовок с одним параметром и URL-кнопка с одной переменной, добавляемой в конец URL. Медиазаголовки несут файл, а не переменную. Нижний колонтитул, кнопки быстрого ответа и кнопки с номером телефона не указаны как поддерживающие переменные.
Почему мой шаблон отклонили из-за переменных?
В руководстве Meta по проверке шаблонов названо несколько причин, связанных с переменными: пропущенные или непарные фигурные скобки, непоследовательные переменные, сообщение, которое начинается или заканчивается переменной, слишком много переменных относительно длины сообщения и спецсимволы вроде #, $ или %. Исправьте текст, добавьте реалистичные примеры и отправьте повторно.
Нужны ли примеры значений?
Да. Meta требует: если шаблон использует переменные, при создании нужно указать примеры значений, по одному на каждый параметр. Берите реалистичные значения, а не заглушки вроде test, чтобы проверяющие видели, как будет выглядеть итоговое сообщение. Примеры нужны только для проверки; настоящие значения передаются при отправке.
Может ли переменная содержать перенос строки или ссылку?
В этом руководстве только то, что мы проверили в документации Meta, а на изученных страницах правила для переносов строк внутри значений переменных нет. Проверьте реальной отправкой на свой номер и обратитесь к нашей команде, если планируете передавать длинные или форматированные значения. Значение URL-кнопки добавляется в конец URL кнопки.
Как персонализировать шаблон из таблицы?
Держите одну строку на получателя и один столбец на переменную, с чистыми значениями: имена без лишних пробелов, даты в одном формате, номера в международном формате. Загрузите файл при отправке персонализированной кампании и проверьте предпросмотр. Точную структуру столбцов уточните у нашей команды перед первой кампанией.
Источники
Читайте дальше
Ещё руководстваWhatsApp
Лучший провайдер WhatsApp Business API в Египте: как выбрать
Как выбрать лучшего провайдера WhatsApp Business API в Египте: приложение или API, нейтральный чек-лист, шаблоны ar_EG, согласие по закону 151/2020 и оплата при доставке.
9 мин чтения
WhatsApp
Как отправлять маркетинговые сообщения в WhatsApp
Как делать рассылку в WhatsApp официально: доступ к API, верификация бизнеса, одобренные шаблоны, opt-in, лимиты и готовые примеры шаблонов.
9 мин чтения
Интеграции
Пропускная способность и лимиты скорости WhatsApp Cloud API
Пропускная способность и лимиты WhatsApp Cloud API: сообщений в секунду, как её повысить, парный лимит и лимиты Graph API, коды ошибок и повторы с отсрочкой.
9 мин чтения
