首页 文章

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

提问于
浏览
1

我试图实现一个Dialogflow应用程序(谷歌上的动作),到目前为止它运作良好 . 但是:有没有人知道是否可以通过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 回答

  • 2

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

    创建上下文非常简单,但具体取决于您如何生成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/"
        }
      }
    ]
    

    然后,在链接输出或基本卡的字段中,您将它们引用为 #deeplink.title#deeplink.url . 对于Link Out,它可能看起来像这样:

    enter image description here

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

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

相关问题