Отправлять запросы в Google Assistant с Java

Мы разработали Google Action с Dialogflow, который отвечает на персонализированные запросы пользователей и выполняет некоторые задачи, требующие определенного количества времени, обычно нескольких минут.

Наша цель - объявить результат выполнения задач с помощью функции «Трансляция» в Google Assistant, но мы не можем найти способ отправить команду в Google Assistant.

Наш агент получает запрос пользователя и запускает приложение Java, которое выполняет задачу, поэтому именно приложение Java должно взаимодействовать с Google Assistant после завершения процесса.

Из приложения Java мы можем связываться с агентом с помощью Dialogflow. RPC API, но не с помощью Google Assistant.

Есть ли способ отправить запрос в Google Assistant из приложения Java? или ... поскольку мы можем общаться с нашим агентом Google Action ... как мы можем отправить запрос через агент?

Другими словами, может ли агент связываться с помощником Google, чтобы использовать какие-либо его функции, например, «Трансляция ...»?

Мы проверили SDK Google Assistant в качестве альтернативы, но нас это смущает.

Пожалуйста, извините за мой плохой английский.

Любая помощь будет оценена по достоинству. Спасибо!


person Antonio Sánchez Díaz    schedule 25.09.2018    source источник


Ответы (1)


Функция «Широковещательная рассылка» недоступна для действий, разработанных пользователем, и, вероятно, не является хорошей схемой для использования в любом случае - если пользователям нужно будет немного подождать ответа, они, вероятно, не захотят, чтобы ответ был внезапно объявлен, когда они этого не ждут.

Действия обычно предназначены для разговора, а не для того, чтобы ответить с ответом на время, поэтому существует ограничение в 5 секунд на то, как долго выполнение должно выполнять обработку. Если вам нужно время, у вас есть несколько вариантов:

Во-первых, вы можете использовать какой-либо другой метод, помимо Ассистента, для доставки ответа - возможно, используя что-то вроде Firebase Cloud Messaging или отправив электронное письмо пользователю.

Точно так же вы можете использовать уведомления. В этом сценарии ваша программа на Java отправит пользователю уведомление через Ассистента, когда информация станет доступной, и сохранит результат. Затем пользователь может активировать уведомление, чтобы продолжить разговор и получить результат. Это имеет то преимущество, что ответ не просто выпаливает, возможно, когда пользователь к нему не готов, но имеет обратную сторону, заключающуюся в том, что динамики (пока) не поддерживают уведомления.

Вы также можете использовать Media Response, чтобы настроить способ периодического опроса новых сообщений. В соответствии с этой схемой вы должны запустить программу Java, которая получит результат, а затем сохранить его таким образом, чтобы ваш сервер выполнения мог получить доступ. В свой ответ пользователю о том, что вы работаете над результатами, вы должны включить Media Response для некоторого звука, который воспроизводится, скажем, 15 секунд. Когда звук закончится, ваше действие будет вызвано снова, и вы сможете проверить, доступен ли результат. Если да, вы отправляете результат и продолжаете или завершаете разговор. В противном случае просто отправьте ответ СМИ.

person Prisoner    schedule 25.09.2018
comment
Спасибо за Ваш ответ. Сценарий такой: пользователь запрашивает ответ у Google Home (динамик). Этот ответ может занять разное время, даже несколько часов. Беседа с Google Home будет закрыта. Цель состоит в том, чтобы, когда результаты доступны, говорящий общается без вмешательства пользователя. Я протестирую предлагаемые вами решения. Спасибо! - person Antonio Sánchez Díaz; 25.09.2018