Skip to content

Архитектура Агрегата

Dmitry Che edited this page Mar 3, 2016 · 4 revisions

Агрегат - это мультимодульная, мультиплатформенная программная голосовая система с открытым API и возможностью расширения за счет сторонних модулей.

Что внутри

Агрегат - это Java приложение, работающее на фреймворке Vertx. Внутренняя структура и API Агрегата используют возможности и парадигму этого фреймворка, поэтому все что верно с точки зрения Vertx, верно и для Агрегата.

Немного о Vertx

vertx Это масштабируемый и расширяемый фреймворк для создания многомодульных приложений, где взаимодействие между модулями происходит по принципу реактивной парадигмы - за счет обмена событиями и их неблокирующей обработкой. В этом смысле Vertx подобен NodeJS, но предоставляет также возможность использовать сразу несколько языков программирования для реализации модулей приложения.

Подробнее о Vertx и его API для разных языков программирования можно узнать из официальной документации.

Как работает Агрегат

Агрегат организует взаимодействие между модулями за счет обмена с ними асинхронными сообщениями. Ядро Агрегата берет на себя работу по синхронизации такого обмена, реализации анализа текста пользовательского запроса и диспетчеризации запросов к нужным модулям. А также выполняет работу по приему сообщений от модулей и переключению контекстов.

Другими словами, сам Агрегат - это связующее звено между всеми модулями, организованный вокруг парадигмы голосового ассистента, который умеет распознавать речь, переключать контекст, совершать действия и синтезировать голосовой ответы (или ответы).

Что могут делать модули

  • реализовывать любые голосовые функции с возможностью переключения контекстов
  • организовывать новые способы активации Агрегата
  • предоставлять сервис распознавания или синтеза речи (неважно, онлайн или офлайн)

Да и вообще все что угодно. Например предоставлять любой пользовательский интерфейс для различных нужд (в том числе для управления другими модулями Агрегата).

Как работает модуль

По сути, Агрегат не накладывает никаких ограничений на то, как именно модуль реализует свою функцию, какие сторонние библиотеки использует и как взаимодействует с системой.
Агрегат лишь указывает, какие виды событий могут происходить в системе, и каким образом должно на них реагировать, чтобы получить нужный результат. Все остальное определяет сам модуль.

Агрегат - это декларативный фреймворк для создания голосового ассистента, определяющий лишь правила взаимодействия модулей

Sorry, there was an error rendering this page.

Clone this wiki locally