Сервис, обрабатывающий Webhook запросы от Яндекс Алисы. Позволяет искать по базе данных онлайн-кинотеатра.
В консоли выполнить команду docker-compose up
Список запускаемых сервисов
- http://localhost:8000/ - Gate
- http://localhost:8001/api/docs/ - Asyncapi
- http://localhost:8002/api/docs/ - Authapi
- http://localhost:8003/api/docs/ - Voice assistant api
- http://localhost:5432/ - PostgreSQL
- http://localhost:6379/ - Redis
- http://localhost:9200/ - ElasticSearch
- http://localhost:5601/ - Kibana
Взаимодействие основано на паттерне state machine.
Это значит, что мы обрабатываем запрос пользователя в зависимости от сцены (состояния) в котором он находится.
Всего реализовано 5 сцен:
- Welcome
- Top Films
- Film Info
- Person Info
- Helper
При старте пользователь попадает на сцену Welcome, тут он получает краткую справку о том, что это за навык.
Затем пользователь задает вопрос сервису.
Чтобы понять, что хочет пользователь, мы выделяем из запроса "намерение" - интент.
Если мы распознали интент, то возвращаем ответ, вместе с этим переводя пользователя на одну из трех сцен:
Top Films / Film Info / Person Info
Находясь на одной из этих сцен, пользователь может задать вопрос, связанный с предыдущим ответом.
Например:
- Кто автор фильма Дюна?
- Ответ: Дени Вильнёв (пользователь попадает на сцену Person Info)
- Сколько ему лет?
- Ответ: 54
При этом один, и тот же интент, полученный из разных сцен может быть обработан по-разному.
Например, находясь на сцене Film Info, запрос "расскажи подробнее" вернет подробную информацию о фильме.
А аналогичный запрос со сцены Person Info вернет информацию о человеке.
- Проверяется, возможна ли локальная обработка интента (в рамках текущей Сцены).
- Затем проверяется есть ли обработка среди остальных сцен.
- При неудаче срабатывает функция fallback, которая просит пользователя сформулировать вопрос иначе.
При этом все нераспознанные интенты сохраняются для дальнейшего анализа - так мы сможем выделить популярные запросы,
обработку которых нужно добавить.
Также пользователь может в любой момент попросить помощи в использовании навыка.
Тогда вызывается сцена Help - она предлагает примеры запросов к сервису.
- Топ по дате
- Топ по типу
- Топ по жанру
- Описание фильма
- Актеры фильма
- Автор фильма
- Длительность фильма
- Жанр фильма
- Рейтинг фильма
- Дата выхода
- Возраст человека
- Фильмы с участием
- Биография человека