从 Java 向 Google 助理发送请求

Send requests to Google Assistant from Java

我们开发了一个 Google 带有 Dialogflow 的 Action,它可以响应用户的个性化请求并执行一些需要一定时间(通常是几分钟)的任务。

我们的目标是使用 Google 助手的 "Broadcast" 功能宣布任务的结果,但我们找不到将命令发送到 Google 助手的方法.

我们的代理程序接收到用户的请求并启动一个执行任务的 Java 应用程序,因此当进程完成时,Java 应用程序必须与 Google 助手通信.

在 Java 应用程序中,我们可以使用 Dialogflow RPC API 与代理通信,但不能与 Google 助手通信。

有什么方法可以从 Java 应用向 Google 助理发送请求吗?或者...因为我们可以与我们的 Google 行动代理通信...我们如何通过代理发送请求?

换句话说,代理可以与 google 助手通信以使用其任何功能,例如 "Broadcast ..."?

我们已经检查了 Google Assistant SDK 作为备选方案,但我们对此感到困惑。

请原谅我的英语不好。

如有任何帮助,我们将不胜感激。谢谢!

"Broadcast" 功能不适用于用户开发的 Actions,而且在任何情况下都可能不是一个好的方案 - 如果用户需要等待一段时间才能得到答案,他们可能不会不想在他们意想不到的时候突然公布答案。

操作通常是对话式的,而不是花一些时间来回复答案,这就是为什么 fulfillment 必须进行处理的时间限制为 5 秒。如果您确实需要花点时间,可以选择以下几个选项:

首先,您可以使用智能助理以外的其他方法来提供答案 - 可能使用 Firebase 云消息传递之类的方法或向用户发送电子邮件。

同样,您也许可以使用通知。在这种情况下,您的 Java 程序会在信息可用时通过助手向用户发送通知并存储结果。然后用户可以激活通知以继续对话并获得结果。这样做的好处是答案不会脱口而出,可能是在用户还没有准备好时,但也有一个缺点,即扬声器(目前)还不支持通知。

您还可以考虑使用媒体响应来设置一种方式,以便您定期轮询新消息。在这种方案下,您将启动 Java 程序,该程序将获得结果,然后以您的执行服务器可以访问的方式存储它。在您对用户说您正在处理结果的回复中,您将包括一些播放 15 秒的音频的媒体响应。当音频结束时,您的 Action 将再次被调用,您可以检查结果是否可用。如果是这样,您发送结果并继续或结束对话。否则,只需发送媒体回复。