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

JavaScript в сценарии

подсказка
JAICP DSL использует вставки JavaScript-кода спецификации ECMAScript 5 для описания бизнес-логики и интеграции с внешними системами.

Несколько примеров использования JS-кода в проектах:

  • Бот может хранить в переменных определенную информацию, например имена клиентов, и в дальнейшем её переиспользовать в течение диалога.
  • Бот также может производить вычисления, проверять ранее сохраненную информацию о пользователе и реагировать в зависимости от результата. Например, можно проверять канал, в котором происходит общение с ботом, и в зависимости от канала коммуникации отображать элементы графического интерфейса.

Структура JS-кода в проекте

JS-код в проекте:

ОбъектОписание
if
else
elseif
Функции-условия, используемые для описания правил условных переходов.
scriptСкриптовые вставки для произведения любых вычислений и вызова внешних систем.
initСкрипты инициализации, выполняются только один раз при загрузке сценария и используются для создания глобальных переменных и привязки pre/post-процессов.
Подключаемые JS-файлыФайлы подключаются посредством require. Содержат объекты и функции, доступные к использованию в любых других скриптах.
Встроенные переменныеПеременные, предоставляемые платформой, которые могут быть использованы в сценарии бота.
Встроенные функцииСпециальные объекты и функции, предоставляемые платформой. Например, предоставляют функционал для вызова матчера или внешних сервисов.
Встроенные сервисыJS-библиотеки, загружаемые автоматически вместе с каждым ботом.

JS-файлы

Вы можете прописать логику непосредственно в файле сценария .sc. Но мы рекомендуем выносить весь JS-код в отдельный файл. Для этого вам потребуется создать в папке src файл с расширением .js, например, functions.js. Напишите в нем функции, которые потом можно будет вызвать из сценарного файла после тега script.

Обратите внимание, что JS-файлы содержат объекты и функции, доступные к использованию в любых других скриптах. Файлы подключаются в начале сценария при помощи тега require:

require: scripts/functions.js

Глобальный скоуп

Глобальный контекст выполнения доступен явно по имени $global, аналогично объекту window.document в браузере. В глобальном контексте выполнения сохраняются все загружаемые функции и переменные, объявленные непосредственно в JS-файлах.

Объект $global доступен для модификации только на стадии инициализации бота, когда выполняется загрузка JS-файлов и выполняются блоки init. После завершения инициализации изменения объекта $global невозможны.