Полезные заготовки Jinja-кода

Заготовки помогут настроить персонализацию текста сообщений или написать условия для фильтров аудитории с помощью Jinja-кода

Персонализация текста для ваших сообщений

Формирование приветствия в зависимости от наличия определенных свойств пользователя:

{{% set parts = [] %}
{% if user['$name'] is defined %}
{% set _ = parts.append("вас зовут " + user['$name']) %}
{% endif %}
{% if user['$email'] is defined %}
{% set _ = parts.append("адрес вашей почты " + user['$email']) %}
{% endif %}
{% if user['$phone'] is defined %}
{% set _ = parts.append("номер телефона " + user['$phone']) %}
{% endif %}
Здравствуйте{% if parts|length > 0 %}. Вы указали, что {{ parts|join(' и ') }}{% endif %}, всё верно?
  1. Инициализация списка:
    • parts: Пустой список для хранения частей сообщения, которые будут добавлены в зависимости от наличия информации о пользователе.
  2. Проверка и добавление информации:
    • Имя пользователя:
      • if user['$name'] is defined: Проверяет, определено ли имя пользователя.
      • Если да, добавляет строку "вас зовут " + имя пользователя в список parts.
    • Email пользователя:
      • if user['$email'] is defined: Проверяет, определен ли email пользователя.
      • Если да, добавляет строку "адрес вашей почты " + email пользователя в список parts.
    • Телефон пользователя:
      • if user['$phone'] is defined: Проверяет, определен ли номер телефона пользователя.
      • Если да, добавляет строку "номер телефона " + номер телефона в список parts.
  3. Формирование приветственного сообщения:
    • Начинает с "Здравствуйте".
    • Если список parts содержит элементы, добавляет фразу ". Вы указали, что " и объединяет элементы списка parts с помощью " и ".
    • Завершает вопросом "всё верно?".

Формирование текста с последними 3-я просмотренными товарами на вашем сайте:

Здравствуйте!
Вот товары, которые вы смотрели в нашем каталоге:
{% set itemsArray = [] %}
{% set massViewedName = [] %}
{% for e in get_last_events('$product_viewed') %}
    {% set product_name = e.props['$name'].lower().strip() %}
    {% if product_name not in massViewedName %}
        {% set _ = itemsArray.append(e) %}
        {% set _ = massViewedName.append(product_name) %}
    {% endif %}
{% endfor %}
{% for b in itemsArray[:3] %}
    {% set url = b.props['$url'] %}
    {% set name = b.props['$name'] %}
    {% set amount = b.props['$amount'] %}
    {{ name }}
    {{ amount }} ₽
{% endfor %}
Вам не нужно будет искать их снова, когда решите оформить заказ.
  1. Инициализация списков:
    • itemsArray: Пустой список для хранения уникальных событий просмотра товаров.
    • massViewedName: Пустой список для хранения имен товаров, которые уже были добавлены в itemsArray.
  2. Цикл по событиям:
    • for e in get_last_events('$product_viewed'): Проходит по всем событиям, связанным с просмотром товаров.
    • product_name = e.props['$name'].lower().strip(): Извлекает и нормализует имя товара (приводит к нижнему регистру и убирает пробелы по краям).
    • if product_name not in massViewedName: Проверяет, добавлено ли уже это имя товара в massViewedName.
      • Если нет, добавляет событие e в itemsArray и имя товара в massViewedName.
  3. Вывод информации о товарах:
    • for b in itemsArray[:3]: Проходит по первым трем уникальным событиям из itemsArray.
    • Извлекает url, name, и amount для каждого товара.
    • Выводит имя товара и его стоимость в рублях

Фильтры аудитории для триггерных сообщений/цепочек/ботов

Условия с логикой «и» и «или» для нескольких свойств:

{% if user['$email'] is defined and (user['$last_payment'] >= 10000 or user['$orders_count'] >= 3) %}
TRUE
{% else %}
FALSE
{% endif %}
  • Проверка наличия email: user['$email'] is defined проверяет, определен ли email пользователя.
  • Условия для платежей и заказов:
    • user['$last_payment'] >= 10000: Проверяет, был ли последний платеж пользователя больше или равен 10 000.
    • user['$orders_count'] >= 3: Проверяет, сделал ли пользователь три или более заказов.
  • Логическое "И": Оба условия соединены оператором and, что означает, что оба условия должны быть истинными для выполнения блока True.
  • Блоки True и False: В зависимости от выполнения условий, выводится True или False.

Проверка наличия определённых атрибутов в событии, которое выступило триггером вашего сообщения:

{% set device = event['$device_type'] %}
{% set os = event['$os'] %}
{% if device == 'pc' and 'Windows' in os %}
TRUE
{% else %}
FALSE
{% endif %}
  • Переменные device и os:
    • deviceполучает значение типа устройства из события.
    • osполучает значение операционной системы из события.
  • Условие:
    • Проверяет, является ли устройство персональным компьютером (device == 'pc') и содержит ли операционная система строку 'Windows' ('Windows' in os).
  • Вывод:
    • Если оба условия выполняются, выводится TRUE.
    • В противном случае, выводится FALSE.


Другие статьи про Jinja:

Базовый синтаксис Jinja
Структура данных в Jinja
Фильтры в Jinja
Персонализация с помощью Jinja

Работает на