Тестирование с помощью эмулятора — Не удается получить ответ от бота при запуске из каталога публикации

#c# #asp.net-core #botframework #publish

#c# #asp.net-core #botframework #опубликовать

Вопрос:

Когда я создаю и запускаю проект, все работает нормально.

Когда я публикую проект и запускаю его из каталога публикации, он не отвечает ни на одно сообщение.

В эмуляторе я получаю сообщение:

Не удается опубликовать действие. Несанкционированный. Прямая линия POST403.Последующая активность

 dotnet myBot.dll    //from within publish directory, bot runs, doesnt repond to any message


dotnet run    //from project directory, everything works fine
  

Комментарии:

1. Как вы связываетесь с ботом в обоих случаях?

2. Я просто тестирую это с помощью эмулятора бота. Кроме того, в случае публикации, когда я открываю соединение с эмулятором, я вижу в выводе консоли, что веб-api получает сообщение, оно просто ведет себя так, как будто бот никогда не создается. В обоих случаях приложение запускается на одном и том же порту Kestrel по умолчанию, http 5000 и https 5001.

3. Я отредактировал сообщение с более подробной информацией. Когда я запускаю бота из каталога публикации, я получаю сообщение: Не удается опубликовать активность. Неавторизованный. POST403 directline.postActivity

4. Итак, проблема заключалась в том, что при запуске в рабочей среде вам нужно настроить ngrok, чтобы служба ботов могла взаимодействовать с вашим ботом.

5. Если это решение, добавьте его в качестве ответа. Это совершенно нормально. Возможно, также добавьте некоторую информацию о том, как вы пришли к этому решению.

Ответ №1:

Итак, проблема заключалась в том, что я привязывался к тестовой рабочей конфигурации через конечную точку localhost, и в моем файле .bot у меня было это:

 {
  "type": "endpoint",
  "appId": "myId",
  "appPassword": "myPass",
  "endpoint": "https://my.azurewebsites.net/api/messages",
  "name": "production",
  "id": "4"
},   
  

Конечной точкой производства является служба azure. Итак, вы либо тестируете локально на localhost, либо настраиваете свой сервис в Azure так, чтобы он указывал на ваш localhost (ссылка предоставлена ngrok — В этом случае вам нужно настроить ngrok так, чтобы ваш localhost был доступен извне).

https://blog.botframework.com/2017/10/19/debug-channel-locally-using-ngrok/