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

时间:2018-07-18 06:43:07

标签: bots dialogflow

我一直想设法解决这个问题,希望在那里的人能帮助我。我正在使用Dialogflow控制台创建一个机器人,该机器人通过提供他/她的位置并描述事件来请求用户报告“某事”。该机器人与Facebook Messenger集成在一起。我的意图之一是跟进意图,也有跟进意图,例如:

intent 1
    |
    intent 2
            | intent 3

意图1请求用户的位置,意图2检索用户的位置并要求用户描述该位置。意图3应该将所有数据放在上下文中,因为它由Webhook满足。所有数据都应该发布到我的服务器上。问题是我未能获取位置数据(可能是经纬度的和较长的),我注意到在触发事件FACEBOOK_LOCATION之后,数据以以下格式返回:

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

我的问题是如何将有效负载数据携带到Dialogflow意向参数中,以便在上下文中携带它们,直到触发Webhook为止?我希望我已经解释清楚了。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

{  
  "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":{  }
}

保存参数后,在后续请求中,可以通过访问已保存的上下文来访问参数。 lifespanCount将确定此上下文有效的后续调用次数。所以在上面,例如。保存在意图1中的参数将在意图5之前可用(如果您还有2个后续意图) 您可以关注更多详细信息here

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

答案 1 :(得分:0)

扩展Abhinav的答案(并指出引起我关注此问题的原因)。您需要确保提取的实体具有生命周期,才能加入到Webhook实现呼叫中。 enter image description here

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

  

lifespanCount将确定此上下文有效的后续调用次数。 -Abhinav

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