Перейти к содержанию

Использование Liquid-шаблонов

Liquid-шаблоны значительно расширяют возможности персонализации в Pushwoosh, позволяя реализовывать сложную логику в дополнение к обычному использованию динамического контента.

Персонализация сообщений в Pushwoosh основана на тегах (данных пользователя). Pushwoosh предлагает множество тегов по умолчанию и пользовательских тегов. С их помощью вы можете указать имя пользователя, город, историю покупок и т. д., чтобы отправить более персонализированное сообщение, например: Привет, {First_name}, спасибо за заказ {item}.

Liquid-шаблоны добавляют больше логики в динамический контент. Например, если тег подписки пользователя содержит значение «free», вы можете отправить ему сообщение: «Получите скидку 10%».

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

Синтаксис

Anchor link to

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

Объекты

Anchor link to

objects (объекты) определяют контент, который будет показан пользователю. objects должны быть заключены в двойные фигурные скобки: {{ }}

Например, при персонализации сообщения отправьте {{Name}} в его теле, чтобы добавить имена пользователей в контент. Имя пользователя (значение тега Name) заменит объект Liquid в сообщении, которое увидит пользователь.

Входные данныеРезультат
Привет, {{Name}}! Мы рады, что вы вернулись!Привет, Анна! Мы рады, что вы вернулись!

tags (теги) создают логику и управляют потоком выполнения для шаблонов. Разделители из фигурных скобок и знаков процента {% и %} и текст, который они окружают, не создают видимого вывода при рендеринге шаблона. Это позволяет присваивать переменные и создавать условия или циклы, не показывая пользователю никакой логики Liquid.

Например, с помощью тега if можно изменять язык сообщения в зависимости от того, какой язык установлен на устройстве пользователя:

Входные данные

{% if Language == 'fr' %}
Salut!
{% else %}
Hello!
{% endif %}

Результат (fr): Salut!

Результат (es): Hello!

Операторы тегов

Anchor link to
ОператорОписание
==равно
!=не равно
>больше чем
<меньше чем
>=больше или равно
<=меньше или равно
orлогическое или
andлогическое и
containsпроверяет наличие подстроки в строке или массиве строк

Фильтры

Anchor link to

filters (фильтры) изменяют вывод объекта или переменной Liquid. Они используются внутри двойных фигурных скобок {{ }} и при присваивании переменных и разделяются символом вертикальной черты |. К одному выводу можно применить несколько фильтров; они применяются слева направо.

Входные данныеРезультат
{{ Name | capitalize | prepend:"Здравствуйте, " }}Здравствуйте, Анна

Связанный контент

Anchor link to

Связанный контент (Connected Content) — это функция в Liquid-шаблонах, которая позволяет динамически извлекать и использовать данные из внешнего источника, например веб-сервиса, непосредственно в ваших шаблонах email-сообщений или push-уведомлений. Эта функция обеспечивает персонализацию в реальном времени, извлекая JSON-данные по указанному URL и сохраняя их в переменную, которую можно использовать в вашем контенте.

Синтаксис

Anchor link to
{% connected_content url :save result %}
  • url: URL-адрес, с которого нужно получить данные.
  • :save: Директива, указывающая, куда следует сохранить полученные JSON-данные.
  • result: Имя переменной для хранения полученных JSON-данных.

После того как данные получены и сохранены в указанной переменной, вы можете использовать эту переменную в контенте вашего шаблона.

Пример использования

Anchor link to

Рассмотрим сценарий, в котором у вас есть сервис купонов, возвращающий JSON-ответ с кодом купона. Сервис возвращает следующий JSON:

{
"code": "coupon code"
}

Вы можете получить код купона и использовать его в своем шаблоне следующим образом:

{% connected_content https://example.com/couponwebservice.json :save result %}
Ваш промокод: {% result.code %}

Использование Liquid-шаблонов в сообщениях, отправляемых через API

Anchor link to

Используйте синтаксис Liquid в ваших запросах createMessage для реализации Liquid-шаблонов. Шаблоны доступны для параметра «content» запроса createMessage, а также для любых других параметров, поддерживающих динамический контент, в частности, для специфичных для платформы параметров «title», «subtitle» и «image».

Используя шаблоны контента, вы можете либо указать данные в своих API-запросах (передавая параметр «template_bindings»), либо получить данные из значений тегов, хранящихся на устройствах пользователей (не используя параметр «template_bindings»). Таким образом, вы можете создавать push-кампании на основе данных о пользователях, содержащие чрезвычайно релевантный контент.

Чтобы определить логику шаблона с использованием тегов, имена которых содержат пробелы, используйте следующий прием:

Пример

Anchor link to
{% capture my_tag %}{{My Tag}}{% endcapture %}
{% if my_tag == 'value' %}
Контент для отправки в этом случае
{% else %}
Контент для отправки в противном случае
{% endif %}

Примеры использования Liquid-шаблонов

Anchor link to

Здесь вы найдете несколько примеров использования Liquid-шаблонов.

Мультиязычные push-уведомления

Anchor link to

Liquid-шаблоны позволяют точно указать, на каком языке пользователи должны получать ваши push-уведомления. Посмотрите на простой пример API-запроса и сообщения, которое будет получено в зависимости от привязок шаблона (template bindings), использованных в запросе.

Входные данные Liquid

{% if Language == 'es' %}
¡Hola!
{% else %}
Hello!
{% endif %}

API-запрос

{
"request": {
"application": "XXXXX-XXXXX", // Код приложения Pushwoosh
"auth": "yxoPUlw.....IyEX4H", // API-ключ доступа из Панели управления Pushwoosh
"notifications" : [ // параметры push-уведомления
{
"content": "{% raw %}
{% if language == 'es' %Hola!{% else %}hello!{% endif %}
{% endraw %}",
"template_bindings": { // опционально. Если template_bindings не передаются в запросе, используются значения тегов с устройства.
"language" : "es"
}
}
]
}
}

Язык ‘es’: ¡Hola!

Язык ‘en’: Hello!

Предложение обновить подписку

Anchor link to

Предложите вашим клиентам обновить подписку в зависимости от их текущего тарифного плана.

Входные данные Liquid

{% if Subscription == 'Basic' %}
Перейдите на Silver, чтобы получить больше функций и круглосуточную поддержку.
{% elsif Subscription == 'Silver' %}
Перейдите на Gold, чтобы получить приоритетную поддержку и расширенные функции.
{% else %}
Пожалуйста, свяжитесь с вашим менеджером, чтобы продлить подписку.
{% endif %}

API-запрос

{
"request": {
"application": "XXXXX-XXXXX", // Код приложения Pushwoosh
"auth": "yxoPUlw.....IyEX4H", // API-ключ доступа из Панели управления Pushwoosh
"notifications" : [ // параметры push-уведомления
{
"content": "{% raw %}
{% if Subscription == 'Basic' %}Перейдите на Silver, чтобы получить больше функций и круглосуточную поддержку.{% elsif Subscription == 'Silver' %}Перейдите на Gold, чтобы получить приоритетную поддержку и расширенные функции.{% else %}Пожалуйста, свяжитесь с вашим менеджером, чтобы продлить подписку. {% endif %}
{% endraw %}",
"template_bindings": { // опционально. Если template_bindings не передаются в запросе, используются значения тегов с устройства.
"language" : "es"
}
}
]
}
}
Результат
Для пользователей с тарифным планом Basic: Перейдите на Silver, чтобы получить больше функций и круглосуточную поддержку.
Для пользователей с тарифным планом Silver: Перейдите на Gold, чтобы получить приоритетную поддержку и расширенные функции.
Для пользователей с другими тарифными планами (не Basic или Silver): Пожалуйста, свяжитесь с вашим менеджером, чтобы продлить подписку.

Теги типа “Список”

Anchor link to

Шаблоны контента очень полезны для обработки тегов типа «Список» (List).

Размер переменной

Anchor link to

Один из возможных сценариев — доставка разного контента в зависимости от количества значений, содержащихся в теге. Например, вы можете предоставлять разные скидки клиентам с разным поведением. Допустим, у клиента есть товары в списке желаний (WishList) — поощряйте его к покупке с помощью наиболее подходящей скидки в зависимости от того, сколько товаров он собирается купить!

Входные данные Liquid

{% if WishList.size >= 3 %}
Получите скидку 20% на следующую покупку!
{% elsif WishList.size == 2 %}
Получите скидку 10% на следующую покупку!
{% else %}
Эй, взгляните на новую верхнюю одежду!
{% endif %}

API-запрос

{
"request": {
"application": "XXXXX-XXXXX", // Код приложения Pushwoosh
"auth": "yxoPUlw.....IyEX4H", // API-ключ доступа из Панели управления Pushwoosh
"notifications" : [ // параметры push-уведомления
{
"content": "{% raw %}
{% if WishList.size >= 3 %}Получите скидку 20% на следующую покупку!{% elsif WishList.size == 2 %}Получите скидку 10% на следующую покупку!{% else %}Эй, взгляните на новую верхнюю одежду!{% endif %}
{% endraw %}",
"template_bindings": { // опционально. Если template_bindings не передаются в запросе, используются значения тегов с устройства.
"WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"]
}
}
]
}
}
Размер WishList >= 3
Размер WishList = 2

Переменная содержит

Anchor link to

Еще один случай, который вам может понадобиться, — это работа со значениями тегов типа «Список» и доставка наиболее релевантного контента в зависимости от того, какие значения содержит тег.

Входные данные Liquid

{% if WishList contains 'Skinny Low Ankle Jeans' %}
Получите скидку 20% на товары в вашем списке желаний!
{% else %}
Эй, взгляните на совершенно новые Skinny Low Ankle Jeans!
{% endif %}

API-запрос

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

Множественное число

Anchor link to

Используя шаблоны контента, вы можете настраивать содержание сообщений в соответствии с поведением пользователей. Например, вы можете изменять текст сообщения, чтобы использовать слова во множественном числе, если тег типа «Список» содержит более одного значения.

Входные данные Liquid

Получите скидку 20% на товар
{% if WishList.size > 1 %}
ы в вашем списке желаний!
{% else %}
в вашем списке желаний!
{% endif %}

API-запрос

{
"request": {
"application": "C90C0-0E786",
"auth": "yxoPUlw.....IyEX4H", // API-ключ доступа из Панели управления Pushwoosh
"notifications" : [ // параметры push-уведомления
{
"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\" }}

Результат