node.js - MS Bot 框架 v4 - 无法将 QnA 生成器添加到机器人 - 主机名加密值不是有效格式

标签 node.js botframework azure-bot-service azure-qna-maker

当前情况:我目前有一个可运行的具有 LUIS 集成 (NODE.js) 的 Web 应用程序机器人。我想向机器人添加 QnA 生成器。我通过 Azure 机器人服务创建了一个 QnA 生成器,并创建了一个知识库供其使用。

问题:将 qna 制造商详细信息添加到机器人并使用 nodemon ./index.js 运行时,出现错误“错误:加密值不是有效格式”。我已经测试过,当它尝试在

期间读取主机名值时,会抛出此错误
botConfig = BotConfiguration.loadSync(BOT_FILE, process.env.botFileSecret);

将主机名粘贴到浏览器中时,Azure 会显示“您的应用服务应用程序已启动并正在运行”页面,表明主机名正常。

问题:

  1. 如何进一步调试?这可能与 QnA 生成器的设置方式有关吗?

  2. QnA 生成器和知识库均已发布 - 我是否需要通过 Azure 门户手动添加一些内容到机器人的配置中才能使其识别 QnA 生成器?

很多文档都是基于机器人框架 v3 的,不知道它是否仍然适用。

Bot 文件中的 QnA 片段(省略了一些值,不确定它们有多敏感):

{
  "type": "qna",
  "name": "pathqna",
  "KbId": "OMITTED",
  "subscriptionId": "OMITTED",
  "endpointKey": "OMITTED",
  "hostname": "https://pathqna.azurewebsites.net",
  "id": "7"
}

我看过的文档:

  1. https://learn.microsoft.com/en-gb/azure/bot-service/bot-builder-tutorial-dispatch?view=azure-bot-service-4.0&tabs=javascript
  2. https://learn.microsoft.com/en-us/azure/cognitive-services/qnamaker/tutorials/create-qna-bot
  3. https://github.com/Microsoft/botbuilder-tools/blob/master/packages/MSBot/docs/sample-bot-file.json
  4. https://learn.microsoft.com/en-us/azure/cognitive-services/QnAMaker/how-to/troubleshooting-runtime#how-to-get-latest-qnamaker-runtime-updates

带有空挂锁值的完整机器人文件(所有省略的值都有真实的 key ,并且名称已更改为“测试”):

{
  "name": “Test”,
  "padlock": "",
  "version": "2.0",
  "services": [
    {
      "tenantId": "OMITTED",
      "subscriptionId": "OMITTED",
      "resourceGroup": OMITTED,
      "serviceName": OMITTED,
      "type": "abs",
      "name": OMITTED,
      "id": "1"
    },
    {
      "connectionString": "OMITTED",
      "tenantId": "OMITTED",
      "subscriptionId": "OMITTED",
      "resourceGroup": OMITTED,
      "serviceName": "patha048",
      "type": "blob",
      "id": "2"
    },
    {
    “appId": "OMITTED",
      "appPassword": “OMITTED”,
      "endpoint": "http://localhost:3978/api/messages",
      "type": "endpoint",
      "name": "development",
      "id": "3"
    },
    {
      "appId": "OMITTED",
      "appPassword": “OMITTED”,
      "endpoint": "https://path-a048.azurewebsites.net/api/messages",
      "type": "endpoint",
      "name": "production",
      "id": "4"
    },
    {
      "instrumentationKey": “OMITTED”,
      "applicationId": “OMITTED”,
      "apiKeys": {},
      "tenantId": "OMITTED",
      "subscriptionId": "OMITTED",
      "resourceGroup": OMITTED,
      "serviceName": "Patht6r6m4",
      "type": "appInsights",
      "id": "5"
    },
    {
      "appId": “OMITTED”,
      "authoringKey": “OMITTED”,
      "version": "0.1",
      "region": "westus",
      "type": "luis",
      "name": "BasicBotLuisApplication",
      "id": "6"
    },
    {
      "type": "qna",
      "name": "pathqna",
      "id": "7",
      "kbId": “OMITTED”,
      "subscriptionKey": "OMITTED",
      "endpointKey": “OMITTED”,
      "hostname": "https://pathqna.azurewebsites.net"
    }
  ]
}

最佳答案

找到了解决方案 - 使用 msbot cli 添加 QnA 生成器,而不是手动添加,因为文件已加密,如果您不使用 msbot/模拟器,则会丢失其解密耸耸肩

我删除了 qna 片段并运行了此命令(已添加通用值以保留实际值):

msbot connect qna --secret <botFileSecret> --name pathqna --kbId <KB-ID> --subscriptionKey <SUB_KEY> --endpointKey <ENDPOINT_KEY> --hostname "https://pathqna.azurewebsites.net" --bot Path.bot

这保留了挂锁值并成功添加。

关于node.js - MS Bot 框架 v4 - 无法将 QnA 生成器添加到机器人 - 主机名加密值不是有效格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54307598/

相关文章:

azure - 内部服务器错误 500 - 托管 Microsoft Bot Framework 的 Azure 应用服务

c# - 由外部服务触发时恢复 Bot Framework 对话框

node.js - 使用 passport.js 推特登录重新登录用户

javascript - if 语句中不同的数组长度越界异常

javascript - 如何发出 Map 对象

botframework - 回复 Skype for Business 上的对话更新

botframework - Azure Bot Services - 如何添加 Skype channel 使用的 Bot 的详细描述设置

node.js - 对于使用 node.js 创建的 mjpeg 流,如何将其编码为另一种格式,然后进行流式传输?

c# - 在 BotFramework 上启动从机器人到用户的消息

c# - Microsoft Bot Framework 自适应卡片无法正确呈现