Зависимости
Разрабатывать сложные проекты со множеством тем, справочников и скриптовых расширений может быть неудобно и неэффективно, если хранить весь код проекта в одном сценарии. Вместо этого JAICP позволяет разбивать код сценария на изолированные составные части и подключать их в основной сценарий как зависимости. Такой подход имеет ряд преимуществ:
- Благодаря модульной архитектуре проект легче разрабатывать и поддерживать.
- Одну зависимость можно использовать во множестве разных проектов.
Зависимости можно подключить двумя способами:
- Как локальные модули. Код локальных модулей хранится в том же проекте, что и основной сценарий.
- Как внешние зависимости из удаленных репозиториев.
Локальные модули
Локальные модули полезны в случае, когда один большой сценарий требуется разбить на множество мелких сценариев в рамках одного проекта.
Конфигурация
Зависимости указываются в разделе dependencies
конфигурационного файла chatbot.yaml
.
Для локальных модулей должны быть указаны поля:
Поле | Описание | Значение |
---|---|---|
name | Имя, по которому зависимость подключается в сценарий | Название директории зависимости |
type | Тип зависимости | module |
Структура проекта
Предположим, что имеется существующий проект, состоящий из двух файлов:
main.sc
— основной сценарий.offtopic.sc
— «болталка» бота: ответы на часто задаваемые вопросы не по теме.
Пример файла offtopic.sc
:
patterns:
$you = (~ты/~вы)
theme: /
state: WhatCanYouDo
q!: * {~что * [$you] * (~уметь/научил*/способ*)} *
q!: * ([~что] $you/что-то) [еще] * (уме*/мож*/научил*/способ*) [делать] *
q!: * как* * $you * [поставлен*/установлен*] (сервис*/программ*) *
a: Я умею отвечать на вопросы.