我需要澄清,因为我被困住了。
当我给出多个 assistant.ask 语句时,它只显示一个,然后等待用户的响应。
有没有办法向用户发送多个语句?
假设用户询问天气。
我回复说。“当然可以,让我查一下,给你看看。”
现在,我调用 API 来查找异步天气。
然后,一旦我得到响应,我想将响应发送给用户“这是该位置的天气......”
因此,在两个响应之间,没有用户输入。有什么办法可以做到这一点?
我需要澄清,因为我被困住了。
当我给出多个 assistant.ask 语句时,它只显示一个,然后等待用户的响应。
有没有办法向用户发送多个语句?
假设用户询问天气。
我回复说。“当然可以,让我查一下,给你看看。”
现在,我调用 API 来查找异步天气。
然后,一旦我得到响应,我想将响应发送给用户“这是该位置的天气......”
因此,在两个响应之间,没有用户输入。有什么办法可以做到这一点?
您没有说明您是直接使用 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 发送未经提示的内容。因此,在查找信息之前回复“当然,让我为您查找”是不合适的。