我试图将其他信息附加到从我的应用程序发送到DialogFlowjson请求中。我知道可以通过触发Sending Parameters in a Query Request的事件来发送调用意图的数据,并且我已经将该方法用于其他功能。

基本上,我试图用userID添加一个值,并且需要在DialogFlow中检索该值。我正在php中跟踪会话,因此我正在使用php来获取ID值。我已尝试在ajax请求中执行以下操作:

$.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 2Link 3中进行记录。

最佳答案

我在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'];


希望这可以帮助。

07-24 17:13
查看更多