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


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