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

Dispatcher

Dispatcher - основная составляющая обертки.

Dispatcher руководит тем, какой хендлер должен исполнится во время конкретного запроса, занимается регистрацией хендлеров.

При инициализации экземпляра класса Dispatcher передается 1 аргумент: ссылка на функцию (асинхронную или синхронную), которую будем именовать Handler - обработчик. Этот Handler будет каким-то образом (каким - придумайте сами) образом обрабатывать запрос (AliceRequest) и возвращать объект AliceResponse с текстом сообщения, которое будет говорить Алиса после запуска Диалога пользователем.

Сам диспетчер является Blueprint с дополнительным функционалом.

Далее о встроенных методах в класс Dispatcher.

Регистрация нового хендлера

dispatcher.register_message_handler(
    priority, 
    intent, 
    handler
)
- priority: int - приоритет хендлера. - intent: Optional[str] - название интента (как указано в настройках Диалога). Если не указан - хендлер будет fallback - выполняться без интента. - handler: Callable - ссылка на функцию (синхронную или асинхронную), которая будет обрабатывать запрос. На вход подается AliceRequest, возвращает AliceResponse или None.

Регистрация нового интента декоратором

@dispatcher.message_handler(priority, intent)

  • priority: int - приоритет хендлера.
  • intent: Optional[str] - название интента (как указано в настройках Диалога). Если не указан - хендлер будет fallback - выполняться без интента.
  • Обрабатывает фукнцию (синхронную или асинхронную), которой на вход подается объект AliceRequest. Возвращает AliceResponse.

Обработчик запроса

dispatcher.dispatch_request(request_obj)

  • request_obj: AliceRequest - объект запроса.
  • Возвращает AliceResponse - итоговый объект ответа после обработки.