C# 使用Bot框架将文件上载到用户
我一直在开发Bot,我已经配置了我的WaterwallDialog,Bot连接到数据库,获取一些信息并创建Excel文件,现在我不知道如何将文件上传到用户。是否无法将文件直接上载到用户 我遵循了上面的帖子,但这为用户提供了一个URL,或者它从文件中删除了扩展名 编辑:我已经按照上面问题中的两个答案进行了操作,第一个答案将文件上载到频道,但文件扩展名和文件名已更改。因此,当用户下载文件时,他们会下载“原始”而不是“file.extension” 根据要求,这里是使用的代码C# 使用Bot框架将文件上载到用户,c#,botframework,C#,Botframework,我一直在开发Bot,我已经配置了我的WaterwallDialog,Bot连接到数据库,获取一些信息并创建Excel文件,现在我不知道如何将文件上传到用户。是否无法将文件直接上载到用户 我遵循了上面的帖子,但这为用户提供了一个URL,或者它从文件中删除了扩展名 编辑:我已经按照上面问题中的两个答案进行了操作,第一个答案将文件上载到频道,但文件扩展名和文件名已更改。因此,当用户下载文件时,他们会下载“原始”而不是“file.extension” 根据要求,这里是使用的代码 { var
{
var imagePath = System.Web.HttpContext.Current.Server.MapPath(@"~\Resources\Results.xlsx");
using (var connector = new ConnectorClient(new Uri(serviceUrl)))
{
var attachments = new Attachments(connector);
var response = await attachments.Client.Conversations.UploadAttachmentAsync(
conversationId,
new AttachmentData
{
Name = "Results.xlsx",
OriginalBase64 = File.ReadAllBytes(imagePath),
Type = "text/xlsx"
});
var attachmentUri = attachments.GetAttachmentUri(response.Id);
return new Attachment
{
Name = "Results.xlsx",
ContentType = "text/xlsx",
ContentUrl = attachmentUri
};
}
}
使用internet附件,在发送给用户之前将文件上载到某个主机(例如:aws s3)
private static Attachment GetInternetAttachment()
{
// ContentUrl must be HTTPS.
return new Attachment
{
Name = @"Resources\architecture-resize.png",
ContentType = "image/png",
ContentUrl = "https://docs.microsoft.com/en-us/bot-framework/media/how-it-works/architecture-resize.png",
};
}
这回答了你的问题吗?正如我所说的,我之前一直在问这个问题,但是当你点击下载文件时,下载的文件名为“original”,而不是你所期望的“file.extension”。编辑:读了一遍后,我意识到我只是说我遵循了前面问题的URL部分。你能发布你的代码吗?用使用过的代码更新。这是我们最终决定这样做的方式,这是一个解决方案,但如果可以上传到频道,我仍然更愿意这样做。另一个解决方案也使用Sharepoint,但这需要与AzureI进行更多的集成。我建议使用该解决方案,因为只有internet附件对我有效,可能是其他类型附件的错误,无法摆脱“原始”下载问题。啊,我已经打开了Microsoft对此的支持,因此我可以看看我们是否能够找到问题的根源,如果没有直接的解决办法,我会更新问题并接受你的回答