代码之家  ›  专栏  ›  技术社区  ›  realnsleo

如何在DialogFlow v2中将回发数据从负载提取到参数

  •  1
  • realnsleo  · 技术社区  · 6 年前

    我一直在想办法,希望有人能帮我我正在使用Dialogflow控制台创建一个bot,该bot通过提供用户的位置和描述事件来请求用户报告“某事”机器人与Facebook Messenger集成。我的一个意图有一个后续意图,也有一个后续意图,比如:

    intent 1
        |
        intent 2
                | intent 3
    

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

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

    我的问题是如何将有效负载数据携带到Dialogflow意图参数中,以便在触发webhook之前在上下文中携带它们我希望我解释得很好。谢谢你们的帮助。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Abhinav Tyagi    6 年前

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

    {  
      "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将决定此上下文有效的后续调用数。因此在上面,例如,在intent 1中保存的参数将在intent 5之前可用(如果您还有2个后续意图) 你可以关注更多细节 here 是的。

    我个人喜欢使用客户端库来开发webhook,因为它们易于使用、功能强大并且减少了json操作错误。如果您喜欢使用基于NodeJs的客户机,可以遵循以下步骤 link 是的。

        2
  •  0
  •   Cleanshooter    6 年前

    进一步阐述阿比纳夫的答案(并指出是什么吸引了我在这个问题上)您需要确保您提取的实体具有足够的生命期,才能使其进入webhook实现调用。 enter image description here

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

    lifespancount将决定此上下文有效的后续调用数。-阿比纳夫

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