Я переношу бота с MS Botframework 3 на 4. У нас была функция, которая ежедневно отправляла электронные письма разным людям. Перемещение кода в версию 4 выглядит допустимым, но вызов возвращает ошибку внутри фреймворка.
Исключение выбрасывается в пространстве имен Microsoft.Bot.Connector.Authentication, в методе MicrosoftAppCredentials(string appId, string password, HttpClient customHttpClient). Ошибка System.ArgumentNullException: 'Value cannot be null. Parameter name: clientId'. customHttpClient внутри этого метода имеет значение null. Я не вижу способа передать HttpClient. Может моя реализация неверна?
Мой код:
ChannelAccount userAccount = new ChannelAccount(_config.UncategorizedReportToEmail, _config.UncategorizedReportToEmail);
var botAccount = new ChannelAccount(_config.BotEmail, _config.BotEmail);
var connector = new ConnectorClient(new Uri(_config.EmailServiceUrl));
MicrosoftAppCredentials.TrustServiceUrl(_config.EmailServiceUrl);
// Next line is where the exception is thrown
var conversation = connector.Conversations.CreateDirectConversation(botAccount, userAccount);
var conversationId = conversation.Id;
@JJ_Wailes Спасибо за ответ. Ввод явных значений в результаты приводит к той же проблеме.
Что произойдет, если вы замените «CreateDirectConversation» на «CreateDirectConversationAsync»?





System.ArgumentNullException: 'Value cannot be null. Parameter name: clientId'
Эта ошибка возникает из-за неправильного чтения идентификатора приложения/пароля из файла конфигурации. Независимо от того, используете ли вы файл .bot, файл appsettings.json или файл web.config, убедитесь, что ваш appID и пароль верны.
Что произойдет, если вы проставите все явно, а не через _config?