我已经使用Dialogflow api v1开发了聊天机器人。代码没有变化。但是,现在服务器的响应是“ code”:401,“ errorType”:“ unauthorized”,“ errorDetails”:“缺少身份验证参数。我使用以下URL在Postman中进行了检查。 https://api.dialogflow.com/v1/query?v=519794&lang=en&query=hi&sessionId=519794&Content-Type=application/json,并给我的客户访问令牌为不记名令牌。当我尝试使用post方法时遇到错误。但是,当我使用GET方法时,它在邮递员中有效。因此,我在javascript代码中尝试了相同的代码,并收到401未经授权的错误。怎么了?
答案 0 :(得分:0)
我已使用以下代码解决了此问题。
在Ajax调用中使用GET方法而不是POST,并在data参数中删除了JSON.stringify。
var text =“ hello”; var iRandom = Math.floor((Math.random()* 10000000)+1);
$。ajax({
type: "GET",
url: "https://api.api.ai/v1/query?v=324233",
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer "+accessToken
},
data: { query: text, lang: "en", sessionId: iRandom},
success: function(data) {
//desired action
},
error: function() {
console.log("Internal Server Error");
}
});
另一种替代解决方案:
我保留了较早的版本。
var iRandom = Math.floor((Math.random()* 10000000)+1);
类型:POST, 数据:JSON.stringify({查询:文本,朗格:“ en”,sessionId:iRandom})
我没有以数字形式传递iRandom,而是以String形式传递,因此我能够从dialogflow中获得响应。