Jinja позволяет вам персонализировать сообщения разных типов (чат, письма, поп-апы, Telegram, Webhook) и сообщения чат-ботов, используя свойства пользователей и атрибуты событий. Также используя синтаксис Jinja можно задать более сложные условия для фильтров вашей аудитории в Триггерных сообщениях и Цепочках.
Наиболее часто используются выражения Jinja, которые вызываются с помощью тегов {{ ... }}
, и операторы, которые вызываются с помощью тегов {% ... %}
.
Для персонализации текстов сообщений и фильтров аудитории
{{ user['$название свойства'] }}
— системное свойство пользователя. Например, имя пользователя.
{{ user['название свойства'] }}
— ваши собственные свойства пользователя, которые вы создали вручную или автоматически передаёте в Carrot quest.
{{ event['название атрибута'] }}
— атрибут события, которое выступило триггером сообщения.
get_last_events('название события')[0]
— функция, которая используется для получения хронологического списка определенного события. Когда мы добавляем [0]
в конце, это означает, что мы берём самое последнее (или недавнее) событие. Если мы используем, например, [2]
, это значит, что мы выбираем третье событие с конца. Таким образом, число в квадратных скобках указывает, насколько далеко назад по списку событий мы заглядываем.
Дополнительно для вебхуков
{{ event.as_json }}
— полное событие (все атрибуты), которое стриггерило вебхук
{{ user.as_json }}
— все данные пользователя из его карточки (все записанные свойства и события)
Персонализация сообщения на основе атрибутов выполненного события
{% set lastEvent = get_last_events('Название события')[0] %} {% set name = lastEvent.props['название атрибута 1'] %} {% set site = lastEvent.props['название атрибута 2'] %} Здравствуйте, {{ name }}! Вы оставили заявку на аудит сайта {{ site }}. Мы позвоним.
Этот пример кода на Jinja выполняет следующие действия:
1. Получение последнего события:
{% set lastEvent = get_last_events('Название события')[0] %}
Здесь вызывается функция get_last_events с аргументом 'Название события'. Эта функция получает список событий, и [0] берёт последний элемент из этого списка. Этот элемент сохраняется в переменную lastEvent. lastEvent — это объект, содержащий информацию о последнем событии.
2. Извлечение атрибутов из события:
{% set name = lastEvent.props['название атрибута 1'] %} {% set site = lastEvent.props['название атрибута 2'] %}
Здесь из объекта lastEvent извлекаются значения двух атрибутов. Эти значения сохраняются в переменные name и site. Атрибуты название атрибута 1 и название атрибута 2 замените на фактические названия, которые записываются для вашего события.
3. Формирование текста сообщения:
Здравствуйте, {{ name }}! Вы оставили заявку на аудит сайта {{ site }}. Скоро позвоним
Это строка, в которой используется подстановка переменных name и site. В результате формируется персонализированный текст сообщения, в котором мы приветствуем пользователя по имени и сообщаем, что он оставил заявку на аудит определенного сайта.
Подобная статья о персонализации с использованием атрибутов событий
Текст сообщения с условиями
{% if user['$name'] is defined %} Здравствуйте, {{ user['$name'] }}! Спасибо за вашу заявку. {% else %} Спасибо за вашу заявку. {% endif %}
Этот пример кода на Jinja выполняет следующие действия:
1. Проверка наличия имени пользователя:
{% if user['$name'] is defined %}
Здесь проверяется, определено ли свойство '$name' в объекте user. Это означает, что код проверяет, существует ли ключ '$name' и имеет ли он значение.
2. Формирование персонализированного текста:
Здравствуйте, {{ user['$name'] }}! Спасибо за вашу заявку.
Если '$name' существует и имеет значение, то выводится персонализированное приветствие, где {{ user['$name'] }} заменяется на фактическое имя пользователя. Например, если '$name' равно "Иван", то сообщение будет: "Здравствуйте, Иван! Спасибо за вашу заявку."
3. Альтернативный текст:
{% else %} Спасибо за вашу заявку. {% endif %}
Если '$name' не определено или не имеет значения, выводится общее сообщение: "Спасибо за вашу заявку."
Другие статьи про Jinja:
Базовый синтаксис Jinja
Структура данных в Jinja
Фильтры в Jinja