1

我需要澄清,因为我被困住了。

当我给出多个 assistant.ask 语句时,它只显示一个,然后等待用户的响应。

有没有办法向用户发送多个语句?

假设用户询问天气。

我回复说。“当然可以,让我查一下,给你看看。”

现在,我调用 API 来查找异步天气。

然后,一旦我得到响应,我想将响应发送给用户“这是该位置的天气......”

因此,在两个响应之间,没有用户输入。有什么办法可以做到这一点?

4

1 回答 1

1

您没有说明您是直接使用 API.AI 还是 Actions API,但听起来您正在使用 Actions API。根据您的描述,听起来您正在线性编写函数 - 好像您希望assistant.ask()停止程序并等待用户的回复。这不是assistant.ask()一般的或 Actions 的工作方式。

将 Google Home 视为网络浏览器,您的操作将在某处的网络服务器上运行。assistant.ask()相当于向浏览器发回消息并关闭连接(但不关闭麦克风)。没有可以完成的额外处理,因此在之后有语句ask()没有意义。

assistant.ask()回复本身是异步处理的。程序逻辑不会暂停并等待回复 - 回复由对程序的单独调用处理。

如果您直接使用 Actions API,您将需要跟踪您在对话中的位置(状态 - 或到目前为止已提出的问题以及您得到的答案)并适当地执行不同的代码路径.

您可能对 API.AI 更感兴趣,它可以让您以更具交互性的方式构建对话,并仅指示需要哪些命令来向您的 webhook 发送信息。使用 API.AI,您的编程逻辑不需要跟踪您在对话中的位置 - 您可以通过 API.AI 构建状态机和对话路径。

目前无法通过 Actions 发送未经提示的内容。因此,在查找信息之前回复“当然,让我为您查找”是不合适的。

于 2017-03-16T19:32:13.500 回答