Перейти к содержанию

Мидлвари

Мидлварь - это код, который активируется при каждом событии, полученном от API Алисы.

Теория

Мидлвари — это повторно используемое программное обеспечение, которое использует шаблоны и платформы для устранения разрыва между функциональными требованиями приложений и базовыми операционными системами, стеками сетевых протоколов и базами данных

Есть два типа Мидлвари

  1. Внешняя (outer) область - вызывается перед обработкой фильтров
  2. Внутренняя (inner) область - вызывается после обработки фильтров, но перед обработчиком

Важно

Мидлварь должен всегда возвращать null чтобы передать событие следующему мидлварю/хэндлеру. Если вы хотите завершить обработку события, вы должны вернуть MessageResponse

Практика

fun main() {
    skill {
        webhookServer = ktorWebhookServer {
            port = 8080
            path = "/alice"
        }
        dispatch {
            outerMiddleware {
                if (!isValidFor(Filter.Authorized))
                    return@outerMiddleware response {
                        text = "Для использование необходимо войти в аккаунт Яндекс."
                    }
                null
            }
        }
    }.run()
}

В этом примере показано, как использовать внешнюю мидлварь, чтобы проверять, есть ли у пользователя аккаунт в Яндексе. Если аккаунта нет, мидлварь возвращает ответ с сообщением "Для использование необходимо войти в аккаунт Яндекс". В противном случае, мидлварь возвращает null, позволяя передать событие следующему мидлварю или обработчику.