JavaScript в сценарии
Несколько п римеров использования 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
невозможны.