This site is no longer updated.Go to new Conversational Cloud docs

JAICP DSL


JAICP DSL — язык, на котором пишутся сценарии ботов в JAICP. Он предоставляет удобный формат для описания логики, по которой работает бот.

Основу JAICP DSL составляют теги. Каждый тег имеет название, которое оканчивается двоеточием. Кроме того, у каждого тега могут быть:

  • Значение, которое указывается непосредственно после названия. Значение есть у большинства тегов и напрямую задает их поведение.
  • Параметры — пары «ключ — значение», которые отделяются от названия или значения тега (если оно есть) двумя вертикальными чертами. Если параметров несколько, они отделяются друг от друга запятыми. Параметры позволяют модифицировать поведение тега.
  • Вложенные данные, которые указываются на отдельной строке после объявления тега и выделяются отступами. В качестве вложенных данных выступают другие теги.
tag1: value1
    tag2: value2 || paramKey = "paramValue", booleanParam = true

Степень вложенности управляется отступами, как в языках Python или YAML. В одном и том же файле сценария на каждый уровень вложенности должно быть одинаковое число пробелов (обычно 4).

В JAICP DSL используются теги следующих типов:

Декларативные теги

Декларативные теги описывают общую структуру сценария: определяют состояния, на основе которых строится логика работы бота, задают подключаемые файлы, а также выполняют инициализацию кода и паттернов.

Тег Описание
init Задает блок кода, который будет выполнен при загрузке сценария один раз. Обычно такой код выполняет инициализацию глобальных переменных и функций.
patterns Объявляет именованные паттерны, используемые в сценарии.
require Используется для подключения файлов к сценарию.
state Объявляет стейт — состояние, в котором может находиться контекст диалога. Стейты могут неограниченно вкладываться друг в друга.
theme Объявляет тему. Стейты могут находиться только внутри темы.

Теги активации

Теги активации определяют действия пользователей или события, которые могут перевести контекст диалога в тот или иной стейт. Все теги активации делятся на два вида: локальные и глобальные.

  • По локальному тегу переход в стейт возможен только из ближайшего родительского, из соседних или дочерних стейтов.
  • По глобальному тегу диалог может перейти в стейт из любого другого стейта в сценарии. Названия глобальных тегов заканчиваются на !.
Тег Описание
q
q!
Объявляет паттерн, по которому диалог может перейти в стейт.
intent
intent!
Объявляет интент, по которому диалог может перейти в стейт.
intentGroup
intentGroup!
Объявляет группу интентов, по которым диалог может перейти в стейт.
event
event!
Объявляет событие, по которому диалог может перейти в стейт.

Теги реакций

Теги реакций задают реакции, которые выполняет бот при попадании в стейт.

Тег Описание
a Отправляет текстовый ответ.
audio Отправляет аудиофайл.
buttons Отправляет кнопки, по которым возможен переход в другие стейты.
go Выполняет отложенный переход в другой стейт. При этом реакции указанного стейта не выполняются, но обработка следующего запроса происходит в контексте этого стейта.
go! Выполняет немедленный переход в другой стейт. При этом выполняются все реакции указанного стейта.
if
elseif
else
Обеспечивают ветвление сценария — выполнение различных реакций в зависимости от заданных условий.
image Отправляет изображение.
inlineButtons Отправляет инлайн-кнопки.
Нажатие на инлайн-кнопку вызывает отправку данных или переход по ссылке. Инлайн-кнопки отображаются не под диалогом, а внутри него в виде реплик чат-бота.
newSession Запускает новую сессию.
random Выполняет одну из случайно выбранных вложенных реакций.
script Выполняет код на JavaScript.
video Отправляет видеофайл.

Теги действий

Теги действий выполняют сложные и часто повторяющиеся действия бота или фрагменты сценариев.

Тег Описание
Confirmation Позволяет запросить у пользователя подтверждение какого-либо действия.
Email Отправляет сообщение на указанный email.
EndSession Завершает текущую сессию пользователя и очищает все сессионные данные.
GoogleSheets Реализует интеграцию с сервисом Google Таблицы. С помощью этого тега бот может получать данные из таблиц или записывать в них данные.
HttpRequest Отправляет HTTP-запрос. С помощью этого тега бот может получать данные из внешнего ресурса и сохранять их в переменные.
InputFile Позволяет запросить у пользователя файл и сохранить ссылку на него в переменную.
InputNumber Позволяет запросить у пользователя число в указанном диапазоне и сохранить его в переменную.
InputPhoneNumber Позволяет запросить у пользователя номер телефона и сохранить его в переменную. Поддерживаются только российские номера.
InputText Позволяет запросить у пользователя произвольный текст и сохранить его в переменную.
Sms Отправляет SMS на указанный номер телефона. Поддерживаются только российские номера.
TelegramPayment Отправляет форму оплаты через Telegram.
TransferCallToOperator Переводит звонок на оператора (для ботов в телефонном канале).
TransferToOperator Переводит диалог на оператора платформы онлайн-чатов (для текстовых ботов).

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