Skip to content

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Входные данныеРезультат
{{ Name | capitalize | prepend:"Hello " }}Hello Anna

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

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

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

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

{
"code": "coupon code"
}

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

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

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

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

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

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

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

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

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

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

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

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

Section titled “Многоязычные push-уведомления”

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

Liquid-шаблон

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

API-запрос

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

Язык ‘es’: ¡Hola!

Язык ‘en’: Hello!

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

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

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

Liquid-шаблон

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

API-запрос

{
"request": {
"application": "XXXXX-XXXXX", // Код приложения Wavesend
"auth": "yxoPUlw.....IyEX4H", // API access token из Wavesend Control Panel
"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: Пожалуйста, свяжитесь с вашим менеджером для продления подписки.

Шаблоны контента очень полезны для обработки тегов типа List.

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

Liquid-шаблон

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

API-запрос

{
"request": {
"application": "XXXXX-XXXXX", // Код приложения Wavesend
"auth": "yxoPUlw.....IyEX4H", // API access token из Wavesend Control Panel
"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

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

Liquid-шаблон

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

API-запрос

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

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

Liquid-шаблон

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

API-запрос

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

Шаблон для часовых поясов преобразует дату и время в соответствии с указанным часовым поясом.

{{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}

Результат