Ошибки и ограничения
Что видит контакт
Если выражение посчитать не удалось — например, в переменной текст вместо числа или такой функции нет, — контакт увидит на этом месте пустоту. Если в записи опечатка (не закрыта скобка), вставка останется в тексте как написана. В обоих случаях причина появится в превью бота и журнале блока, а остальной текст сообщения отправится как обычно.
Выражением бот считает текст, в котором есть переменная через $ или вызов функции, например round(. Если ни того ни другого нет — скажем, {{#each items}}, — бот оставит текст как написано и ошибкой его не считает. Так не ломаются тексты, где фигурные скобки нужны для другого.
Где найти причину
- Редактор блока. Пока вы печатаете, части автоподстановки подсвечиваются цветом, а та, что не сработает, подчёркивается красным — под полем появляется причина.
- Превью бота. Нажмите «Проверить бота» в конструкторе и пройдите сценарий. Если вставка не сработала, под чатом появится жёлтый блок: название блока (ссылка на него в схеме), сама вставка и причина.
- Журнал блока. У блоков с журналом (HTTP-запрос и другие) ошибки автоподстановок записываются в журнал прогона, в раздел «Template errors».
Частые ошибки
| Как написано | Что не так | Как исправить |
|---|---|---|
Имя переменной с пробелами записано через $ |
Бот читает имя после $ только до пробела |
{{ var("Имя клиента") }}, см. имена с пробелами |
Глобальная переменная в выражении записана без global |
В выражениях глобальные переменные читаются только через функцию | {{ global("Курс (USD)") * 2 }} |
{{ round($цена * 0.9 }} |
Не закрыта скобка | {{ round($цена * 0.9) }} |
{{ discount($цена, 10) }} |
Такой функции нет | Проверьте название в справочнике функций |
{{ $город * 2 }} |
В переменной текст, а не число | Проверьте, что в переменной число |
{{ phone + 1 }} при пустом телефоне |
Пустое значение | Задайте запасное: {{ (phone ?? 0) + 1 }} |
{{ upper(getInviteLink()) }} в кнопке |
В кнопках доступны только простые функции | Вынесите ссылку в текст сообщения |
{{ $a > 1 ? messageToTelegram("...") : "" }} |
Функции, которые отправляют сообщения или записывают переменные, нельзя ставить внутрь выражения | Используйте функцию отдельной вставкой |
Ограничения
| Что | Предел |
|---|---|
Длина выражения внутри {{ ... }} |
1000 символов. Длиннее — текст остаётся как написан |
| Результат одной вставки | 10 000 символов сверх длины прочитанных переменных. Значение переменной выводится целиком любой длины, в том числе через var(), с trim, upper, len над ним и с припиской: {{ $x ~ "!" }} |
| Выражений в одном тексте | 200 |
| Функций в одном тексте | 100 простых и 10 остальных. Сверх предела функции не выполняются: отдельная вставка вроде {{ getInviteLink() }} останется в тексте как написана, а внутри выражения на месте функции будет пустота и ошибка в журнале. Чтение переменной ($имя, var(), global()) функцией не считается |
В выражениях недоступны регулярные выражения (matches), диапазоны (1..10) и обращение к внутренним данным платформы.