JAICP DSL
JAICP DSL — язык, предназначенный для разработки логики работы чатбота. JAICP DSL предоставляет удобный формат для описания конечного автомата, по которому работает чатбот.
Файл сценария — древовидная структура. Степень вложенности управляется отступами, подобно языкам python и yaml.
В JAICP DSL используются языковые конструкции:
- Tеги NLU — описывают намерения пользователя.
- Декларативные теги — описывают структуру чатбота, задают зависимости между файлами, правила перехода между состояниями.
- Теги реакций — выполняются при попадании диалога в определенное состояние.
Локальные и глобальные теги
В DSL мы выделяем глобальные и локальные теги. Глобальные теги содержат ! в названии, например:
intent— локальный тег.intent!— глобальный тег.
Локальный тег активен только в контексте диалога, переход в стейт возможен из ближайшего родительского или из дочерних стейтов. Глобальный тег позволяет осуществить переход диалога в данный стейт из любого другого стейта.
Список тегов
| Тег | Описание |
|---|---|
intent |
После тега записывается путь к интенту. Интент — ключевая единица NLU-сервиса, объединяющая в себе набор фраз, намерение пользователя и другую метаинформацию. |
q |
После тега записывается паттерн, описывающий ключевые слова и выражения пользователя. |
e |
Предполагает использование единичного примера, эталона для сравнения с запросом пользователя. Один тег — одна реплика. |
eg |
В случае, когда примеров для сравнения много, использовать тег e нецелесообразно. В таких случаях используется eg и задается необходимое количество примеров в отдельном файле справочнике. |
event |
Реакция на событие, происходящее в канале, аккаунте или проекте. |
init |
Тег позволяет задать скрипт, который будет выполнен при загрузке сценария один раз. Скрипт может содержать код, устанавливающий какие-либо обработчики, создающий временные переменные, выполняющий другую инициализацию. |
patterns |
После тега объявляются именованные паттерны в .sc-файле, они доступны для использования во всех файлах проекта. |
require |
Тег служит для загрузки зависимых файлов и, по сути, является альтернативой указанию всех зависимых файлов в chatbot.yaml. |
state |
Cостояние чатбота. Стейты могут иметь вложенную структуру. |
theme |
Точка входа чатбота, в это состояние переходит система при запуске бота. |
a |
Передает текст ответа чатбота. |
buttons |
Кнопки. Осуществляют переходы между стейтам сценария. |
go |
Тег выполняет отложенный переход, при этом реакции указанного стейта не выполняются, но обработка следующей фразы происходит в контексте указанного стейта. |
go! |
Тег обеспечивает немедленный переход, при этом выполняются все реакции указанного стейта. |
if/else/elseif |
Теги для записи простых условий, вывода различных ответов в зависимости от условий, перехода в другие состояния по условиям. |
inlineButtons |
Inline-кнопки. При клике на inline-кнопку могут передаваться данные или URL (callback_data или URL, соответственно). Также inline-кнопки отображаются не под диалогом, а внутри него в виде реплик чатбота. |
newSession |
Тег определяет запуск новой сессии. |
random |
В результате выполнения будет выполнена только одна из вложенных реакций. |
script |
Скрипт реакции позволяет выполнять функции, логику обработки запросов, вызовы внешних систем, работу с памятью и другое. |
audio |
Тег позволяет использовать аудиозаписи в ответах бота. |
image |
Вывод изображения. |