我试图将其他信息附加到从我的应用程序发送到DialogFlow
的json请求中。我知道可以通过触发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 1,Link 2,Link 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'];
希望这可以帮助。