从Java向Google Assistant发送请求

时间:2018-09-25 08:58:35

标签: java dialogflow actions-on-google google-assistant-sdk google-home

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

我们的目标是使用Google Assistant的“广播”功能宣布任务的结果,但是我们找不到将命令发送到Google Assistant的方法。

我们的代理会接收用户的请求并启动执行任务的Java应用程序,因此该Java应用程序必须在处理完成后与Google Assistant通信。

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

是否可以通过Java应用程序将请求发送到Google Assistant?或...由于我们可以与Google Action Agent进行通信...我们如何通过该代理发送请求?

换句话说,代理可以与Google Assistant通信以使用其任何功能,例如“广播...”吗?

我们已经选择了Google Assistant SDK,但对此感到困惑。

请原谅我的英语不好。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

“广播”功能不适用于用户开发的操作,在任何情况下都可能不是一个好的方案-如果用户需要等待一段时间才能获得答案,则他们可能不希望得到答案在他们不期望的时候突然宣布。

动作通常是对话式的,而不是花一些时间回答答案,这就是为什么履行必须执行多长时间的限制为5秒。如果确实需要一段时间,则可以使用以下几种选择:

首先,您可以在Assistant之外使用其他方法来传递答案-可能使用Firebase Cloud Messaging之类的方法或向用户发送电子邮件。

类似地,您也许可以使用通知。在这种情况下,您的Java程序将在信息可用时通过助手将通知发送给用户并存储结果。然后,用户可以激活通知以继续对话并获得结果。这样做的好处是,答案可能不仅会脱口而出(可能是在用户尚未准备好答案的时候),但不利的一面是发言人还不支持通知。

您还可以考虑使用“媒体响应”来设置一种定期轮询新消息的方式。在这种方案下,您将触发Java程序,该程序将获取结果,然后以实现服务器可以访问的方式存储该结果。在对用户的答复中说您正在处理结果时,您会在“媒体响应”中包含一段播放15秒的音频。音频结束后,将再次调用您的操作,您可以检查结果是否可用。如果是这样,则发送结果,然后继续或结束对话。否则,只需发送媒体回复即可。