我正在尝试使用MS botframework V3使用nodejs教程代码创建一个基本的机器人,但我一直使用模拟器获得401 Unauthorized。请帮帮忙?
AppId / Secret在env变量中设置,在模拟器中肯定是正确的。
以下代码
var restify = require('restify');
var builder = require('botbuilder');
//=========================================================
// Bot Setup
//=========================================================
// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
console.log('%s listening to %s', server.name, server.url);
});
// Create chat bot
var connector = new builder.ChatConnector({
appId: process.env.MICROSOFT_APP_ID,
appPassword: process.env.MICROSOFT_APP_PASSWORD
});
var bot = new builder.UniversalBot(connector);
server.post('/api/messages', connector.listen());
//=========================================================
// Bots Dialogs
//=========================================================
bot.dialog('/', function (session) {
session.send("Hello World");
});
答案 0 :(得分:7)
尝试将appId和appSecret分别更改为MicrosoftAppId和MicrosoftAppPassword
如botframework网站所述
在V1中,身份验证属性与这些密钥一起存储:
在V3中,为了反映对基础身份验证模型的更改,这些键已更改为:
编辑: 因此,从史蒂文github上的一篇文章中,实际值是
appId
appPassword
由于节点sdk存在问题,这些值无法与模拟器一起使用,但是在部署时它们应该可以正常工作。
答案 1 :(得分:2)
第一次使用模拟器时,我自己提供了一个appid和密码。我了解到没有app id和密码也无法在本地工作。
:在bot应用程序和模拟器中删除web.config中的appid和密码解决了我的错误。希望能帮助到你。干杯!
答案 2 :(得分:0)
我遇到了同样的问题,但我可以通过上述解决方案来解决问题。它似乎表明,你可以输入id和pw的任何值。如果找不到,则关闭授权?它是否正确? 我试过这个
var connector = new builder.ChatConnector({appId:'999', appPassword: 'xxxx'});
我仍然得到401。