Использование Liquid-шаблонов
Liquid-шаблоны значительно расширяют возможности персонализации Pushwoosh за счет реализации сложной логики в дополнение к обычному использованию динамического контента.
Персонализация сообщений в Pushwoosh основана на тегах (данных пользователя). Pushwoosh предлагает множество тегов по умолчанию и пользовательских тегов. С их помощью вы можете указать имя пользователя, город, историю покупок и т. д., чтобы отправить более персонализированное сообщение, например: «Привет, {First_name}, спасибо за заказ {item}».
Liquid-шаблоны добавляют больше логики в динамический контент. Например, если тег подписки пользователя содержит «free», вы можете отправить ему сообщение: «Получите скидку 10%».
Изменение содержания сообщения в соответствии с ID, поведением и предпочтениями пользователей — это наиболее эффективный способ повысить релевантность и получить более впечатляющие результаты от ваших маркетинговых кампаний.
Синтаксис
Anchor link toШаблоны контента, основанные на Liquid от Shopify, используют комбинацию тегов, объектов и фильтров для загрузки динамического контента. Шаблоны контента позволяют вам получать доступ к определенным переменным из шаблона и выводить их данные, не зная ничего о самих данных.
Объекты
Anchor link toОбъекты определяют контент, который будет отображаться пользователю. Объекты должны быть заключены в двойные фигурные скобки: {{ }}
Например, при персонализации сообщения отправьте {{Name}} в его теле, чтобы добавить имена пользователей в содержание сообщения. Имя пользователя (значение тега Name) заменит объект Liquid в сообщении, которое увидит пользователь.
Hi {{Name}}! We're glad you're back!Привет, Анна! Мы рады, что вы вернулись!
Теги
Anchor link toТеги создают логику и управляют потоком выполнения для шаблонов. Разделители в виде фигурных скобок и процентов {% и %} и текст, который они окружают, не создают видимого вывода при рендеринге шаблона. Это позволяет вам присваивать переменные и создавать условия или циклы, не показывая пользователю никакой логики Liquid.
Например, используя тег if, вы можете изменять язык сообщения в зависимости от того, какой язык установлен на устройстве пользователя:
{% if Language == 'fr' %}Salut!{% else %}Hello!{% endif %}Salut!
Hello!
Операторы тегов
Anchor link to| Оператор | Описание |
|---|---|
== | равно |
!= | не равно |
> | больше чем |
< | меньше чем |
>= | больше или равно |
<= | меньше или равно |
or | логическое или |
and | логическое и |
contains | проверяет наличие подстроки в строке или массиве строк |
Фильтры
Anchor link toФильтры изменяют вывод объекта или переменной Liquid. Они используются внутри двойных фигурных скобок {{ }} и при присваивании переменных и разделяются символом вертикальной черты |. К одному выводу можно применить несколько фильтров, и они применяются слева направо.
{{ Name | capitalize | prepend:"Hello " }}Hello Anna
Использование Liquid-шаблонов в сообщениях, отправляемых через API
Anchor link toИспользуйте синтаксис Liquid в ваших запросах createMessage для реализации Liquid-шаблонов. Шаблоны доступны для параметра “content” запроса createMessage, а также для любого другого параметра, поддерживающего динамический контент, в частности, для специфичных для платформы параметров “title”, “subtitle” и “image”.
Используя шаблоны контента, вы можете либо указать данные в своих API-запросах (передавая параметр “template_bindings”), либо получить данные из значений тегов, хранящихся на устройствах пользователей (не используя параметр “template_bindings”). Таким образом, вы можете создавать пуш-кампании на основе пользователей, содержащие чрезвычайно релевантный контент.
Чтобы определить логику шаблона с использованием тегов с пробелами в их именах, используйте следующий метод:
Пример
{% capture my_tag %}{{My Tag}}{% endcapture %}{% if my_tag == 'value' %}Контент для отправки в этом случае{% else %}Контент для отправки в противном случае{% endif %}Примеры использования Liquid-шаблонов
Anchor link toЗдесь вы найдете несколько примеров использования Liquid-шаблонов.
Многоязычные пуши
Anchor link toLiquid-шаблоны позволяют точно указать, на каком языке пользователи должны получать ваши пуш-уведомления. Посмотрите на простой пример API-запроса и полученного сообщения в зависимости от привязок шаблона, используемых в запросе.
{% if Language == 'es' %}¡Hola!{% else %}Hello!{% endif %}{ "request": { "application": "XXXXX-XXXXX", // Код приложения Pushwoosh "auth": "yxoPUlw.....IyEX4H", // Токен доступа API из панели управления Pushwoosh "notifications" : [ // параметры пуш-уведомления { "content": "{% raw %}{% if language == 'es' %}¡Hola!{% else %}hello!{% endif %}{% endraw %}", "template_bindings": { // необязательно. Когда в запросе не передаются template_bindings, используются значения тегов с устройства. "language" : "es" } } ] }}Язык ‘es’: ¡Hola!
Язык ‘en’: Hello!
Предложение об обновлении подписки
Anchor link toПоощряйте своих клиентов обновлять подписку в зависимости от их текущего плана.
{% if Subscription == 'Basic' %} Перейдите на Silver, чтобы получить больше функций продукта и поддержку 24/7.{% elsif Subscription == 'Silver' %} Перейдите на Gold для приоритетной поддержки и расширенных функций.{% else %} Пожалуйста, свяжитесь с вашим менеджером, чтобы продлить подписку.{% endif %}{ "request": { "application": "XXXXX-XXXXX", // Код приложения Pushwoosh "auth": "yxoPUlw.....IyEX4H", // Токен доступа API из панели управления Pushwoosh "notifications" : [ // параметры пуш-уведомления { "content": "{% raw %}{% if Subscription == 'Basic' %}Перейдите на Silver, чтобы получить больше функций продукта и поддержку 24/7.{% elsif Subscription == 'Silver' %}Перейдите на Gold для приоритетной поддержки и расширенных функций.{% else %}Пожалуйста, свяжитесь с вашим менеджером, чтобы продлить подписку. {% endif %}{% endraw %}", "template_bindings": { // необязательно. Когда в запросе не передаются template_bindings, используются значения тегов с устройства. "language" : "es" } } ] }}Для пользователей с планом подписки Basic: Перейдите на Silver, чтобы получить больше функций продукта и поддержку 24/7.
Для пользователей с планом подписки Silver: Перейдите на Gold для приоритетной поддержки и расширенных функций.
Для пользователей с другими планами: Пожалуйста, свяжитесь с вашим менеджером, чтобы продлить подписку.
Теги типа List
Anchor link toШаблоны контента очень полезны для обработки тегов типа List.
Размер переменной
Anchor link toОдин из возможных вариантов использования — доставка разного контента в зависимости от количества значений, содержащихся в теге. Например, вы можете предоставлять разные скидки клиентам с разным поведением. Допустим, у клиента есть несколько товаров в списке желаний — поощрите его к покупке с наиболее подходящей скидкой в зависимости от того, сколько товаров он собирается купить!
{% if WishList.size >= 3 %}Получите скидку 20% на следующую покупку!{% elsif WishList.size == 2 %}Получите скидку 10% на следующую покупку!{% else %}Эй, взгляните на новую верхнюю одежду!{% endif %}{ "request": { "application": "XXXXX-XXXXX", // Код приложения Pushwoosh "auth": "yxoPUlw.....IyEX4H", // Токен доступа API из панели управления Pushwoosh "notifications" : [ // параметры пуш-уведомления { "content": "{% raw %}{% if WishList.size >= 3 %}Получите скидку 20% на следующую покупку!{% elsif WishList.size == 2 %}Получите скидку 10% на следующую покупку!{% else %}Эй, взгляните на новую верхнюю одежду!{% endif %}{% endraw %}", "template_bindings": { "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"] } } ] }}

Переменная содержит
Anchor link toЕще один случай, который вам может понадобиться, — это работа со значениями тегов типа List и доставка наиболее релевантного контента в зависимости от того, какие значения содержит тег.
{% if WishList contains 'Skinny Low Ankle Jeans' %}Получите скидку 20% на товары из вашего списка желаний!{% else %}Эй, взгляните на совершенно новые Skinny Low Ankle Jeans!{% endif %}{ "request": { "application": "C90C0-0E786", "auth": "yxoPUlw.....IyEX4H", // Токен доступа API из панели управления Pushwoosh "notifications" : [ // параметры пуш-уведомления { "content": "{% raw %}{% if WishList contains 'Skinny Low Ankle Jeans' %}Получите скидку 20% на следующую покупку!{% else %}Эй, взгляните на совершенно новые Skinny Low Ankle Jeans!{% endif %}{% endraw %}", "template_bindings": { "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"] } } ] }}

Множественное число
Anchor link toИспользуя шаблоны контента, вы можете адаптировать содержание сообщения в соответствии с поведением пользователей. Например, вы можете изменить текст сообщения, чтобы он содержал слова во множественном числе, если тег типа List содержит более одного значения.
Получите скидку 20% на товар{% if WishList.size > 1 %} ы в вашем списке желаний!{% else %} в вашем списке желаний!{% endif %}{ "request": { "application": "C90C0-0E786", "auth": "yxoPUlw.....IyEX4H", // Токен доступа API из панели управления Pushwoosh "notifications" : [ // параметры пуш-уведомления { "content": "Получите скидку 20% на товар{% raw %}{% if WishList.size > 1 %}ы в вашем списке желаний!{% else %} в вашем списке желаний!{% endif %}{% endraw %}", "template_bindings": { // необязательно. Когда в запросе не передаются template_bindings, используются значения тегов с устройства. "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"] } } ] }}

Часовой пояс
Anchor link toШаблон для часовых поясов преобразует дату и время в соответствии с указанным часовым поясом.
{{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}{ "request" : { "auth" : "3H9bk8w3.....Acge2RbupTB", // Токен доступа API из панели управления Pushwoosh "application" : "XXXXX-XXXXX", // Код приложения Pushwoosh "notifications" : [ // параметры пуш-уведомления { "content": "Текущая дата: {{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}", "template_bindings": { // необязательно. Когда в запросе не передаются template_bindings, используются значения тегов с устройства. "MyDate" : "2019-07-23 15:00", "MyTimezone" : "Asia/Dubai" } } ] }}
Связанный контент
Anchor link toСвязанный контент — это функция в Liquid-шаблонах, которая позволяет динамически извлекать и использовать данные из внешнего источника, такого как веб-сервис, непосредственно в ваших email или пуш-уведомлениях. Эта функция обеспечивает персонализацию в реальном времени, извлекая JSON-данные с указанного URL и сохраняя их в переменную, которую можно использовать в вашем контенте.
Ключевые сценарии использования
Anchor link to-
Рекомендации по продуктам: отображение персонализированных списков продуктов, адаптированных для каждого пользователя.
-
Промокоды: вставка уникальных промокодов, сгенерированных бэкенд-сервисом.
Предварительные требования
Anchor link to- Для использования связанного контента у вас должен быть собственный бэкенд-сервис, который генерирует и предоставляет необходимые данные (например, промокоды, рекомендации по продуктам) на основе User ID, HWID или пользовательских тегов. Затем Pushwoosh извлекает эти данные перед отправкой сообщения.
Пошаговое руководство по внедрению
Anchor link toШаг 1. Настройка бэкенд-сервиса
Anchor link toБэкенд-сервис должен:
- Принимать запрос, содержащий специфичные для пользователя параметры (например,
userId). Связанный контент поддерживаетUserID,HWIDили любые пользовательские теги, которые вы настроили в своем проекте. - Возвращать JSON-ответ с необходимыми данными. Этот контент затем можно динамически вставлять в сообщения.
Шаг 2. Создание пресета со связанным контентом в Pushwoosh
Anchor link to- В редакторе пуш-уведомлений или редакторе email-сообщений вставьте синтаксис связанного контента в поле сообщения.
Пример
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :save result %}Разбор синтаксиса
connected_content | Извлекает JSON-данные с указанного URL бэкенда. |
http://your-backend-url.com | Конечная точка бэкенда, которая возвращает необходимые данные в формате JSON. |
userId={{ ${userid} }} | Динамический параметр запроса, который передает ID пользователя на бэкенд. |
:save result | Сохраняет полученный JSON-ответ в переменную result для использования в Liquid-шаблонах. |

Аутентификация (необязательно)
Если ваш бэкенд-сервис требует аутентификации, вы можете включить API-ключ или токен в запрос связанного контента для обеспечения безопасного доступа.
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}&auth=YOUR_API_KEY :save result %}Вы также можете отправлять данные аутентификации (или любые другие) в виде HTTP-заголовков с помощью необязательного параметра :headers — JSON-объекта с именами и значениями заголовков.
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :headers {"Authorization": "Bearer YOUR_TOKEN", "X-Api-Key": "YOUR_API_KEY"} :save result %}:headers {...} | JSON-объект HTTP-заголовков, отправляемых с запросом, например, Authorization: Bearer <token>. |
Использование тегов в связанном контенте
Чтобы включить пользовательские теги, вставьте их в качестве параметров запроса в запросе связанного контента ({{ tag_name }}).
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}{{ Language }} :save result %}- Затем добавьте текст сообщения, включающий полученные данные, например:
Эй, {{userid}}, получите ваш персональный промокод - {{result.code}}
- После завершения работы над содержанием сообщения и настройки параметров пресета сохраните его для повторного использования в кампаниях.
Шаг 3. Отправка сообщения с использованием настроенного пресета
Anchor link toОтправьте сообщение с этим пресетом, используя форму разового пуша, форму email или Customer Journey.