Ответ: да, вы можете предоставить канал, который вы используете, позволяет вложения.Каналы имеют ограничения на такие вещи, как размер и типы файлов, поэтому это будет зависеть от того, какой канал вы используете.Так что, если вы не можете получить PDF для работы, попробуйте с изображением.Если изображение не работает, попробуйте использовать изображение меньшего размера.
Пользователи будут загружать файл через интерфейс канала, например, в эмуляторе:
Для получения изображений в вашем боте не требуется специальный код.Изображения будут присутствовать в Activity
как Activity.Attachments
Это List
вложений или в вашем случае изображений.Это легко можно понять из ответа Раджеша, но для полноты приведем пример того, как что-то сделать с полученным файлом:
В RootDialog.cs
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;
using System;
using System.Net;
using System.Threading.Tasks;
namespace Bot_Application15.Dialogs
{
[Serializable]
public class RootDialog : IDialog<object>
{
public Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
return Task.CompletedTask;
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
foreach (var file in activity.Attachments)
{
//where the file is hosted
var remoteFileUrl = file.ContentUrl;
//where we are saving the file
var localFileName = @"C:\Users\{UserName}\pictures\test" + file.Name;
using ( var webClient = new WebClient())
{
webClient.DownloadFile(remoteFileUrl, localFileName);
}
}
await context.PostAsync($"File received");
context.Wait(MessageReceivedAsync);
}
}
}