Развертывание и запуск каркаса ботов v4.4 + из шаблона работает, но развертывание и запуск с использованием fork и source control не работает - PullRequest
2 голосов
/ 08 мая 2019

Сводка

Я пытаюсь развернуть последнюю версию Microsoft Virtual Assistant с кодом .В документации они описывают процесс для развертывания и запуска бота с использованием шаблона Visual Studio .Весь процесс, описанный в документации, прекрасно работает.

Однако я не люблю использовать шаблон.Я не хочу терять историю Git от Microsoft.Кроме того, это развертывание должно выдержать испытания временем, и я хочу максимально упростить объединение обновлений от Microsoft.

Внутри репозитория Microsoft имеется подкаталог , содержащий виртуальный помощник C # шаблон и образец кода , как если быон был развернут по шаблону .

Средства сохранения истории Git, возможность получения новых коммитов и т. д.

Я опишу свое решение, которое позволяет мне сохранять историю Git от Microsoftс легкостью извлекайте их последние коммиты и по-прежнему предоставляете мне проект разумного размера для работы над развертыванием бота моего клиента (репозиторий Microsoft AI огромен и содержит много вещей, которые мне не нужны в развертывании бота).Получившаяся ветка / проект, над которым я работаю, очень напоминает (см. Ниже, похоже, что) решение / проект, который я получаю, когда создаю его из шаблона в Visual Studio.

  1. I раздвоенный Все репозиторий GitHub от Microsoft .
  2. Я настроил локальный репозиторий Git с репозиторием Microsoft и моим форком в качестве удаленных.
  3. Я использовал поддерево Git, как описано в этом сообщении о переполнении стека , чтобы отфильтровать репо только до примера кода Virtual Assistant C # .Я создал ветвь для этого поддерева .
  4. Я скопировал ветвь поддерева в ветвь разработки, где я собираюсь выполнить всю свою собственную разработку.
  5. Я могу использовать masterна удаленном входящем удаленном канале Microsoft и недавно созданной ветви поддерева для непрерывного получения новых коммитов от Microsoft в мою личную ветку разработки.

Вот некоторый псевдокод, который приблизительно проходит через процесс.

$ git checkout upstream/master
Switched to branch upstream/master
Your branch is up to date with 'r_microsoft/master'.
$ git subtree split --prefix=templates/Virtual-Assistant-Template/csharp/sample --onto upstream/virtual-assistant-csharp -b upstream/virtual-assistant-csharp
$ git checkout upstream/virtual-assistant-csharp
$ git checkout -b eric/develop
Switched to branch 'eric/develop'
Your branch is up to date with 'r_eric/develop'.
$ git rebase upstream/virtual-assistant-csharp
Current branch eric/develop is up to date.

Развертывание и запуск бота

Используя это поддерево вместо решения, созданного на основе шаблона, я следовал указаниям для развертывания и запуска бота.У Microsoft есть отдельная страница Markdown для развертывания (ссылка на случай, если вы захотите ее проверить).

Похоже, что развертывание прошло успешно.Я заменил конфиденциальную информацию на xxx.

PS C:\Users\eric\bot\VirtualAssistantSample> .\Deployment\Scripts\deploy.ps1 -name "personal-bot-test-using-git" -location "westus" -luisAuthoringKey "xxx" -luisAuthoringRegion "westus" -resourceGroup "personal-bot-test-using-git" -appId "xxx" -appPassword "xxx"
> Creating resource group ...
> Deploying Azure services (this could take a while)...
> Updating appsettings.json ...
> Deploying cognitive models ...
> Initializing dispatch model ...
> Parsing general LU file ...
> Deploying general LUIS app ...
> Adding general app to dispatch model ...
> Parsing chitchat LU file ...
> Deploying chitchat QnA kb ...
> Adding chitchat kb to dispatch model ...
> Parsing faq LU file ...
> Deploying faq QnA kb ...
> Adding faq kb to dispatch model ...
> Creating dispatch model...
> Done.

Я сделал все точно в соответствии с их действиями (кроме того, что не использовал шаблон).Когда я строю, ошибок нет.Запуск бота не показывает ошибок.

The web page seems to indicate that things are working.

Вот я подключаюсь, используя Эмулятор бота Microsoft (заменены важные значения).

Image of how I connected.

Однако, когда я тестирую бота, игральных костей нет.Приветственное сообщение не отображается.

No welcome message.

И связь не работает.

Image showing that it's definitely not working.

Вот чтоPOST 400 directline.postActivity говорит.

{
  "error": {
    "code": "ServiceError",
    "message": "Refresh access token failed with status code: 401"
  }
}

С другой стороны, если я делаю все те же шаги, кроме запуска из проекта / решения, созданного шаблоном, он просто работает.

This magically works..

Дополнительный контекст

  • Я испробовал весь процесс, используя Visual Studio 2019 и 2017 с последними пакетами NuGet.Кажется, нет никаких различий.
  • С моими средствами начать проект, нет файла .sln.Поэтому я открываю проект с помощью файла .csproj.Используя шаблон бота, он создает файл .sln, который я могу использовать, чтобы открыть все это.Независимо от того, открываю ли я проект, который был развернут из шаблона с помощью .sln или .csproj, он работает.
  • Я сравнил каталоги бота (поддерево из исходного кода с созданным шаблоном), используя WinMerge . Я не вижу существенных различий (конечно, я не могу копаться в содержимом файлов .dll).
  • РЕДАКТИРОВАТЬ ~ 8 часов после создания. Похоже, что боты, созданные даже с помощью шаблона, больше не работают?

1 Ответ

1 голос
/ 09 мая 2019

@ EricHansen и я говорили об этом в его связанной с GitHub проблеме . Поскольку информация может быть полезна для других, я добавлю сюда «ответ»:

401 почти всегда вызваны несовпадением MicrosoftAppId / MicrosoftAppPassword. Убедитесь, что они совпадают во всех этих местах:

  1. appsettings.json / .env / .bot, независимо от того, что применимо
  2. Регистрация приложения
  3. Тот, который вы используете при открытии эмулятора

Если это не сработает, следуйте Руководству по устранению неполадок при аутентификации

Вы также должны убедиться, что все ваши пакеты обновлены, в том числе:

Разрешение OPs, скорее всего, было связано с этим:

У меня определенно были проблемы с некоторыми строками пароля. The README отмечает, что возникли проблемы с паролями, содержащими @. Я знаю я были проблемы с другим паролем, однако (я не помню, что специальный характер дал ему проблему). Я предполагаю, что это было выпуск.

По-моему, это была проблема со специальным персонажем. в пароле, эмулятор кеширует id / pass каким-то неожиданным образом, или IIS Экспресс кеширование id / pass каким-то образом. Обычно, если я переключаю ботов с теми же конечными точками и сталкиваясь с неприятностями, я перезапускаю те и это обычно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...