MS Bot framework v4 - невозможно добавить создателя QnA к боту - зашифрованное значение имени хоста не является допустимым форматом

Текущая ситуация. В настоящее время у меня есть работающее веб-приложение-бот с интеграцией LUIS (NODE.js). Я хочу добавить в бота производителя QnA. Я создал создателя QnA через службу ботов Azure и создал для него базу знаний.

Проблема: при добавлении сведений о создателе qna к боту и работе с nodemon ./index.js я получаю сообщение об ошибке «Ошибка: зашифрованное значение не является допустимым форматом». Я тестировал, и эта ошибка возникает, когда он пытается прочитать значение имени хоста во время

botConfig = BotConfiguration.loadSync(BOT_FILE, process.env.botFileSecret);

При вставке имени хоста в браузер Azure показывает мне страницу «Ваше приложение-служба приложений запущено и работает», указывая на то, что имя хоста в порядке.

Вопросы:

  1. Как мне отладить это дальше? Может быть, это как-то связано с тем, как настроен производитель QnA?

  2. Опубликованы как производитель QnA, так и база Knoledge - есть ли что-то, что мне нужно добавить вручную в конфигурацию бота через портал Azure, чтобы заставить его распознавать создателя QnA?

Большая часть документации основана на v3 фреймворка ботов и понятия не имеет, применима ли она до сих пор.

Фрагмент 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 < / а>

Полный файл бота с пустым значением замка (все значения ПУСТОЙ имеют реальные ключи, а имя изменено на Тест):

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

person Naadof    schedule 22.01.2019    source источник


Ответы (2)


Нашел решение - используйте 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

Это сохранило ценность замка и успешно добавило его.

person Naadof    schedule 22.01.2019
comment
Еще один комментарий: если вы хотите отредактировать файл .bot вручную, вот документация по расшифровке и последующему повторному шифрованию вашего файла .bot: docs.microsoft.com/de-de/azure/bot-service/ < / а> - person Marcel Berberich; 26.03.2019

Хотя предоставленной вами информации недостаточно для решения проблемы, вы можете выполнить следующие действия.

«Ошибка: зашифрованное значение не является допустимым форматом» * Пожалуйста, проверьте секретные ключи бота еще раз.

Затем в файле бота попробуйте удалить значение замка.

"padlock": ""

Кроме того, я предполагаю, что в вашем фактическом коде вы заменили «Пропущено» ключами реального времени, полученными на портале QnAMaker. *

Если возможно, предоставьте снимок экрана с ошибкой.

person deeepss    schedule 22.01.2019
comment
Если я удалю значение замка, я могу зарегистрировать службу qna, однако приложение больше не работает из-за ошибки [onTurnError]: Ошибка: Ответ 401: Используемый ключ недействителен, имеет неверный формат, пустой или не соответствует область. Я удалил фрагмент qna в файле бота и удалил значение замка, и он дает ту же ошибку. Какое значение имеет замок? Могу я его регенерировать? Я не могу найти по нему никакой документации. - person Naadof; 22.01.2019
comment
Можете ли вы поделиться файлом .bot? - person deeepss; 22.01.2019
comment
Я обновил исходный пост, включив в него полный файл бота (слишком длинный, чтобы добавлять его в качестве комментария) - person Naadof; 22.01.2019