到目前为止,我有一个 session 应用程序,它使用 webhooks 连接到我的后端 PHP 服务器,它将 JSON 响应发送回 Dialogflow API。到目前为止,它的工作相当不错。
开发的下一步是让 Google 助理通过多部分响应来响应用户。我已经看到“幸运琐事”游戏做了类似的事情(附上截图)。
我不清楚如何让助理应用程序生成多个气泡。
我尝试过的一些解决方案:
<speak>
或 <p>
标签 这些都没有让我达到我喜欢的地步。
丰富的回复最多适用于两个单独的气泡,仅此而已。
SSML 看起来很有前途,是添加韵律和声音片段的好方法,但我尝试过的所有方法都不会产生多部分语音气泡。
我找不到适用于
"platform":"google"
的消息对象的语法。实际上,该页面上没有列出对 platform=google
的具体支持,但我在一些请求/响应 JSON 对象中看到了它。followupEvent 响应似乎最有希望,但据我所知,从命名事件触发的意图完全取代了当前响应,它不仅仅是添加到它上面。
所以,我的问题是: 使用 DialogFlow 在 Google Assistant 上获取类似的多部分消息的最佳策略是什么?
最理想的是,我想按顺序向我的 webhook 发出新请求,但如果有必要,构建一个包含所有部分的大型响应是一个可行的选择。
Lucky Trivia 如何做到这一点?
最佳答案
我怀疑 Lucky Trivial 能够绕过规则,因为它是由 Google 制作的,并且与我们使用的库不同。但是让我们看看你的每一次尝试,然后看看其他一些可能的方法。
什么不起作用
正如您所注意到的, RichResponse 仅限于两个 SimpleResponse ,它们转换为两个文本气泡。您可以做出更大的响应,但每个气泡的建议限制为 300 个字符,硬性限制为 640 个字符。
顾名思义,SSML 响应与您所听到的有关 - 而不是您所看到的。
无论如何,消息对象都会变成 native 平台对象,所以除非谷歌有某种方式支持它(而且没有),否则你不能这样做。
后续事件专门记录以忽略从原始事件返回的文本。他们的重点是将处理委托(delegate)给另一个意图。
什么可能有效:卡片
这看起来与您想要的并不完全相同,但是获取与两个气泡分开的附加文本的一种方法是通过 Basic card 作为富响应项之一。您甚至可以在卡中进行一些基本格式化并包含图形。
更复杂的:媒体响应
在富响应项中包含 Media response 对象是一种可以向用户发送多个响应而无需等待他们说些什么的方式。通过这种方式,您可以连续获得多个文本气泡,而无需用户回复。
诀窍在于,您将在富响应中发送两个简单响应,然后包含一个带有非常短且可能无声的音频文件的媒体响应。
音频文件播放完毕后,您将收到一个 Intent,指示媒体已播放完毕。然后,您可以使用一两个更简单的回复发送另一个回复。如有必要,您可以重复此操作。
有一些缺点 - 媒体播放器会在播放时显示,这会中断气泡,但一旦完成它应该会清除。一些泡沫之间也会有暂停。但是播放音频也可能会增强您的回复。
关于actions-on-google - 如何使用 DialogFlow 创建多部分响应?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49417694/