Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров803

В прошлой статье я рассказывал о фреймворке 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 значительно улучшился. Официальная документация содержит подробные примеры и руководства.

Теги:
Хабы:
Рейтинг0
Комментарии0

Публикации

Ближайшие события