Table of contents

Инструкция по Jinja-подстановкам

Jinja - это язык для шаблонизации, с помощью которого можно создавать шаблоны и заполнять их изменяющимися данными.

У Jinja есть набор правил, образующий синтаксис, с помощью которого можно формировать конструкции «кода» и объяснять системе, что нужно сделать и какой контент вывести клиенту.

В VK CXhub Jinja используется для подстановки динамических значений в сообщения бота. Представьте, что у вас есть шаблон, в котором описаны условия, что и как должно выглядеть в сообщении. Когда VK CXhub обрабатывает запрос по конкретному клиенту в процессе работы сценария, Jinja заменяет эти конструкции на реальные данные из профиля клиента, списка событий клиента или из данных шагов согласно прописанным условиям и генерирует итоговое сообщение с нужными данными, которое отправляется пользователю.

Например, вы хотите добавить персонализацию в приветствие, но у вас в базе не у всех клиентов заполнено поле «Имя». Вы можете с помощью конструкции Jinja задать условие, что если в профиле клиента есть имя, то в приветствие добавляем обращение по имени, а если имени нет, то просто пишем «Здравствуйте» или вместо имени подставляем заданное значения по умолчанию, например «Дорогой клиент».

Таким образом, Jinja-подстановки полезны для:

  • Создания персонализированного контента.
  • Создания контента с данными из базы данных.
  • Создания контента, которые изменяются в зависимости от действий пользователя.

Это позволяет создавать сообщения в сценариях более интересными и персонализированными, а также упрощает создание сценариев и сокращает количество веток внутри сценария для разных условий, так как в ряде случаев разные условия можно прописать в одной конструкции Jinja.

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

     1. Зайдите в шаг, в котором хотите использовать шаблон Jinja, нажмите на поле, в котором вы хотите создать сообщение с подстановкой значения. Слева появится окно с названием «Подстановка переменных и смайлов». Под названием вы увидите панель с иконками - выберите вкладку, указанную на изображении ниже. При выборе этой вкладки вы увидите ее название «Шаблоны значений» и список шаблонов:

     2. Выберите в списке шаблон, который хотите использовать, и нажмите на него. Значения из него автоматически подставятся в поле в виде фрагмента кода. Преднастроенные шаблоны не требуют внесения изменений, вы можете использовать их в текущем виде. Но при необходимости вы можете вносить изменения в конструкцию Jinja прямо в поле ввода.

Помимо шаблонов, вы можете выбирать нужные переменные из данных внутри шагов сценария. Вы сможете сделать это после прохождения сценария тестовым клиентом. 

Подробнее о подстановке переменных клиентов вы можете прочесть в инструкции: https://help.apicxhub.ru/obnovlit-peremennie-klientov-cherez-stsenariy.

     1. Чтобы добавить свою переменную и ее значение, добавьте переменную в проект VK CXhub, воспользовавшись инструкцией: https://help.apicxhub.ru/peremennie-klientov#sozdanie-peremennih.

     2. После этого в настройках шага «Обновить переменные клиента» выберите новую переменную из списка и введите необходимые значения в шаге сценария вручную. Для этого нажмите на две фигурные скобки над полем ввода переменной. Аналогичным образом можно добавлять конструкции и в сообщения бота, СМС или Email-рассылки.

     1. Переменные

Вы можете вставлять переменные в текст сообщения бота, чтобы отображать динамические данные. Например, вместо статического текста используйте {{ client['FirstName'] }}, и Jinja заменит его на значение переменной «Имя» client['FirstName'] из профиля клиента.

Для получения переменной или вызова функций, в Jinja используются двойные фигурные скобки {{ }}. Например, переменные клиентов в VK CXhub имеют вид: 

  • {{ client['FirstName'] }} –Имя клиента
  • {{ client['Phone'] }} – Телефон клиента

В переменные можно добавлять фильтры. Например:

  • Upper – фильтр для преобразования значения client.FirstName в верхний регистр, то есть {{ client.FirstName | upper }} вернет имя клиента, написанное заглавными буквами.
  • Random – фильтр для выбора случайного числа в заданном диапазоне. Таким образом {{ range(1000, 9999) | random }} вернет случайное число в диапазоне  от 1000 до 9999 включительно.

     2. Условия

Jinja поддерживает условные конструкции, позволяя вам отображать разные части шаблона в зависимости от условий. Например, когда вы хотите показывать разные вещи в зависимости от ситуации: если пользователь в первый раз проходит сценарий, можно показать ему сообщение "Добро пожаловать!", а если прохождение повторное — "С возвращением!".

Для условных конструкций используются операторы «если — то» (if...else) — это управляющая конструкция, которая в зависимости от условия выбирает, какой блок кода выполнить.

Синтаксис условных операторов выглядит следующим образом: 

{% if condition %}...{% elif condition %}...{% else %}...{% endif %}. Условные операторы могут включать if, elif и else.

     3. Циклы

В Jinja можно использовать циклы для повторения элементов. Например, у вас есть товары с одинаковым набором параметров (название, стоимость, описание), и вы хотите отобразить их списком в email-письме, где будет повторяться один и тот же элемент (товар) с разными значениями.

Вам необходимо использовать конструкцию {% for item in sequence %}...{% endfor %}, которая позволяет повторять блок кода для каждого элемента в заданной последовательности.

     4. Фильтры

Jinja позволяет использовать фильтры для изменения вывода данных. Например,

  • Форматирование строк. Фильтр capitalize делает первую букву строки заглавной, а остальные — строчными.
  • Форматирование чисел. Фильтр format позволяет форматировать числа. Например, можно отобразить число с двумя знаками после запятой.
  • Работа с датами. Фильтр date позволяет форматировать даты. Например, можно отобразить дату в формате «день-месяц-год».
  • Объединение строк. Фильтр join позволяет объединять элементы списка в строку с заданным разделителем.
  • Удаление пробелов. Фильтр trim удаляет пробелы в начале и конце строки.
  • Проверяйте шаблоны на различных данных, чтобы убедиться, что они работают корректно во всех сценариях.
  • Перед использованием переменной в конструкции Jijja убедитесь, что она есть в списке переменных в VK CXhub.
  • Следите за пробелами. Некоторые фильтры могут игнорировать пробелы в строках. Используйте фильтр trim, чтобы удалить лишние пробелы, если это необходимо. Например, {{ "    Привет!    "|trim }}
  • Убедитесь, что вы используете правильный синтаксис для фильтров.

Например, фильтры применяются через вертикальную черту (|), и не забудьте про пробелы между переменной и фильтром. Оба варианта ниже являются правильными:

{{ variable | filter }}

{{ variable|filter }}

Более подробно о шаблонизаторе Jinja и синтаксисе вы можете почитать в официальной документации https://jinja.palletsprojects.com/en/stable/switching/.