@bal_square

Как грамотно использовать сторонние API в своем web приложении на NodeJS?

Здравствуйте, я делаю свой проект - чат-сервер. Например, у меня есть функция, которая по голосовой фразе "добавить напоминание на Х число", взаимодействует с Google Calendar API. Путь запроса выглядит следующим образом: пользователь отправляет сообщение -> сервер открывает поток и передает его Yandex SpeechKit -> SpeechKit возвращает строковый результат -> сервер перенаправляет строку на dialogFlow API -> dialogFlow API возвращает результат серверу -> сервер делает запрос Google Calendar API -> сервер получает результат операции добавления напоминания. В итоге прежде, чем достигнуть результата, происходит целая серия запросов к сторонним API, т.к. проект пока работает с одним пользователем, проблем с производительностью не возникает, но если расширить user-базу уверен, что начнутся большие просадки. Возможно есть способы укоротить столь длинную цепочку событий или же существуют определенные паттерны проектирования подобного рода приложений. Кто сталкивался с данной проблемой, подскажите пожалуйста.
  • Вопрос задан
  • 378 просмотров
Пригласить эксперта
Ответы на вопрос 2
zoonman
@zoonman
⋆⋆⋆⋆⋆
1. Почему не использовать Google Actions? Или штук вроде dialogflow.com?
2. Снижение задержек возможно рядом трюков вроде начала отправки голосовых данных непосредственно в сервис с момента начала их произношения. Далее слой кэширования результатов вычленения намерений.
3. Размещение всего стека распознавания речи и интентов у себя.
4. Распараллеливание цепочки там, где это возможно.
Например
- Купи билеты в кино на хороший фильм Тарантино
1. Распознавание
2. Параллельно:
   = Поиск хороших фильмов Тарантино
   = Поиск кинотеатров поблизости
   = Получение данных вашего календаря
3. = Запрос расписаний из ближайших кинотеатров (можно делать параллельно, если нет общего API)
4. Поиск оптимального сеанса
5. Заказ билетов

5. Асинхронное выполнение через очередь, где возможно.
Например:
- Отправь билеты маме.
- Хорошо. (ставится задание в очередь, выполняется асинхронно не блокируя пользователя)
Ответ написан
Комментировать
profesor08
@profesor08
Оптимизируй. По возможности используй SpeechRecognition, если нет то webkitSpeechRecognition, если нет, то уже Yandex SpeechKit и это все на клиенте. На сервер тебе должно отправляться уже текстовое сообщение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект