Документация › Для разработчиков › Язык выражений

Язык выражений (expressions)

Обновлено 4 октября 2026 г.

Подставляй в тексты бота живые данные: Привет, {{client_name}}!. Выражения работают в промпте, дожимах и шаблонах: на основе Handlebars, безопасно.

⏱ 8 мин · 👤 для владельца и разработчика · 🟢 live

За 30 секунд:
  • Синтаксис это двойные фигурные скобки: {{client_name}}, {{phone}}, {{stage}}.
  • Работает в системном промпте, дожимах, шаблонах уведомлений, тест-чате.
  • Есть помощники: даты/время, текст ({{upper …}}), условия ({{#if …}}), математика.
  • Это безопасный шаблонизатор (Handlebars): произвольный код не выполняется.

Что это и где работает

Выражения это «вставки» в тексты бота, которые на лету заменяются на реальные данные диалога. Например, Здравствуйте, {{client_name}}! превратится в Здравствуйте, Алмас!.

Работают в: системном промпте, сообщениях дожимов, шаблонах уведомлений, тест-чате.

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


Переменные и помощники: живой справочник

Полный список переменных ({{client_name}}, {{phone}}, {{stage}}, {{data.поле}}…) и помощников (даты, текст, условия {{#if}}, математика, {{digits}}): в живом справочнике выражений. Он строится прямо из кода движка, поэтому всегда совпадает с тем, что реально умеет бот: здесь копию не держим, чтобы она не устаревала.

💡 {{client_name}} и {{name}}: одно и то же, оба работают. Аналогично {{client_phone}} и {{phone}}.

🔒 {{phone}} берёт номер, который клиент сам назвал и бот сохранил в анкете, а если такого нет, номер чата. Решаете по номеру, что показать (проверка заказа, брони, личного кабинета), берите {{channel_phone}}: это номер, с которого человек пишет, его не меняют ни анкета, ни ИИ. В Telegram и Instagram номера чата нет, там {{channel_phone}} пустой.

Пример:

{{#if client_name}}Здравствуйте, {{client_name}}!{{else}}Здравствуйте!{{/if}}
Сегодня {{day_of_week}}, {{date}}. Ваш статус: {{default lead_status "новый"}}.
🕐 Дата и время ({{date}}, {{time}}, {{now}}, {{day_of_week}}, {{format_date}}) считаются по часовому поясу проекта из настроек бота. Если пояс не задан, по Алматы. Другой пояс можно указать первым параметром: {{time "Europe/Moscow"}}.
💡 Числа из анкеты сравниваются как числа: {{#if (eq data.amount 100)}} сработает и тогда, когда клиент написал «100» текстом, а {{#if (gt data.amount 1000)}} понимает «5 000» с пробелом.

Безопасность

Это безопасный шаблонизатор, а не выполнение кода. Нельзя запустить произвольный JS, обратиться к файлам или сети. Встроены защиты от перегрузки: ограничения на длину шаблона, число и глубину условных блоков, размер данных и времени выполнения. Если шаблон «слишком тяжёлый», условные блоки останутся текстом, а простые вставки всё равно подставятся, бот не зависнет.

📌 Невалидное выражение (опечатка в скобках) не ломает сообщение: оно останется текстом, а остальные вставки в том же тексте подставятся как обычно.

Простыми словами

Выражения это способ вставлять в тексты бота «живые» кусочки. Пишешь в промпте Привет, {{client_name}}!, и каждому клиенту бот подставит его имя. Можно вставлять телефон, текущую дату, стадию разговора и собранные данные. Есть и помощники посложнее: написать дату в нужном формате, сделать текст заглавными буквами, показать разный текст в зависимости от условия («если имя известно, поздоровайся по имени, иначе просто привет»).

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


Дальше: → Формат данных и интеграция фронта
Связано: Системный промпт · Дожимы · Кастомные вебхуки
Не получилось? → напиши в саппорт