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

时间:2019-01-22 11:45:21

标签: node.js botframework azure-bot-service qnamaker

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

问题::将qna maker详细信息添加到bot并与nodemon ./index.js一起运行时,出现错误“错误:加密的值不是有效格式”。我已经测试过,尝试在

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

将主机名粘贴到浏览器中时,Azure会显示“您的App Service应用已启动并正在运行”页面,指示主机名很好。

问题:

  1. 如何进一步调试?与QnA制造商的设置方式有关吗?

  2. QnA制造商和Knoledge库均已发布-我是否必须通过Azure门户手动将其添加到机器人的配置中,以使其能够识别QnA制造商?

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

Bop文件中的

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文件(所有OMITTED值均具有真实密钥,并且名称已更改为Test):

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

2 个答案:

答案 0 :(得分:3)

找到了解决方案-如果您不使用msbot /模拟器耸肩

,则使用msbot cli添加QnA maker而不是手动添加,因为文件已加密并且丢失了解密

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

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

答案 1 :(得分:0)

尽管您提供的信息不足以提供解决方案,但是您可以检查以下步骤。

“错误:加密的值不是有效格式” *请再次检查您的漫游器密钥。

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

"padlock": ""

此外,我假设在您的实际代码中,您已使用从QnAMaker门户获得的实时密钥替换了<< strong> Omitted (已省略)。

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