Bots 如何将有效负载中的回发数据提取到Dialogflow V2中的参数

Bots 如何将有效负载中的回发数据提取到Dialogflow V2中的参数,bots,dialogflow-es,Bots,Dialogflow Es,我一直在努力解决这个问题,我希望有人能帮我解决这个问题。我正在使用Dialogflow控制台创建一个机器人,它通过提供用户的位置和描述事件来请求用户报告“某物”。该机器人与Facebook Messenger集成。我的其中一个意图有后续意图,也有后续意图,如: intent 1 | intent 2 | intent 3 意图1请求用户的位置,意图2检索用户的位置并要求用户描述位置。Intent3应该拥有上下文中的所有数据,因为它是由webhook实现的

我一直在努力解决这个问题,我希望有人能帮我解决这个问题。我正在使用Dialogflow控制台创建一个机器人,它通过提供用户的位置和描述事件来请求用户报告“某物”。该机器人与Facebook Messenger集成。我的其中一个意图有后续意图,也有后续意图,如:

intent 1
    |
    intent 2
            | intent 3
意图1请求用户的位置,意图2检索用户的位置并要求用户描述位置。Intent3应该拥有上下文中的所有数据,因为它是由webhook实现的。所有数据都应该发布到我的服务器上。问题是,我无法获取位置数据(可能是lat和long),我注意到在触发事件后,数据以以下格式返回到FACEBOOK\u位置:

{
  "originalDetectIntentRequest": {
    "source": "facebook",
    "payload": {
      "postback": {
        "data": {
        "lat": 14.556761479425,
        "long": 121.05444780425
      },
     "payload": "FACEBOOK_LOCATION"
    },
    "sender": {
      "id": "1588949991188331"
    }
  }
}

我的问题是如何将有效负载数据携带到Dialogflow意图参数中,以便在触发webhook之前在上下文中携带它们?我希望我已经解释清楚了。谢谢大家的帮助。

您可以使用输出上下文保存参数

{  
  "fulfillmentText":"This is a text response",
  "fulfillmentMessages":[  ],
  "source":"example.com",
  "payload":{  
    "google":{  },
    "facebook":{  },
    "slack":{  }
  },
  "outputContexts":[  
    {  
      "name":"context name",
      "lifespanCount":5,
      "parameters":{  
        "param":"param value"
      }
    }
  ],
  "followupEventInput":{  }
}
保存参数后,在后续请求中,可以通过访问保存的上下文来访问参数。LifePanCount将决定此上下文中有多少后续调用是有效的。因此,在上述情况下,例如,在意图1中保存的参数将在意图5之前可用(如果您还有2个后续意图) 你可以关注更多细节


我个人喜欢使用客户端库来开发Webhook,因为它们易于使用,功能强大,并且减少了JSON操作错误。如果您喜欢使用基于NodeJs的客户端,您可以按照此操作。

详细介绍Abhinav的答案(并指出我在这个问题上的原因)。您需要确保您提取的实体有足够的生命周期用于webhook实现调用。

您可以通过编辑数字并保存来调整计数

LifePanCount将决定此上下文中有多少后续调用是有效的。-阿比纳夫


如果您的参数没有显示在输出上下文中,则它们可能没有适当的寿命

多谢各位。这个答案引导我在webhook响应中使用“OutputContext”来找到解决方案。谢谢你!很高兴听到这个消息。我也选择了使用基于NodeJS的客户端。我发现我使用它有很大的灵活性。非常感谢你。我有一个问题,我试图将处理意图的函数分离到不同的文件(模块)中,并要求像这样插入主js文件:
intentMap.set('Default Welcome Intent',)
但是我得到了承诺错误。我该如何解决这个问题?最好创建一个新问题;):)谢谢我解决了问题!我这里还有一个给你::)谢谢!