Node.js 在LUIS对话框中调用QnAMaker
我有一个QnA机器人和一个路易斯机器人。当QnA对话框被触发以获得响应时,我想在我的LUIS对话框中发出post请求。我测试了它,只是问了一个问题:您好,哪个应该回答您好 我不确定我的端口是否正确,因为我是从另一个类似的stackoverflow问题得到它的,所以这可能就是我的错误所在。我也尝试过没有任何端口 当我问问题时,我得到一个错误:Node.js 在LUIS对话框中调用QnAMaker,node.js,rest,botframework,azure-language-understanding,azure-bot-service,Node.js,Rest,Botframework,Azure Language Understanding,Azure Bot Service,我有一个QnA机器人和一个路易斯机器人。当QnA对话框被触发以获得响应时,我想在我的LUIS对话框中发出post请求。我测试了它,只是问了一个问题:您好,哪个应该回答您好 我不确定我的端口是否正确,因为我是从另一个类似的stackoverflow问题得到它的,所以这可能就是我的错误所在。我也尝试过没有任何端口 当我问问题时,我得到一个错误:error:read ECONNRESET 我在Azure机器人服务上运行这个,我怀疑这可能是这个小错误的原因 这是我的密码: var request = r
error:read ECONNRESET
我在Azure机器人服务上运行这个,我怀疑这可能是这个小错误的原因
这是我的密码:
var request = require('request');
var http = require('http');
var options = {
host:'westus.api.cognitive.microsoft.com',
path:'/qnamaker/v2.0/knowledgebases/<kb-key>/generateAnswer',
port:443,
method:'POST',
headers:{
'Ocp-Apim-Subscription-Key':<sub-key>,
'Content-Type':'application/json'
}
};
//http POST request
var reqPost = http.request(options,function(res){
res.setEncoding('utf-8');
var responseString = '';
res.on('data',function(chunk){
responseString += chunk;
});
res.on('end', function () {
session.send(responseString);
});
});
//LUIS dialog when question is asked.
bot.dialog('qnaReq', function (session, args) {
//call QnA Bot and ask that bot the question
reqPost.write({"question":"hi"}); //Just testing "hi" for now.
reqPost.end();
reqPost.on('error',function(e){
session.send('error: ' + e);
});
}).triggerAction({
matches: 'QnA'
});
var request=require('request');
var http=require('http');
变量选项={
主持人:'westus.api.cognitive.microsoft.com',
路径:'/qnamaker/v2.0/knowledgebase//generateAnswer',
港口:443,
方法:'POST',
标题:{
“Ocp Apim订阅密钥”:,
“内容类型”:“应用程序/json”
}
};
//http POST请求
var reqPost=http.request(选项、函数(res){
res.setEncoding('utf-8');
var responseString='';
res.on('data',函数(块){
responseString+=组块;
});
res.on('end',function(){
会话。发送(应答);
});
});
//当被问到问题时,LUIS对话。
bot.dialog('qnaReq',函数(会话,参数){
//打电话给QnA机器人,向该机器人提问
write({“问题”:“hi”});//现在只测试“hi”。
reqPost.end();
请求发布(错误),功能(e){
session.send('错误:'+e);
});
}).触发作用({
比赛:“QnA”
});
这是您完整的机器人程序代码吗?如果是这样,则表明您尚未实例化botbuilder
模块,并且您尚未将bot
对象初始化为通用bot并将其绑定到连接器。@NilsW不,这不是我的全部代码。botbuilder已导入,所有对话框和普通对话框都能完美工作。我只是对这个有POST请求的特定对话框有一个问题。我只发布了我的应用程序特有的代码。您是否尝试过在bot应用程序外部测试QnAMaker API调用以验证它是否正常工作?奇怪的是,您似乎已经将请求
模块导入到了代码中,但您没有使用它来发出API请求。尝试使用request
模块而不是http.request
。将请求包含在代码示例中是我的错误。我的代码使用它在不同的对话框中调用另一个api。我不完全确定如何在应用程序外部测试QnAMaker API调用。我不明白该把{“问题”:“嗨”}这是一个参数吗?因为我试着在Hull.it上测试它,结果发现badArgument是一个错误,所以我知道我做错了什么there@NilsW我已经通过了{“问题”:“你好”}作为我的帖子的主体,并得到了预期的结果:{“答案”:[{“答案”:“你好”,“问题”:[“你好”,“你好”,“你好”],“分数”:98.814691264718775}]}