如何在发送给DialogFlow前Api.ai

时间:2017-11-17 03:29:42

标签: javascript json dialogflow

我正在尝试将额外信息附加到从我的应用程序发送到DialogFlow的{​​{3}}请求中。我知道通过从触发其事件来发送调用intent的数据的可能性,并且我已经将该方法用于其他功能。

基本上,我尝试使用userID添加值,我需要在DialogFlow中检索该值。我正在跟踪Sending Parameters in a Query Request中的会话,因此我使用来获取ID值。我试图在请求中执行以下操作:

$.ajax({
  type: "POST",
  url: baseUrl + "query?v=20150910",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  headers: {
    "Authorization": "Bearer " + accessToken
  },
  //This folllowing line is the modified part:
  data: JSON.stringify({
    query: text,
    lang: "en",
    sessionId: "somerandomthing",
    userId: "100"
  }),
  success: function(data) {

  },
  error: function() {
    setResponse("Internal Server Error");
  }
});

还有这个:

$.ajax({
  type: "POST",
  url: baseUrl + "query?v=20150910",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  headers: {
    "Authorization": "Bearer " + accessToken
  },
  //This folllowing line is the modified part:
  data: JSON.stringify({
    query: text,
    lang: "en",
    sessionId: "somerandomthing",
    userId: "100",
    parameters: {
      userId: "100"
    }
  }),
  success: function(data) {

  },
  error: function() {
    setResponse("Internal Server Error");
  }
});

我需要在请求中使用该值来处理基于它的back-end中的某些数据。如果有人知道该怎么做,或者建议采取更好的方法,那将非常感激。

在DialogFlow论坛中有与此相关的讨论帖,但仍然没有解决方案。该功能可能无法使用,或者没有记录Link 1Link 2

1 个答案:

答案 0 :(得分:2)

我在Dialogflow的@Svetlana的帮助下解决了这个问题。原始帖子是Here,这是来自Node.js中后端的JavaScript应用程序的示例:

您可以格式化您的请求,例如:

            $.ajax({
                type: "POST",
                url: baseUrl + "query?v=20150910",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                headers: {

                    "Authorization": "Bearer " + accessToken
                },
                data: JSON.stringify({originalRequest: {data: {exampleMessage: 'Test'}}, query: text, lang: 'en', sessionId: 'somerandomthing'}),
                success: function (data) {

                },
                error: function () {
                    setResponse("Internal Server Error");
                }
            });

您可以使用以下方式访问webhook中的值:

var exampleMessage = req.body.originalRequest.data.exampleMessage;

var exampleMessage = req.body.originalRequest.data['exampleMessage'];

希望这有帮助。