Спросить ИИ
Русский RU
Перейти в Watbot

Интерпретатор JavaScript

Блок выполняет ваш код на JavaScript: считает, преобразует данные, меняет переменные и теги контакта, решает, куда сценарию идти дальше. Сам по себе блок ничего не отправляет в чат — только то, что вы отправите из кода.

Панель настроек блока «Интерпретатор JavaScript»Панель настроек блока «Интерпретатор JavaScript»

Настройки

В блоке одно поле — редактор кода. Начните набирать имя функции, и редактор предложит подсказку.

Редактор кода с подсказкой: на «setCon» предложены setContactTag() и setContactVariable()Редактор кода с подсказкой: на «setCon» предложены setContactTag() и setContactVariable()

Что доступно коду

Данные контакта — готовые переменные. Все значения — строки. Если у контакта чего-то нет, переменной не будет — проверяйте через typeof phone !== 'undefined'.

Переменная Что в ней
id ID контакта на платформе
name, first_name, last_name Имя целиком, первое слово имени, второе слово
phone, email, address Телефон, почта, адрес
username Имя пользователя в мессенджере
telegram_id, max_id ID человека в Telegram и MAX
created_at Дата появления контакта в виде 2026-01-31 12:00:00
bot_id ID бота

Функции:

Функция Что делает
getContactVariable(name) Возвращает значение переменной контакта или undefined, если её нет. Значение — строка: для расчётов оберните в Number()
setContactVariable(name, value) Записывает переменную контакта. Значение — строка, число или true/false. Объект или массив сначала превратите в строку: JSON.stringify(value)
deleteContactVariable(name) Удаляет переменную контакта
getContactTags() Возвращает массив тегов контакта
hasContactTag(name) true, если у контакта есть тег
setContactTag(name) Добавляет тег
deleteContactTag(name) Снимает тег
getGlobalVariable(name) Возвращает глобальную переменную бота
setGlobalVariable(name, value) Записывает глобальную переменную. Значение сохраняется строкой
deleteGlobalVariable(name) Удаляет глобальную переменную
sendMessage(text) Отправляет контакту текст. За один запуск — до десяти сообщений
goToBlock(id) Переводит контакта в блок с указанным ID. Вызвать можно один раз за запуск
disableContinue() Отключает связь «Продолжить» для этого запуска
hash_hmac(algo, text, key, format) Подпись HMAC. Алгоритм — md5, sha1, sha256, sha512 или md4. Результат — в шестнадцатеричном виде, а если четвёртым параметром передать 'base64' — в Base64
base64_encode(text), base64_decode(text) Кодирование и раскодирование Base64

Параметры, возвращаемые значения и примеры каждой функции — в разделе «JavaScript API».

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

Посчитать цену со скидкой и сохранить результат:

var price = Number(getContactVariable('цена'));
var total = Math.round(price * 0.9);
setContactVariable('итог', total);

Следующий блок покажет результат автоподстановкой {{ $итог }}.

Отправить контакта с тегом в отдельную ветку:

if (hasContactTag('vip')) {
    goToBlock(12345);
    disableContinue();
}

Вместо 12345 подставьте ID нужного блока — он виден в настройках блока. goToBlock сам по себе не отменяет связь «Продолжить»: без disableContinue() бот выполнит и указанный блок, и тот, что подключён к «Продолжить».

Выходы

  • «Продолжить» — срабатывает после выполнения кода, если код не вызвал disableContinue().

Ограничения

  • Язык — JavaScript стандарта ES5: без let и const, стрелочных функций и шаблонных строк.
  • Регулярные выражения — без просмотра вперёд и назад и без обратных ссылок, подробнее — в разделе «Язык».
  • Код — до 16 384 символов.
  • На выполнение — 5 секунд. Код, который не уложился, останавливается с ошибкой.
  • Запросов в сеть из кода сделать нельзя — для этого есть блок «HTTP-запрос».

Если код не работает

Откройте «Лог выполнения» в настройках блока. В записи видны исходный код, список выполненных действий и значение последнего выражения — его удобно использовать для отладки: допишите в конец кода имя переменной, и её значение попадёт в лог.

«Лог выполнения» блока JavaScript: исходный код, значение последнего выражения и список действий«Лог выполнения» блока JavaScript: исходный код, значение последнего выражения и список действий

Внимание

Если код завершился с ошибкой, её текст уйдёт контакту в чат, а сценарий пойдёт дальше по связи «Продолжить». Проверяйте код в превью бота, прежде чем запускать его на людях.