【问题标题】:Dialogflow / Actions on Google: Provide dynamic response data for link out suggestionsDialogflow / Actions on Google:为链接建议提供动态响应数据
【发布时间】:2017-11-28 11:04:11
【问题描述】:

我尝试实现一个 Dialogflow 应用程序(Actions on Google),到目前为止它运行良好。但是:有谁知道是否可以通过 node.js 定义进一步的操作参数/上下文,所以我可以以某种方式使用它们在 Dialogflow 中创建动态“链接建议”?

详细说明:我尝试向用户请求一些参数,将它们映射到一组 url(=作为某种数据库实现),然后将结果 url 写入 json 响应。目标:在 Dialogflow 的“Response > Google Assistant > Enter URL”中包含这些响应 url 作为 $url、#deeplink.url(或类似)。

这有可能吗?提前谢谢你。

更新:我还测试了构建丰富响应的方法,但它似乎不起作用。示例:

const richResponse = app
.buildRichResponse()
.addSimpleResponse('Flight from ' + origin + ' to' + destination)
.addSuggestions("Find your flight:")
.addSuggestions("Basic Card", "List", "Carousel")
.addSuggestionLink("Search now", url);

(app 是 require('actions-on-google').DialogflowApp 的一个实例)

但是,他似乎在“addSimpleResponse”之后停止了。

【问题讨论】:

  • 我不确定你到底想做什么,但也许你可以看看助手的“丰富响应”。
  • 创建 Intent > 集成 webhook > 在服务器上运行业务逻辑 > 返回响应。完成!
  • 这是我首先尝试过的,但不知何故它不起作用。您是否有包含单个链接输出建议的有效 RichResponse 示例?
  • 我现在尝试再次通过 webhook 构建丰富的响应......我在第一篇文章中附加了一些代码。有人看到错误吗?

标签: node.js actions-on-google dialogflow-es


【解决方案1】:

是的。您可以在 webhook 中创建 context,并在该上下文中包含包含所需值的参数。要使用您的示例,您可以创建一个上下文“deeplink”并在其中设置一个名为“url”的参数,其中包含您要链接到的 URL。您可能还应该有一个“标题”参数,因为链接输出建议和基本卡除了链接之外还需要标题或网站名称。

创建上下文相当简单,但具体取决于您生成 JSON 的方式。如果您使用 node.js 的 actions-on-google 库,您可以使用类似的命令创建它

var contextParameters = {
  title: "Example Website!",
  url:   "http://example.com/"
};
app.setContext( "deeplink", 1, contextParameters );

如果您正在创建response JSON yourself,您将拥有一个contextOut 数组,其中包含您要设置的上下文对象。这部分 JSON 可能看起来像

"contextOut": [
  {
    "name": "deeplink",
    "lifespan": 1,
    "parameters": {
      "title": "Example Website!",
      "url": "http://example.com/"
    }
  }
]

然后,在 Link Out 或 Basic Card 的字段中,您可以将它们引用为 #deeplink.title#deeplink.url。对于 Link Out,它可能看起来像这样:

但是,一旦您完成了任务,有时在 webhook 中生成 VUI 和 GUI 元素会变得更容易,而不是将它们设置为 Dialogflow 构建器的一部分。如果您要生成不同数量的卡片或轮播项目,则尤其如此。

The Actions on Google documentation 提供了可以与示例 JSON 和 node.js 代码一起返回的各种 UI 元素以生成每个元素。这些与 Dialogflow 通过 Actions on Google 响应选项卡提供的元素相同 - 只是您可以从您的 webhook 生成它们。

【讨论】:

  • 非常感谢您的详细解答!然而,这正是我试图做的,但上下文没有出现在我在 Dialogflow 中看到的响应 JSON 中。
  • 请更新您的问题,以包括显示您所做工作的屏幕截图、显示您如何设置上下文的代码示例以及从 Dialogflow 返回的 JSON。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 2023-03-21
  • 2019-03-11
  • 1970-01-01
相关资源
最近更新 更多