Что изменилось в Alice-ktx? Обзор новых возможностей

от автора

В прошлой статье я рассказывал о фреймворке Alice-ktx, и с тех пор в нём появилось много нового. Давайте разберём ключевые изменения.

Документация

Первое, что стоит отметить — с момента прошлой статьи появилась полноценная документация, которая упрощает работу с фреймворком.

Environment

При использовании Handler вы работаете в так называемом окружении. Существует два типа окружения:

interface ShouldRequestEnvironment {       val message: MessageRequest          // Тело запроса.       val context: ReadOnlyFSMContext      // FSM Context (только для чтения).       val dialogApi: DialogApi?            // Методы взаимодействия с API Диалогов.        fun isValidFor(filter: Filter): Boolean = filter.checkFor(this)   }    interface ProcessRequestEnvironment : ShouldRequestEnvironment {       override val context: MutableFSMContext  // FSM Context с возможностью изменения.   }  

Методы Handler

  • shouldHandle — определяет, подходит ли хэндлер для обработки текущего сообщения.

  • processRequest — выполняет обработку и формирует ответ.

interface Handler {       suspend fun shouldHandle(request: ShouldRequestEnvironment): Boolean       suspend fun processRequest(request: ProcessRequestEnvironment): MessageResponse   }  

окружение используется не только в Handler, но и в:

Фильтры

Добавлены фильтры для удобного определения условий обработки.

Пример использования isValidFor из ShouldRequestEnvironment:

message({ isValidFor(Filter.Authorized and Filter.NewSession) }) {       response {           text = messageText       }   }  

Storage и FSMContext

Раньше FSMContext полностью отвечал за хранение данных, совмещая логику состояния диалога с механизмами сохранения. В новой версии произошло важное изменение:

  • Storage — теперь отвечает за механизм хранения данных (персистентность, сериализацию)

  • FSMContext — стал тоньше и теперь фокусируется только на работе с состоянием диалога

Реализации Storage

Фреймворк предоставляет три варианта:

  • MemoryStorage — хранит данные в оперативной памяти (используется по умолчанию).

  • ApiStorage — сохраняет данные на стороне Алисы.

  • RedisStorage — использует Redis для хранения.

Новые возможности FSMContext

Теперь в FSMContext можно хранить не только строки, но и любые типы данных благодаря Kotlinx Serialization.

Новые хэндлеры

Добавлены новые хэндлеры, использующие окружение. Подробнее о них можно узнать в документации.

Заключение

За последние полгода Alice-ktx значительно улучшился. Официальная документация содержит подробные примеры и руководства.


ссылка на оригинал статьи https://habr.com/ru/articles/896964/