我试图使用MS botframework V3使用nodejs教程代码创建一个基本的bot,但是使用仿真器却会一直显示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");
});

最佳答案

尝试将appId和appSecret分别更改为MicrosoftAppId和MicrosoftAppPassword
如botframework网站上所述
在V1中,身份验证属性使用以下 key 存储:

  • AppId
  • AppSecret

  • 在V3中,为了反射(reflect)对基础身份验证模型的更改,这些 key 已更改为:
  • MicrosoftAppId
  • MicrosoftAppPassword

  • 编辑:
    因此,从史蒂文(Steven)在github上发表的文章中,实际值是
  • appId
  • appPassword
    由于节点sdk的问题,这些值不适用于仿真器,但是在部署时它们应该起作用。

  • 关联:
    https://github.com/Microsoft/BotBuilder/issues/625

    关于botframework - Bot Framework v3未经授权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38278975/

    10-11 17:06