Google上的Dialogflow / Actions:提供链接输出建议的动态响应数据

时间:2017-11-28 11:04:12

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

我已尝试实施Dialogflow应用程序(Google上的操作),到目前为止效果非常好。但是:有没有人知道是否可以通过node.js定义更多的动作参数/上下文,所以我可以用它们以某种方式在Dialogflow中创建动态的“链接输出建议”?

详细信息:我尝试从用户请求一些参数,将它们映射到一组URL(=实现为某种数据库),然后将结果URL写入json响应。目标:在Dialogflow的“响应> Google智能助理>输入网址”中将这些回复网址包含为$ 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”之后停止了。

1 个答案:

答案 0 :(得分:2)

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

创建上下文非常简单,但具体取决于您如何生成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,它可能看起来像这样:

enter image description here

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

The Actions on Google documentation提供了可以与样本JSON和node.js代码一起返回的各种UI元素,以生成每个元素。这些元素与Dialogflow通过“Google操作系统响应”标签提供的元素相同 - 只是您可以通过webhook生成它们。