Перейти к основному содержимому

Шаблоны замен и функции

Шаблоны и функции используются в текстах сообщений, выражениях и условиях блоков и действий. Ниже — полный справочник, сгруппированный по назначению.

Где можно использовать

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

Как читать справочник

Все шаблоны — в моноширинном шрифте. Шаблоны вида [Имя] подставляются автоматически. Шаблоны вида #{имя} — это переменные.


Шаблоны блоков

Эти шаблоны используются в блоках сценария.

Переменные и выражения

ШаблонОписание
#{переменная}Хранилище данных — строка или массив (при выборке из списка/Google Таблиц). Обнуляется при завершении или перезапуске сценария. Доступна во всех блоках и действиях. Можно сохранять простые математические выражения с участием других переменных и шаблонов.
#{g_globalname}Значение глобальной переменной — общей для всех подписчиков. К имени переменной добавляется префикс g_: переменная «Курс валют» читается как #{g_Курс валют}. Работает в тексте блока, в кнопках и в условиях перехода, а также во всех полях сценария действий. Значение читается в момент отправки блока, поэтому оно всегда свежее.
{{ X + Y }}Выражение, которое будет вычислено.
[Actions] или [External]Сообщение, возвращаемое сценарием действий обратно в сценарий. Используется только в поле сообщения блока.

Данные подписчика

ШаблонОписание
[Name]Имя подписчика.
[FullName]Имя и фамилия подписчика.
[ClientLink]Ссылка на профиль подписчика в мессенджере, если возможно.
[ClientID]ID подписчика в мессенджере или бот-лендинге. Используется для отправки сообщений в бот, выборки и сохранения данных в списках и таблицах.
[Id] [ID] [id]Короткие псевдонимы [ClientID] — подставляют то же значение. Работают и в блоках, и в сценариях действий, и в магазине. В новых ботах лучше писать [ClientID]: имя говорит само за себя.
[Messenger]Мессенджер или бот-лендинг подписчика: telegram, max, viber, vk, wa, lp, jivo.
[BotID]ID бота, через который подписчик взаимодействует с автоворонкой. Используется для отправки сообщений в бот и работы со списками/таблицами.

Ответы подписчика

ШаблонОписание
[Answer], [A], [Ответ]Последний ответ подписчика.
[AnswerN]Ответ подписчика на блок с порядковым номером N. Также содержит нажатие кнопки типа «Значение».
[ALast(X,Y,...)]Ответ подписчика, пришедший последним, где X, Y — порядковые номера блоков.
[AnswerID(id)]Ответ подписчика на блок с указанным id.
[ALastID(id1,id2,...)]Ответ подписчика, пришедший последним, из блоков с указанными id.
[DataN]Данные, поступившие в сценарий извне — из другого сценария или с внешнего сервера. N — id данных (цифры или буквы). Возникает, например, при передаче данных через кнопки в сценарии других пользователей.

Дата и время

ШаблонОписание
[Date]Текущая дата в формате дд.мм.гггг.
[DaysBetween(date1, date2)]Разница в днях между датами date2 и date1.
[DaysInMonth]Количество дней в текущем месяце.

Генерация

ШаблонОписание
[GenStrN]Строка из N символов a-zA-Z0-9.
[GenNumN]Цифровая строка из N символов.
[GenerateEmail]Случайный email-адрес.
[GeneratePhone(prefix)]Случайный номер телефона, prefix — код страны. Пример: [GeneratePhone(+7)].

Отправка контента

ШаблонОписание
[SendContact(phone, first_name, last_name)]Отправляет контакт. Пример: [SendContact(+7913587xxxx, Иван, Петров)]. Для Telegram и бот-лендинга.
[SendLocation(latitude, longitude)]Отправляет карту по координатам. Пример: [SendLocation(55.7519, 37.6175)]. Только Telegram.
[SendVenue(latitude, longitude, title, address)]Отправляет карту с местом мероприятия. Пример: [SendVenue(55.7519, 37.6175, Кофейня, ул. Чайная, 123)]. Только Telegram.
[Sticker(эмодзи|мессенджер|идентификатор)]Отправляет стикер отдельным сообщением, а в тексте от шаблона остаётся эмодзи. Такую метку конструктор ставит сам, когда подписчик прислал стикер — см. ниже. Telegram и MAX; в остальные мессенджеры уходит картинка стикера, если мессенджер её дал.
[Files(url1, url2, ...)]Отправляет фото/файлы по URL. Шаблон удаляется из текста, файлы отправляются отдельно. Вместо URL можно указать переменную с URL'ами через запятую или несколько переменных. Если в Telegram отправляется несколько фото, их можно сгруппировать в настройках блока. Подходит, например, для отправки сгенерированных нейросетью картинок.

Стикер от подписчика

Стикер — не файл: в Telegram и MAX это отдельный объект со своим идентификатором, скачать и переслать его картинкой нельзя. Зато можно отправить тот же самый стикер заново.

Поэтому ответом подписчика становится метка:

[Sticker(😀|telegram|CAACAgIAAxkBAAEB...)]

У MAX в метке есть и четвёртая часть — ссылка на картинку стикера:

[Sticker(стикер|max|db4ff394c4|https://i.oneme.ru/i?r=...)]

Она ведёт себя как обычный текст: попадает в [Answer] и #{_message}, записывается в список, уходит в «Отправку в бот». А в момент отправки конструктор превращает её в эмодзи и отправляет стикер отдельным сообщением:

Текст блока:  Клиент ответил: [Answer]
Подписчик получит: «Клиент ответил: 😀» и следом сам стикер
Стикер от бота

Метку можно написать и руками, коротко: [Sticker(идентификатор)]. Идентификатор берут из переменной #{sticker_id} — например, сохранив в список любимый стикер подписчика, чтобы отвечать ему тем же.

В другом мессенджере — картинкой

Идентификатор стикера понимает только тот мессенджер, откуда стикер пришёл. Поэтому в чужой мессенджер конструктор отправляет картинку стикера: если MAX дал на неё прямую ссылку, она уходит обычным вложением — в Telegram, ВКонтакте, Viber, WhatsApp. Подписчик увидит сам стикер, а не слово «стикер».

Картинку MAX присылает не всегда: иногда вместо неё в ссылке приходит его заглушка — серый смайлик. Такую конструктор не пересылает, чтобы получатель не гадал, что это было; в тексте остаётся слово «стикер».

Со стикерами Telegram так не выйдет вовсе: ссылку на картинку он не присылает. Ответ подписчика из Telegram, пересланный в MAX, останется эмодзи в тексте — сообщение не потеряется, но стикера не будет.

Отдельные части стикера лежат в переменных #{sticker_id}, #{sticker_emoji}, #{sticker_set} и #{sticker_url} — см. Системные переменные.

Instagram: ответ на комментарий

По умолчанию любое сообщение боту в Instagram уходит в Директ. Чтобы вместо этого ответить на комментарий к посту/Reels, добавьте в начало текста сообщения маркер. ID комментария берётся из системной переменной #{_ig_comment_id} (заполняется на входящем событии-комментарии).

  • [IGComment:#{_ig_comment_id}]текстпубличный ответ под комментарием. Пример: [IGComment:#{_ig_comment_id}]Спасибо за отзыв!
  • [IGPrivateReply:#{_ig_comment_id}]текстприватный ответ (личное сообщение в ответ на комментарий). Работает даже вне 24-часового окна, но один раз на комментарий и в течение 7 дней. Пример: [IGPrivateReply:#{_ig_comment_id}]Ответили вам в личные сообщения 🙂
Как это работает
  • Маркер действует на одно сообщение по принципу «или-или»: с маркером сообщение уходит ответом на комментарий и не дублируется в Директ; без маркера — обычный Директ.
  • Работает и в блоках, и в сценарии действий (включая «Отправку в бот»).
  • Если отправляете в отрыве от события-комментария (другому подписчику, в отложенной цепочке/рассылке) — сохраните #{_ig_comment_id} заранее в переменную и подставляйте её.
  • Требуется право приложения instagram_manage_comments. Подробнее о переменных — в статье Системные переменные.

Форматирование и текст

ШаблонОписание
[SumInWords(SUM, ruble, kopek)]Заменяет число SUM прописью. ruble и kopektrue или false для подстановки слов «рубли» и «копейки».
[CharUp]Делает следующий символ за шаблоном с большой буквы. Сам шаблон удаляется.
[CharLow]Делает следующий символ за шаблоном с маленькой буквы. Сам шаблон удаляется.
[StrLen(Строка)]Возвращает длину строки. Можно использовать шаблоны или переменные (в сценариях действий).
[Round(Число, Точность)]
[Round(Число)]
Округление числа до указанного знака. Без указания точности — до целого.
[LineBreak]Перенос строки. Используется, например, для отправки сообщения напрямую через Telegram Bot API в группу или канал.

Управление сценарием

ШаблонОписание
[Exit]Заменяется ключевым словом выхода из сценария. Используется в сообщении выхода. Только для блоков.
/to + ID блокаПереход на определённый блок сценария. Пример: /toABCD.

Шаблоны сценариев действий

Все шаблоны блоков работают и здесь

Все шаблоны из раздела выше доступны и в сценариях действий. Ниже — дополнительные шаблоны, специфичные для сценариев действий.

Чтобы вывести сообщение из сценария действий в блоке — используйте в поле блока шаблон [Actions].

Глобальные переменные

Чтение — шаблоном #{g_Название} из раздела «Шаблоны блоков» выше: он работает и в блоках, и в сценариях. Здесь — только то, что нужно самому действию.

ШаблонОписание
[GlobalVar]Текущее значение глобальной переменной. Используется в действии «Операции с данными» для изменения её значения или присвоения обычной переменной.

Случайные значения

ШаблонОписание
[Random(X, Y)]Случайное число между X и Y.

Операции с датами

ШаблонОписание
[AddDate(date, N)]Прибавляет к date N дней. Возвращает дд.мм.гггг.
[AddMinutes(date, M)]Прибавляет к date (дд.мм.гггг или дд.мм.гггг чч:мм) M минут. Возвращает дд.мм.гггг чч:мм.
[DiffDates(date1, date2)]Разница между датами в днях. Формат дд.мм.гггг.
[DiffMinutes(date1, date2)]Разница между датами в минутах. Формат дд.мм.гггг чч:мм.
[WeekDay(date)]День недели по дате date. Возвращает 1–7, где 1 — понедельник.
Сравнение дат

Даты сравниваются прямо в поле условий и выражений — через значения, шаблоны или переменные. Например: #{date1} > [CurrentDate]. При выборках из списков можно сравнивать поле, содержащее дату, со значением, которое вы указываете.

Текущая дата и время

ШаблонОписание
[CurrentDate]Текущая дата формата дд.мм.гггг.
[NextDate]Дата завтрашнего дня дд.мм.гггг.
[CurrentTime]Текущее время чч:мм по часовому поясу аккаунта.
[CurrentWeekDay]Текущий день недели. 1–7.
[CurrentDay]Текущий день месяца.
[CurrentDayNormal]Текущий день месяца с ведущим нулём.
[CurrentMonth]Номер текущего месяца. 0–11 (0 — январь).
[CurrentMonthNormal]Номер текущего месяца с ведущим нулём. 01–12 (01 — январь).
[CurrentYear]Текущий год гггг.
[CreationDate]Дата добавления подписчика в базу дд.мм.гггг.

Текущее состояние сценария

ШаблонОписание
[CurrentMessage]Порядковый номер блока, на котором сейчас находится сценарий.
[CurrentMessageID]ID блока, на котором сейчас находится сценарий.
[PrevMessage]Порядковый номер предыдущего блока.
[PrevMessageID]ID предыдущего блока.
[Block]Название текущего блока.
[PrevBlock]Название предыдущего блока.
[Self]1. Текущее значение поля при работе со списками, Google Таблицами и CRM.
2. Текущее значение ID сделки и ID контакта в CRM.

Информация об аккаунте

ШаблонОписание
[AccountActive]1 — аккаунт активен, 0 — неактивен.
[AccountTrial]1 — пробный период, 0 — пробный период закончился.
[AccountTariff]ID текущего тарифа.

Реферальная система Telegram

ШаблонОписание
[Balance]Баланс подписчика.
[Paid]Сумма выплат.
[Level]Уровень в реферальной системе.
[RefererClientID]ClientID реферера.
[RefererClientLink]Ссылка на профиль реферера в Telegram.
[RefererFullName]Полное имя реферера в Telegram.
[RefererName]Имя реферера в Telegram.

Дополнительно

Системные переменные

Существуют ещё системные переменные — их описание на отдельной странице: Системные переменные.

Шаблоны магазина и записи на услуги

Готовые модули магазина и записи на услуги имеют собственные шаблоны. Их описание находится прямо в рабочих областях этих модулей.