将fulfillment outputContext参数用于文本响应

时间:2018-05-15 16:02:36

标签: dialogflow

我使用DialogFlow实现意图。

履行有这样的回应:

{
    "outputContexts": [
        {
            "name": "search-results",
            "lifespanCount": 9999,
            "parameters": {
                "foo": "bar",
            }
        }
    ]
  }

在相同的意图(没有搜索结果作为输入上下文)中,我想在我的履行中使用outputContext上返回的参数来回复

Parameters Responses

不幸的是,当我运行此设置时,它不起作用。参数中没有任何内容,响应是"不可用"。即使我的输出上下文已设置。

Response Parameters values

如何在响应中立即使用输出上下文参数?一个可能的workarround将直接返回带有值的fulfillmentMessages - 但我发现维护单个变量并且过度杀戮更难!

1 个答案:

答案 0 :(得分:2)

您不能通过相同的意图来执行此操作,这样做会填充参数,运行webhook实现并使用具有相同意图的输出上下文。

但是,您想要做的是通过创建单独的意图(例如 intent_show_search_results )来显示搜索结果,此意图将在输入中采用搜索结果上下文。并且,在文本响应中,您可以使用该上下文的参数来准备用户消息,使用模式在消息中使用上下文参数来访问上下文参数,如此

  

Foo的值为#search-results.foo

Webhook对 v1 api 的履行的回应: -

{
  "contextOut": [
    {
      "name": "search-results",
      "lifespan": 9999,
      "parameters": {
        "foo": "bar"
      }
    }
  ],
  "followupEvent": {
    "name": "intent_show_search_results"
  }
}

Webhook对 v2 api 的履行的回应: -

{
    "outputContexts": [
        {
            "name": "projects/${PROJECT_ID}/agent/sessions/${SESSION_ID}/contexts/search-results",
            "lifespanCount": 9999,
            "parameters": {
                "foo": "bar"
            }
        }
    ],
    "followupEventInput": {
        "name": "intent_show_search_results",
        "languageCode": "en-US"
    }
}