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

标签 actions-on-google dialogflow-es

到目前为止,我有一个 session 应用程序,它与我的后端 PHP 服务器的 webhooks 一起工作,该服务器将 JSON 响应发送回 Dialogflow API。到目前为止,它运行良好。

开发的下一步是让 Google 助理通过多部分响应来响应用户。我已经看到“Lucky Trivia”游戏做了类似的事情(截图附后)。

我不清楚如何让 Assistant App 生成多个气泡。

我尝试过的一些解决方案:

这些都没有让我达到我喜欢的程度。

丰富的回复最多适用于两个独立的气泡,不能更多。

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

我找不到适用于 "platform":"google" 的消息对象语法.的确,具体支持platform=google没有在该页面上列出,但我在一些请求/响应 JSON 对象中看到了它。

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

所以,我的问题是:使用 DialogFlow 在 Google 智能助理上获取类似的多部分消息的最佳策略是什么?

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

Lucky Trivia 如何做到这一点?

最佳答案

我怀疑 Lucky Trivial 能够绕过规则,因为它是由 Google 开发的,并且使用的库与我们不同。但是,让我们看看您的每一次尝试,然后看看其他一些可能的方法。

什么不起作用

如您所见,RichResponse s 仅限于两个 SimpleResponse s 转换为两个文本气泡。您可以做出更大的回复,但仍然建议限制每个气泡 300 个字符,以及 640 个字符的硬性限制。

顾名思义,SSML 响应是关于您所听到的,而不是您所看到的。

消息对象无论如何都会变成 native 平台对象,所以除非 Google 有某种方法支持它(但现在没有),否则你无法做到这一点。

后续事件专门记录为忽略从原始事件返回的文本。他们的重点是将处理委托(delegate)给另一个意图。

可能有用的东西:卡片

这看起来与您想要的不完全一样,但是一种获取与两个气泡分开的附加文本的方法是通过 Basic card作为丰富的响应项目之一。您甚至可以在卡片中进行一些基本格式化并包含图形。

更复杂:媒体回应

包括一个Media response具有丰富响应项的对象是一种可以向用户发送多个响应而无需等待他们说些什么的方法。通过这种方式,您可以连续获得多个文本气泡,而无需用户回复。

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

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

有一些缺点 - 媒体播放器在播放时会显示,这会打断气泡,但一旦完成它应该会清除。一些气泡之间也会有停顿。但播放音频也可能会增强您的回复。

关于actions-on-google - 如何使用 DialogFlow 创建多部分响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49417694/

相关文章:

node.js - 错误 : Request unsafe for browser client domain: dialogflow.

dialogflow-es - 使用 webhook 的操作正在响应 : "Sorry, I didn' t get any response. "

node.js - 获取后续意图中与原始意图不匹配的参数值

firebase - 服务器到服务器身份验证失败 - firebase - 对话流 - google 上的操作 - 用户实体 v2

actions-on-google - 谷歌操作中基本卡片的新行

ios - 我们如何在 iOS 应用程序中集成 Google dialogflow v2 api?

actions-on-google - 获取 Google Assistant Action 以响应 "Quit"或 "Cancel"

actions-on-google - 如何从我的 webhook 触发 `action.intent.INTENT_NAME` 意图?

artificial-intelligence - 如何在对话流中的后续意图中调用父意图的参数

javascript - 在 DialogFlow 内联编辑器中使用 'request-promise-native' 包