Файлы сценариев
.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: Хорошо. Буду рад помочь вам в следующий раз!