Существует ли специальная конфигурация, разрешающая вложения в эмуляторе MS Bot?C#

Место общения программистов C#
Ответить
Anonymous
 Существует ли специальная конфигурация, разрешающая вложения в эмуляторе MS Bot?

Сообщение Anonymous »

Я пытаюсь загрузить вложение от пользователя в бот. Я пытался написать код простым языком и протестировать его на эмуляторе Microsoft Bot. проблема в том, что я получаю сообщение об ошибке (ошибка отправки) POST 400 Directline/Conversations//upload
Это код, который я использую.публичный класс AttachmentsBot: ActivityHandler
{
частный только для чтения IHttpClientFactory _httpClientFactory;

Код: Выделить всё

 public AttachmentsBot(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}

protected override async Task OnMessageActivityAsync(ITurnContext turnContext, CancellationToken cancellationToken)
{
var attachments = turnContext.Activity.Attachments;
if (attachments != null && attachments.Count > 0)
{
foreach (var attachment in attachments)
{
await ProcessAttachmentAsync(turnContext, attachment, cancellationToken);
}
}
else
{
await turnContext.SendActivityAsync(MessageFactory.Text("Please attach a file."), cancellationToken);
}
}

private async Task ProcessAttachmentAsync(ITurnContext turnContext, Attachment attachment, CancellationToken cancellationToken)
{
var client = _httpClientFactory.CreateClient();

try
{
// Log the ContentUrl for debugging purposes
Console.WriteLine($"Attachment URL: {attachment.ContentUrl}");

// Download the file from the given ContentUrl
var response = await client.GetAsync(attachment.ContentUrl, cancellationToken);
if (response.IsSuccessStatusCode)
{
var fileBytes = await response.Content.ReadAsByteArrayAsync(cancellationToken);
var fileName = attachment.Name ?? "unknown";
var contentType = attachment.ContentType;

// Save the file locally (for example purposes)
var filePath = Path.Combine(Path.GetTempPath(), fileName);
await File.WriteAllBytesAsync(filePath, fileBytes, cancellationToken);

// Respond to the user
await turnContext.SendActivityAsync(
MessageFactory.Text($"Attachment '{fileName}' of type '{contentType}' has been saved to {filePath}."),
cancellationToken);
}
else
{
// Log the error response
Console.WriteLine($"Failed to download attachment. HTTP Status: {response.StatusCode}");
await turnContext.SendActivityAsync(
MessageFactory.Text($"Failed to download attachment: {attachment.Name}. HTTP Status: {response.StatusCode}"),
cancellationToken);
}
}
catch (Exception ex)
{
await turnContext.SendActivityAsync(
MessageFactory.Text($"An error occurred while processing the attachment: {ex.Message}"),
cancellationToken);
}
}
}
Я ожидаю получить вложение и обработать его в коде.

Подробнее здесь: https://stackoverflow.com/questions/793 ... t-emulator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»