通过模拟器连接时 Botkit 未经授权(Microsoft Bot Framework)

Botkit unauthorized when connecting through emulator (Microsoft Bot Framework)

我想设置 botkit 以使用 Microsoft Bot Framework。

botkit 指的是他们 "Get started" 页面上的 yeoman 生成器:https://botkit.ai/getstarted.html

此生成器要求应用程序 ID 和应用程序密码。

我在 azure 中转到我创建的频道 -> 设置以获取我的 App id。从 "Microsoft App ID" 复制值并将鼠标悬停在信息图标上告诉我单击 "Manage" 以获取密码。 单击 "Manage" 后我进入了 "Not found" 页面。 (根据旧文章,这应该有效,我猜这是因为迁移?https://docs.microsoft.com/en-us/azure/bot-service/bot-service-quickstart-registration?view=azure-bot-service-3.0

之后我在此处关注了一篇关于检索应用密码的微软博客post:https://blog.botframework.com/2018/07/03/find-your-azure-bots-appid-and-appsecret/

按照步骤中的说明在模拟器中输入此内容后。它说:"Unauthorized"。

作为消息传递端点,我转发了我的 ngrok url。 (使用 ./ngrok http 3000 检索)

有什么我遗漏的吗?让它正常工作应该非常简单,不是吗?

要让 Botkit 与 BotFramework 一起工作,您只需要配置几个项目。将您拥有的与以下内容进行比较,注意任何差异,并进行适当的更改。我有这个简单的设置工作。

首先,如果您不知道,这是找到 BotFramework appId 和 appPassword 的方法。

导航到 Azure 机器人的资源组。在左侧菜单窗格中,select 部署。

然后 select 机器人部署和 select 在菜单窗格中输入。然后这将列出您的 appId 和 appPassword。

将此代码放入您的 index.js 文件中。请务必进行必要的 npm 安装。

const { MemoryStorage } = require('botbuilder');
const { Botkit, BotkitBotFrameworkAdapter } = require('botkit');
const path = require('path');

// Note: Ensure you have a .env file.
const ENV_FILE = path.join(__dirname, '.env');
require('dotenv').config({ path: ENV_FILE });

const storage = new MemoryStorage();

const controller = new Botkit({
  adapter: BotkitBotFrameworkAdapter,
  adapterConfig: {
    appId: process.env.MicrosoftAppId,
    appPassword: process.env.MicrosoftAppPassword
  },
  storage: storage,
  webhook_uri: '/api/messages',
});

controller.hears('hello', 'message', async function(bot, message) {
  await bot.reply(message, 'Hello yourself');
});

通过以下设置将您的 appId 和 appPassword 包含在 .env 文件中。

MicrosoftAppId=<appId>
MicrosoftAppPassword=<appPassword>

运行 项目根目录中的 bot node index.js.

最后,在模拟器中,将消息传递端点设置为 http://localhost:3000/api/messages 并包含相同的 'Microsoft App Id' 和 'Microsoft App password' 凭据。

设置模拟器后,通过键入消息进行测试。机器人期待 'hello' 并且只会响应该用户输入。

此时你应该可以开始了。

希望得到帮助!