0

我很确定这个问题的答案是“不”,但我想无论如何我都会分享这个问题,以防其他人有一个聪明的解决方法:)

我正在构建一个食谱操作,因此用户可以说“让我们做玉米饼汤”,然后说“下一步”以继续进行食谱的下一部分。在每个步骤之间可能会有很长的停顿,因为用户正在切菜等。 Home 是否可以无限期地等待用户响应或等待几分钟?目前,它会等待几秒钟,然后说“对不起,我不明白那个响应”之类的内容,并最终退出操作。

强迫用户一遍又一遍地执行“好的,谷歌,让我跟大厨说话”这个动作是很烦人的,我认为,在每一步之后都需要立即结束对话,否则设备会挂起并说“对不起我不明白”。


更新

通过滥用 SSML,我发现了一种非常老套的方法。<break/>有两种选择,可以叠加

assistant.ask(`<speak><break time="120s"/><break time="120s"/></speak>`);

这实际上导致 Home 播放非常奇怪的嗡嗡声。开发人员可能想看的东西:D

另一种选择(避免无人机)是播放 2 分钟的无声音频剪辑。根据文档,2 分钟是限制,<audio>但您可以将它们堆叠起来。我刚刚证实你可以让它在那里至少坐十分钟。

assistant.ask(`<speak><audio src="https://.../pause.mp3">hello</audio><audio src="https://.../pause.mp3"></audio></speak>`)

当它像这样暂停时,您不能直接与代理交谈,但您可以说“OK Google,[whatever command]”,该命令实际上会传递给代理。

4

2 回答 2

1

目前没有办法让 Google 助理无限期地等待回复。

虽然在技术上可行,但使用建议的解决方法来延迟响应的应用程序不会通过审查过程 -政策文件提到避免播放无声的声音文件在超过 120 秒的时间内进行通信。

另一种方法可能是让您的应用记住食谱中的当前位置,但在每一步之后结束对话。然后,您可以使用操作调用来允许用户说出类似“OK Google,请 [您的应用程序名称] 继续执行该食谱”之类的话,然后跳回到对话中并听到下一步。

于 2017-08-31T18:37:23.460 回答
0

没有,但最近宣布的一项功能可能会帮助您做您正在尝试的事情。

回答时,您可以使用媒体控件进行回复并播放音频文件。与使用您提供的 SSML 方法相比,这有几个优点:

  • 音频结束时您会收到一个事件,因此您可以再次使用指南、提示或提醒您的操作仍然存在……然后在等待时播放更多音频。

  • 在任何时候,用户都可以说“嘿谷歌,下一步”,你的服务器会收到消息,你可以发送下一步。或者他们可以说“嘿 Google,重复一遍”,你会收到消息并可以重复说明。

  • 他们还可以询问您可以回答的其他关于您的操作的问题。

于 2018-03-11T03:43:20.810 回答