Ошибка канала прямой связи или веб-чата: код состояния HTTP запрещен - PullRequest
0 голосов
/ 13 февраля 2019

Возникла проблема при отправке сообщения в мой чатбот.Я предпринял следующие шаги для создания чат-бота.

  • Создал бота с помощью Bot Framework SDK v-4 и опубликовал его в Azure
  • Создал регистрацию каналов ботов и зарегистрировал идентификатор приложения
  • Включены AppID и пароль для канала бота в настройках приложения API моего сервиса ботов в Azure
  • Создан веб-клиент с использованием botchat-es5.js (версия es-5)

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

POST https://directline.botframework.com/v3/directline/conversations/7IqYgcAzBp4EObQvFzK2fF/activities 502(Bad Gateway)

В журналах каналов прямой связи и веб-чата отображается сообщение об ошибке:

При отправке этого сообщения вашему боту произошла ошибка: код состояния HTTP Запрещено

Ниже приведены подробные данные заголовка запроса.

enter image description here

Ниже приведены подробные сведения о файле конфигурации бота (.bot).Обратите внимание, что идентификатор приложения и пароль пустые, если в этом проблема?

{
  "name": "Chatbot",
  "services": [
    {
      "type": "endpoint",
      "name": "development",
      "endpoint": "http://localhost:3978/api/messages",
      "appId": "",
      "appPassword": "",
      "id": "1"
    },
    {
      "type": "endpoint",
      "name": "production",
      "endpoint": "https://<my_app_name>.azurewebsites.net/api/messages",
      "appId": "<YOUR APP ID>",
      "appPassword": "<YOUR APP PASSWORD>",
      "id": "2"
    }
  ],
  "padlock": "",
  "version": "2.0"
}

Я пытался воссоздать все это в другой подписке, но получаю ту же ошибку.У меня есть другой бот, который работает и работает, и если я использую ключ канала Directline этого бота в том же веб-клиенте, он работает нормально.

Я искал некоторые онлайн-ссылки, но они не помогли.Может кто-нибудь помочь мне, если я что-то упустил?Дайте мне знать, если я смогу предоставить более подробную информацию.

1 Ответ

0 голосов
/ 13 февраля 2019

Если ваш бот использует библиотеку интеграции , код запуска, использующий файл .bot, обычно имеет следующее (среди прочего):

var secretKey = Configuration.GetSection("botFileSecret")?.Value;
var botFilePath = Configuration.GetSection("botFilePath")?.Value;

BotConfiguration botConfig = BotConfiguration.Load(botFilePath, secretKey);

var environment = _isProduction ? "production" : "development";
var service = botConfig.Services.FirstOrDefault(s => s.Type == "endpoint" && s.Name == environment);

services.AddBot<BasicBot>(options =>
{
    options.CredentialProvider = new SimpleCredentialProvider(endpointService.AppId, endpointService.AppPassword);

    //other code
}

Обратите внимание на поставщика учетных данныхсозданный из бота файл AppId и AppPassword.Это appid и apppassword вместо этого можно получить из настроек приложения с помощью чего-то вроде:

options.CredentialProvider =  new SimpleCredentialProvider(Configuration[MicrosoftAppCredentials.MicrosoftAppIdKey],
                                                      Configuration[MicrosoftAppCredentials.MicrosoftAppPasswordKey]);

Примечание: ваша конечная точка также должна быть правильной:

"endpoint": "https://<my_app_name>.azurewebsites.net/api/messages",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...