Использование Liquid-шаблонов
Liquid-шаблоны значительно расширяют возможности персонализации Wavesend, позволяя использовать сложную логику в дополнение к обычному использованию Dynamic Content.
Персонализация сообщений в Wavesend основана на тегах (данных пользователя). Wavesend предлагает различные теги по умолчанию и пользовательские теги. С их помощью вы можете указывать имя пользователя, город, историю покупок и т. д., чтобы отправлять более персонализированные сообщения, например: Привет, {{First_name}}, спасибо за заказ {{item}}.
Liquid-шаблоны добавляют больше логики в динамический контент. Например, если Tag подписки пользователя содержит значение «free», вы можете отправить ему сообщение: «Получите скидку 10%».
Изменение содержания сообщения в соответствии с ID, поведением и предпочтениями пользователей — это наиболее эффективный способ повысить релевантность и добиться более впечатляющих результатов от ваших маркетинговых кампаний.
Синтаксис
Section titled “Синтаксис”Шаблоны контента, основанные на Liquid от Shopify, используют комбинацию тегов (tags), объектов (objects) и фильтров (filters) для загрузки динамического контента. Шаблоны контента позволяют получать доступ к определенным переменным из шаблона и выводить их данные, не зная ничего о самих данных.
Объекты
Section titled “Объекты”objects (объекты) определяют контент, который будет показан пользователю. objects должны быть заключены в двойные фигурные скобки: {{ }}
Например, при персонализации сообщения отправьте {{Name}} в его теле, чтобы добавить имена пользователей в контент сообщения. Имя пользователя (значение тега Name) заменит объект Liquid в сообщении, которое увидит пользователь.
| Входные данные | Результат |
|---|---|
Привет, {{Name}}! Мы рады, что вы вернулись! | Привет, Анна! Мы рады, что вы вернулись! |
Теги (Tags)
Section titled “Теги (Tags)”tags (теги) создают логику и управляют потоком выполнения для шаблонов. Разделители в виде фигурных скобок и знаков процента, {% и %}, а также текст, который они окружают, не создают видимого вывода при рендеринге шаблона. Это позволяет присваивать переменные и создавать условия или циклы, не показывая пользователю никакой логики Liquid.
Например, используя тег if, вы можете изменять язык сообщения в зависимости от того, какой язык установлен на устройстве пользователя:
Входные данные
{% if Language == 'fr' %}Salut!{% else %}Hello!{% endif %}Результат (fr): Salut!
Результат (es): Hello!
Операторы тегов
Section titled “Операторы тегов”| Оператор | Описание |
|---|---|
== | равно |
!= | не равно |
> | больше чем |
< | меньше чем |
>= | больше или равно |
<= | меньше или равно |
or | логическое ИЛИ |
and | логическое И |
contains | проверяет наличие подстроки в строке или массиве строк |
Фильтры
Section titled “Фильтры”filters (фильтры) изменяют вывод объекта или переменной Liquid. Они используются внутри двойных фигурных скобок {{ }} и при присваивании переменных и разделяются символом вертикальной черты |. К одному выводу можно применить несколько фильтров; они применяются слева направо.
| Входные данные | Результат |
|---|---|
{{ Name | capitalize | prepend:"Hello " }} | Hello Anna |
Connected content
Section titled “Connected content”Connected Content — это функция в Liquid-шаблонах, которая позволяет динамически извлекать и использовать данные из внешнего источника, например веб-сервиса, непосредственно в ваших шаблонах Email или Push. Эта функция обеспечивает персонализацию в реальном времени, извлекая JSON-данные по указанному URL и сохраняя их в переменную, которую можно использовать в вашем контенте.
Синтаксис
Section titled “Синтаксис”{% connected_content url :save result %}- url: URL-адрес, с которого нужно получить данные.
- :save: Директива, указывающая, куда следует сохранить полученный JSON.
- result: Имя переменной для хранения полученного JSON.
Как только данные будут получены и сохранены в указанной переменной, вы сможете использовать эту переменную в контенте вашего шаблона.
Пример использования
Section titled “Пример использования”Рассмотрим сценарий, в котором у вас есть сервис купонов, возвращающий 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-кампании на основе данных пользователей, содержащие чрезвычайно релевантный контент.
Чтобы определить логику шаблона с использованием тегов, имена которых содержат пробелы, используйте следующую технику:
Пример
Section titled “Пример”{% 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
Section titled “Теги типа List”Шаблоны контента очень полезны для обработки тегов типа List.
Переменный размер
Section titled “Переменный размер”Один из возможных сценариев — доставка разного контента в зависимости от количества значений, содержащихся в теге. Например, вы можете предоставлять разные скидки клиентам с разным поведением. Допустим, у клиента есть товары в списке желаний (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 | ![]() |
Переменная содержит
Section titled “Переменная содержит”Еще один случай, который может потребоваться — обработка значений тегов типа 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"] } } ] }}| Переменная содержит данные | ![]() |
| Переменная не содержит данные | ![]() |
Множественное число
Section titled “Множественное число”Используя шаблоны контента, вы можете настраивать содержание сообщений в соответствии с поведением пользователей. Например, вы можете изменять текст сообщения, чтобы использовать множественное число, если 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"] } } ] }}| Множественное число | ![]() |
| Единственное число | ![]() |
Часовой пояс
Section titled “Часовой пояс”Шаблон для часовых поясов преобразует дату и время в соответствии с указанным часовым поясом.
{{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}{ "request" : { "auth" : "3H9bk8w3.....Acge2RbupTB", // API access token из Wavesend Control Panel "application" : "XXXXX-XXXXX", // Код приложения Wavesend "notifications" : [ // параметры push-сообщения { "content": "Current Date: {{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}", "template_bindings": { // опционально. Если template_bindings не передаются в запросе, используются значения тегов с устройства. "MyDate" : "2019-07-23 15:00", "MyTimezone" : "Asia/Dubai" } } ] }}Результат






