Системные функции помогают преобразовать данные прямо в сценарии: округлить число, изменить текст, получить часть строки, посчитать элементы массива или вывести сведения о подписке. В этой статье собраны все функции, доступные в каталоге BotMan, с параметрами и короткими примерами.
BotMan сформирует запись автоматически. Примеры ниже показывают её технический вид — их удобно использовать, чтобы понять порядок параметров.
Важно: параметры указываются строго по порядку. Текст и названия полей объектов заключайте в кавычки. Переменные и поля безопаснее выбирать через интерфейс, а не вводить их служебный код вручную.
random. Возвращает целое число из указанного диапазона, включая обе границы. Параметры: минимум, максимум и необязательное резервное значение. Пример: {{random(1, 100)}}.round. Округляет число до заданного количества знаков после запятой. Параметры: число, количество знаков (по умолчанию 0) и необязательное резервное значение. Пример: {{round({{user_field_1}}, 2)}}.decimal_format. Преобразует число по шаблону. В шаблоне 0 означает обязательный разряд, # — необязательный, точка отделяет дробную часть, запятая — группы тысяч. Параметры: число, шаблон и необязательное резервное значение. Пример: {{decimal_format({{user_field_1}}, "#,##0.00")}}.format_date. Выводит дату в нужном виде. Параметры: дата, шаблон и необязательное резервное значение. Пример: {{format_date({{user_field_1}}, "dd.MM.yyyy HH:mm")}}. Частые обозначения: dd — день, MM — месяц, yyyy — год, HH:mm — время.weekday. Не принимает параметров и возвращает число от 1 до 7: понедельник — 1, воскресенье — 7. Пример: {{weekday()}}.weekday_str. Не принимает параметров и возвращает название текущего дня недели. Пример: {{weekday_str()}}. Для условий обычно удобнее числовая функция weekday().Дата и день недели вычисляются с учётом часового пояса проекта.
trim. Убирает пробелы в начале и конце строки. Пример: {{trim({{user_field_1}})}}.lower. Пример: {{lower({{first_name}})}}.upper. Пример: {{upper({{first_name}})}}.length. Возвращает количество символов в тексте. Пример: {{length({{user_field_1}})}}.replace. Параметры: исходный текст, что заменить, на что заменить. Пустое третье значение удаляет найденный фрагмент. Пример: {{replace({{user_field_1}}, "-", "")}}.substring. Параметры: текст, начальная позиция и необязательная длина. Отсчёт начинается с 0; отрицательная позиция считается с конца. Пример: {{substring({{user_field_1}}, 0, 5)}}.split_part. Параметры: текст, разделитель, номер части. Нумерация начинается с 1; отрицательное число выбирает часть с конца. Для переноса строки используйте \n. Примеры: {{split_part({{last_message}}, "\n", 2)}} и {{split_part({{user_field_1}}, "<SPLIT>", 1)}}.Если нужной части для split_part нет, функция возвращает пустую строку. Она не удаляет пробелы автоматически: при необходимости используйте композицию {{trim({{split_part({{user_field_1}}, "<SPLIT>", 1)}})}}.
Функции работают с пользовательскими и глобальными полями типа «Массив». В примерах user_field_x — служебное обозначение выбранного поля; выбирать массив рекомендуется через интерфейс.
array_length. Возвращает размер массива; для пустого или отсутствующего массива — 0. Пример: {{array_length(user_field_x)}}.array_contains. Для простого массива передайте массив и значение: {{array_contains(user_field_x, "Москва")}}. Для массива объектов передайте название свойства и значение: {{array_contains(user_field_x, "city", "Москва")}}. Результат — true или false.array_get. Параметры: массив, индекс и необязательное свойство объекта. Здесь индекс начинается с 0. Примеры: {{array_get(user_field_x, 0)}} и {{array_get(user_field_x, 0, "name")}}.array_sum. Складывает числовое свойство объектов. Пример: {{array_sum(user_field_x, "price")}}. Если третьим параметром указать количество, функция посчитает сумму произведений: {{array_sum(user_field_x, "price", "quantity")}}.Подробнее о формате и изменении массивов: «Массивы: создание, формат и использование».
count_field. Принимает код пользовательского поля и считает контакты, соответствующие значению текущего пользователя. Пример: {{count_field(field_code)}}.top_field. Принимает код поля и необязательный лимит. Возвращает нумерованный список значений с количеством контактов. По умолчанию выводится до 10 строк, максимальный лимит — 50. Пример: {{top_field(field_code, 10)}}.Функции ниже получают данные подписки текущего пользователя. Необязательный параметр planId позволяет запросить конкретный тарифный план; без него используется подходящая подписка пользователя.
subscription_end. Пример: {{subscription_end()}}.subscription_days_left. Пример: {{subscription_days_left()}}.subscription_status. Например: «Активна», «Ожидает оплаты», «Льготный период» или «Отменена». Пример: {{subscription_status()}}.subscription_active. Возвращает «да» или «нет». Пример: {{subscription_active()}}.subscription_plan. Пример: {{subscription_plan()}}.subscription_price. Возвращает сумму с валютой. Пример: {{subscription_price()}}.subscription_period. Например: «Ежемесячно» или «Ежегодно». Пример: {{subscription_period()}}.Пример с конкретным планом: {{subscription_status("planId")}}.
update. Получает значение из тела webhook по пути к полю. Параметры: путь и необязательное резервное значение. Пример: {{update(message.text, "Нет текста")}}.Подробнее: «Данные из внешнего события».
<SPLIT>.Первое сообщение: {{trim({{split_part({{Ответ_ChatGPT}}, "<SPLIT>", 1)}})}}
Второе сообщение: {{trim({{split_part({{Ответ_ChatGPT}}, "<SPLIT>", 2)}})}}
Третье сообщение: {{trim({{split_part({{Ответ_ChatGPT}}, "<SPLIT>", 3)}})}}
Между текстовыми блоками можно добавить задержки, чтобы диалог выглядел естественнее.
substring и array_get начинают отсчёт с 0, а split_part — с 1.