Персонализация с помощью Jinja

Полезные примеры персонализации сообщений

Jinja позволяет вам персонализировать сообщения разных типов (чат, письма, поп-апы, Telegram, Webhook) и сообщения чат-ботов, используя свойства пользователей и атрибуты событий. Также используя синтаксис Jinja можно задать более сложные условия для фильтров вашей аудитории в Триггерных сообщениях и Цепочках.

Синтаксис

Наиболее часто используются выражения Jinja, которые вызываются с помощью тегов {{ ... }}, и операторы, которые вызываются с помощью тегов {% ... %} .

Подробнее о синтаксисе Jinja.

Доступные выражения в Carrot quest

Для персонализации текстов сообщений и фильтров аудитории

{{ user['$название свойства'] }}  — системное свойство пользователя. Например, имя пользователя.

{{ user['название свойства'] }}  — ваши собственные свойства пользователя, которые вы создали вручную или автоматически передаёте в Carrot quest.

{{ event['название атрибута'] }}  — атрибут события, которое выступило триггером сообщения.

get_last_events('название события')[0]  —  функция, которая используется для получения хронологического списка определенного события. Когда мы добавляем [0]  в конце, это означает, что мы берём самое последнее (или недавнее) событие. Если мы используем, например, [2] , это значит, что мы выбираем третье событие с конца. Таким образом, число в квадратных скобках указывает, насколько далеко назад по списку событий мы заглядываем.

Дополнительно для вебхуков

{{ event.as_json }}  — полное событие (все атрибуты), которое стриггерило вебхук

{{ user.as_json }}  —  все данные пользователя из его карточки (все записанные свойства и события)

Примеры применения Jinja-кода

Персонализация сообщения на основе атрибутов выполненного события

{% 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



Работает на