Actions on google 如何使用DialogFlow创建多部分响应?

Actions on google 如何使用DialogFlow创建多部分响应?,actions-on-google,dialogflow-es,Actions On Google,Dialogflow Es,到目前为止,我已经有了一个会话应用程序,它可以与Webhook一起工作到后端PHP服务器,将JSON响应发送回Dialogflow API。到目前为止,它运行得相当好 开发的下一步将是让谷歌助手用多部分响应来响应用户。我见过“幸运的琐事”游戏做类似的事情(附截图) 我不清楚如何让助手应用程序生成多个气泡 我尝试过一些解决方案: 与多个部件一起使用 生成并使用多个或标记 使用 使用 这些都没有让我达到我想要的程度 丰富的响应最多只适用于两个单独的气泡,而不会更多 SSML似乎很有前途,是添加

到目前为止,我已经有了一个会话应用程序,它可以与Webhook一起工作到后端PHP服务器,将JSON响应发送回Dialogflow API。到目前为止,它运行得相当好

开发的下一步将是让谷歌助手用多部分响应来响应用户。我见过“幸运的琐事”游戏做类似的事情(附截图)

我不清楚如何让助手应用程序生成多个气泡

我尝试过一些解决方案:

  • 与多个部件一起使用
  • 生成并使用多个
    标记
  • 使用
  • 使用
这些都没有让我达到我想要的程度

丰富的响应最多只适用于两个单独的气泡,而不会更多

SSML似乎很有前途,是添加韵律和声音片段的好方法,但我所尝试的一切都不会产生多部分语音气泡

我找不到适用于
平台的消息对象的语法:“google”
。事实上,对
platform=google
的特定支持没有在该页面上列出,但我在一些请求/响应JSON对象中看到了它

followupEvent响应似乎最有希望,但据我所知,从命名事件触发的意图完全取代了当前响应,而不仅仅是添加到当前响应上

因此,我的问题是:使用DialogFlow在Google Assistant上获取类似多部分消息的最佳策略是什么?

最理想的情况是,我希望按顺序向我的webhook发出新请求,但如果需要,构建一个包含所有部分的大型响应是可行的选择

Lucky Trivia是如何做到这一点的?

我怀疑Lucky Trivial能够绕过这些规则,因为它是由谷歌制作的,与我们使用的库不同。但让我们看看你的每一次尝试,然后看看其他一些可能的方法

什么不起作用

正如您所注意到的,s仅限于两个s,它们转换为两个文本气泡。您可以做出更大的响应,但仍有一个建议限制为每个气泡300个字符,以及一个640个字符的硬限制

顾名思义,SSML的反应是关于你听到的,而不是你看到的

消息对象无论如何都会转换为本机平台对象,因此,除非谷歌有某种方式支持它(而且没有),否则您就不能这样做

对后续事件进行专门记录,以忽略从原始事件返回的文本。他们的全部目的是将处理委托给其他人

什么可能有效:卡片

这看起来与您想要的内容并不完全相同,但是要获得与两个气泡分离的附加文本,有一种方法是通过一个作为富响应项之一的。你甚至可以在卡片上做一些基本的格式化,包括图形

更复杂:媒体反应

将一个对象包含在丰富的响应项中是一种向用户发送多个响应的方式,而无需等待用户说些什么。通过这种方式,您可以在一行中获得多个文本气泡,而无需用户回复

诀窍在于,您将在富响应中发送两个简单响应,然后包含一个媒体响应,其中包含一个非常短的、可能是无声的音频文件

音频文件播放完毕后,您将获得一个指示媒体已播放完毕的意图。然后,您可以发送另一个带有一个或两个以上简单回复的回复。如有必要,您可以重复此操作


还有一些缺点-媒体播放器在播放时会显示,这会中断泡沫,但一旦播放完毕,泡沫就会消失。一些泡沫之间也会出现停顿。但是播放音频也可以增强您的回复。

我喜欢媒体回复的想法。它在扬声器上运行良好,但在我的手机上,媒体播放器不会消失,而且似乎还需要建议芯片。这一切都会导致手机屏幕上出现很多额外的东西,我想把它们去掉。我怀疑谷歌可能会很好地使用这种方法,因为许多气泡都是由间隙的声音片段隔开的。必须有一种方法来抑制媒体播放器的显示。谷歌是在媒体回复可用之前就这样做的,所以它仍然在遵守规则。人力资源管理,媒体播放器在我做下一次回应后离开了。