我目前正在CodePen.io的网页上与Wit.ai合作。我想知道是否有可能检索Wit.ai机器人的文本响应(“博特说”)使用HTTP API。
例如:如果用户使用以下命令提示机器人:
怎么样了?
我希望在使用此消息进行API调用之后,能够检索机器人的典型响应:
我很好,谢谢人类。
我通过看HTTP API文档。似乎使用api.wit.ai/converse的'POST'完成了。JSON响应包含一个“ msg”字段,这正是我所需要的!这是我当前正在使用的代码:
$.ajax({
url: baseUrl + "converse",
data: {
'q': text, // The message to send the bot
'session_id': "123abc",
'access_token' : accessToken // Authorisation key for using our bot
},
dataType: 'json',
crossDomain: true,
method: 'POST',
success: function(data) {
prepareResponse(data);
},
error: function() {
respond(messageInternalError);
}
});
但是,Wit.Ai目前不支持CORS,发出跨域请求的唯一方法是使用JSONP,它仅适用于GET请求。可以预期,上面的代码导致HTTP 400错误。
任何人都可以确认是否是可以使用HTTP API来检索机器人的用户信息文本响应?我目前在做什么工作?
最近,我有同样的问题。为了成功进行对话,我必须首先创建一个本地服务器,该服务器将处理所有用户请求并将其发送到Wit的服务器。
使用node.js
,express
,nodemon
和sync-request
。
这是server.js文件:
var express = require('express')
var request = require('sync-request');
var port = 8001;
var app = express()
app.get('/converse', function (req, res) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
var message = req.query.q;
var sessionID = req.query.session_id;
var response = request('POST', 'https://api.wit.ai/converse?q=' + message + '&session_id=' + sessionID, {
'headers': {
'Content-Type': 'application/json; charset=utf8',
"Accept": "application/json",
"Authorization": "Bearer $place-app-token"
}
});
res.send(JSON.parse(response.getBody('utf8')));
})
app.listen(port);
服务器将发送一个POST
带有headers
Wit需要配置的请求。
用户将向GET
本地服务器发送请求。用jQuery
,如文档建议:https://wit.ai/docs/http/20160526#cross-domain-link
这是前端请求:
$.ajax({
url: 'http://127.0.0.1:8001/converse',
data: {
'q': text,
'session_id': sessionID
},
method: 'GET',
crossDomain: true,
success: function(response) {
console.log(response, response.msg);
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句