Проверьте работоспособность бота в командах с помощью ngrok - PullRequest
2 голосов
/ 30 апреля 2020

Я занимаюсь разработкой бота с использованием Bot Framework и Azure для команд Microsoft, и я буду разрабатывать и тестировать свой код непосредственно в командах MS с помощью ngrok. В настройках бота я установил конечную точку сообщения на URL-адрес, полученный от ngrok, и добавил /api/messages.

Но каждый раз, когда я хочу отправить сообщение от Команды, я получаю 401 несанкционированный ответ .

Как я могу разрешить ngrok отправлять сообщения?

Обновление: Форма ответа @ Хилтон Гизенов Я проверил файл appSettings.json и там все правильно. Он также сказал, что есть небольшое изменение в том, что проблема в HttpAdapter. Итак, вот мой код:

public class AdapterWithErrorHandler : BotFrameworkHttpAdapter
{
    public AdapterWithErrorHandler(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger) : base(configuration, logger)
    {
        OnTurnError = OnTurnErrorHandler;
    }

    private async Task OnTurnErrorHandler(ITurnContext turnContext, Exception exception)
    {
        string replyText = "An error occured while sending a message. If this error stays, please contact the service desk.";

        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText));
    }
}

Код в файле запуска в методе ConfigureServices:

services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
services.AddTransient<ILogger<BotFrameworkHttpAdapter>, BotFrameworkHttpAdapterLogger>();

1 Ответ

3 голосов
/ 30 апреля 2020

Таким образом, у вас есть правильные первые шаги, если они зашли так далеко. Просто несвязанный совет, вы даже можете увидеть трафик c, просмотрев http://localhost: 4040 .

Кроме того, ваша фактическая ошибка, скорее всего, вызвана неверной или отсутствующей Bot App Id и App Password в конфигурации вашего бота (например, ваши appSettings. json для проекта C# или эквивалент для проекта узла). Вот пример для проекта C#.

Вы получаете эту информацию на портале Azure. Самый простой способ - go самого бота, go - в разделе «Настройки» в левом меню, а затем выбрать ссылку «Управление» над разделом «Идентификатор приложения Microsoft» (появляется идентификатор приложения, который Если вам нужно, ссылка «управление» - это то, где вы go получаете пароль приложения). Смотрите скриншот экрана настроек здесь .

Если он все еще не работает, то, скорее всего, сами настройки конфигурации. По сути, под прикрытиями и по умолчанию HttpAdapter попытается создать экземпляр ConfigurationCredentialProvider , который очень конкретно ищет элементы конфигурации с именами «MicrosoftAppId» и «MicrosoftAppPassword» (см. здесь для более подробной информации).

Итак, вам нужно убедиться, что имена ваших настроек соответствуют этим параметрам в вашем конфигурационном файле. Если у вас все еще есть проблемы, то вы можете, по крайней мере, убедиться, что это проблема конфигурации, заменив строку для создания экземпляра базы в файле "AdapterWithErrorHandler". Измените его на:

: base(new Bot.Connector.Authentication.SimpleCredentialProvider("[your app id]", "[your add password"), logger: logger)

...