Введение в скрипты
Возможности
Скрипты предназначены для решения задач, для которых не предусмотрены возможности готовых блоков в конструкторе ELMA Bot. Скрипты пишутся на языке TypeScript.
Скрипт — это блок кода, который запускается в определенный момент. Скрипт может читать и менять значения переменных бота, а также влиять на его поведение.
Есть два типа скриптов:
-
элемент сценария;
-
обработчик событий.
Элемент сценария
В конструкторе можно добавлять скрипты на диаграмме сценария. Такие скрипты запускаются в порядке, определенном сценарием.
Типичный алгоритм такого скрипта:
-
прочитать значения переменных бота;
-
выполнить вычисление;
-
записать данные в переменные бота.
Рассмотрим, как с помощью скрипта отправить SMS с кодом для подтверждения номера телефона пользователя:
Обработка ошибок в сценарии
Элемент «Скрипт» имеет два выхода:
-
успешный;
-
переход в случае ошибки.
Если скрипт отработал успешно, то сценарий бота продолжает работу, переходя к следующему шагу. Выход «Ошибка отправки» используется, чтобы определить поведение бота, если во время выполнения скрипта возникла ошибка.
Настройка запуска
Настройки запуска скрипта:
-
Максимальное время выполнения скрипта в секундах. Если скрипт выполняется дольше, чем указано в данном поле, то выполнение прерывается. Скрипт выполняется как шаг сценария, и пока сценарий не будет завершен, бот не переходит к следующим шагам. В это время пользователь ждет нового сообщения от бота, а при долгом ожидании может возникнуть ощущение, что бот «завис».
-
Количество повторных попыток выполннения скрипта. Если скрипт не удалось успешно выполнить с первой попытки, то будет предпринято столько попыток, сколько указано в этом поле.
-
Задержка времени в секундах между повторными попытками. Пауза между повторами скрипта.
Повторы рекомендуется включать, если скрипт взаимодействует с внешними системами, и необходима надежность. Когда внешний сервис недоступен, возникает ошибка, и скрипт повторно пытается связаться с сервисом. Если скрипт выполняет самостоятельные вычисления, то не нужно включать повторы, так как если в скрипте имеется дефект, то он будет возникать и при повторах.
Обработчик событий
С помощью скрипта обработчика событий можно решать следующие задачи:
-
добавление нового формата ввода данных;
-
кастомные правила валидации ввода;
-
автоматическое заполнение переменных (slot filling);
-
динамический набор кнопок;
-
определение условий прерывания сценариев.
Скрипт обработчика событий задается один на бот в разделе «Настройки бота». В одном скрипте размещается множество обработчиков, каждый квалифицируется типом события и дополнительными параметрами.
В примере скрипт загружает список ФИО через REST API и при при вводе переменной fio
добавляет кнопки с именами сотрудников.