MS Bot 框架 v4 - 无法将 QnA maker 添加到 bot - 主机名加密值不是有效格式

MS Bot framework v4 - cannot add QnA maker to bot - hostname encrypted value is not a valid format

当前情况: 我目前有一个集成了 LUIS 的网络应用程序机器人 (NODE.js)。我想向机器人添加一个 QnA 制造商。我已经通过 Azure 机器人服务创建了一个 QnA maker,并创建了一个知识库供其使用。

问题: 将 qna maker 详细信息添加到 bot 和 运行 nodemon ./index.js 时,出现错误 "Error: The encrypted value is not a valid format" .我已经测试过,当它在

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

将主机名粘贴到浏览器时,Azure 会显示一个 "Your App Service app is up and running" 页面,表明主机名没问题。

问题:

  1. 如何进一步调试?会不会是 QnA maker 的设置方式有关?

  2. QnA maker 和 Knoledge base 均已发布 - 我是否必须通过 Azure 门户手动将某些内容添加到机器人的配置中以使其识别 QnA maker?

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

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

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

我看过的文档:

  1. https://docs.microsoft.com/en-gb/azure/bot-service/bot-builder-tutorial-dispatch?view=azure-bot-service-4.0&tabs=javascript
  2. https://docs.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://docs.microsoft.com/en-us/azure/cognitive-services/QnAMaker/how-to/troubleshooting-runtime#how-to-get-latest-qnamaker-runtime-updates

带有空挂锁值的完整 bot 文件(所有省略的值都有真实的密钥并且名称已更改为测试):

{
  "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"
    }
  ]
}

虽然您提供的信息不足以提供解决方案,但您可以按照以下步骤进行检查。

"Error: The encrypted value is not a valid format" *请再次检查您的机器人密钥。

然后,在您的 bot 文件中,尝试删除挂锁值。

"padlock": ""

此外,我假设在您的实际代码中,您已将“OMITTED”替换为您从 QnAMaker 门户网站获得的实时密钥。*

如果可能,请提供错误的屏幕截图。

找到解决方案 - 使用 msbot cli 添加 QnA maker 而不是手动添加,因为文件已加密,如果不使用 msbot/emulator shrug

我删除了 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

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