我正在尝试将额外信息附加到 json从我的应用程序发送到 DialogFlow
的请求。我知道可以通过触发来自 Sending Parameters in a Query Request 的事件来发送调用意图的数据。 ,并且我已经将该方法用于其他功能。
基本上,我正在尝试使用 userID
添加一个值,并且我需要在 DialogFlow
中检索该值。我正在跟踪 php 中的 session ,所以我使用 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");
}
});
我需要请求中的该值来基于它在后端
中处理一些数据。如果有人知道如何做到这一点,或者有更好方法的建议,我们将不胜感激。
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'];
希望这有帮助。
关于javascript - 如何在发送到 DialogFlow 前 Api.ai 的请求 JSON 中添加额外字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47342817/