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

Файлы сценариев

подсказка
Файлы сценариев — это основные файлы, задающие логику работы бота. Имеют расширение .sc.

main.sc или entryPoint.sc — главный файл сценария чат-бота, с которого начинается загрузка сценария. Файл должен находиться в папке src, где также могут находиться файлы с дополнительными сценариями, словари в формате .csv и скрипты в формате .js.

Файл сценария включает в себя: тему, список стейтов, паттерны, подгружаемые файлы и реакции. В начале сценария можно подгрузить другие сценарии или js-файлы. Для этого используйте тег require:

require: scenarios/*.sc
require: scripts/functions.js

Сценарий работы чат-бота разрабатывается на языке JAICP DSL. JAICP DSL (Domain Specific Language) — язык, предназначен для описания логики работы чат-бота и предоставляет удобный формат для описания конечного автомата, по которому работает чат-бот.

Структура файла

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

Более общие стейты включают в себя стейты с конкретной тематикой. Например, в стейт с обработкой запроса на кредит может быть вложен стейт с вопросом о типе кредита.

подсказка
Степень вложенности управляется отступами, подобно языкам python и yaml.

Чем больше отступ, и, соответственно, правее находится элемент, тем выше его уровень вложенности, имеет больше родительских стейтов, длиннее полное имя.

Например, рассмотрим фрагмент сценария:

theme: /BankTheme

state: Loan
q!: * кредит* *
a: Что вам подсказать?

state: TakeLoan
q: * ~оформить кредит* *
a: Какой тип кредита интересен?

state: LoanTypes
q: * (авто*|~жильё|персон*) *
go!: /FillTheLoanForm

Зависимость пути до стейта от вложенности:

СтейтПолный путь
Loan/BankTheme/Loan
TakeLoan/BankTheme/Loan/TakeLoan
LoanTypes/BankTheme/Loan/TakeLoan/LoanTypes

Пример файла сценария

patterns:
$hello = (салют|привет|здравствуй*|здарова|добрый (день|вечер))

theme: /

state: Hello
q!: $hello *
a: Здравствуйте!
go!: /Can I Help You?

state: Can I Help You?
a: Я могу вам помочь?

state: Yes
q!: * { (*можете|*можешь) * помочь } *
q: * [думаю] (да|*можете|*можешь|надеюсь|хотелось бы) *
a: Что Вас интересует?

state: No
q: * [да] [уже] (ничем|не надо|не нужно) [спасибо] *
a: Хорошо. Буду рад помочь вам в следующий раз!