我正在为一家公司构建招聘机器人。该机器人的主要任务是从候选人那里获取信息,包括他的简历,并获取通过电子邮件发送的所有信息。
我使用 FormFlow(基本)而不是对话框,这是我获取文件的代码
[AttachmentContentTypeValidator(ContentType = "pdf")]
[Prompt("please, provide us your resume")]
public AwaitableAttachment file_CV;
[Prompt("Your email ?")]
public string email;
public static IForm<ProfileForm> BuildForm()
{
return new FormBuilder<ProfileForm>()
.Message("thank you")
.Build();
}
如果我没记错的话,附件文件会转换为本地存储中的 blob,但在生产中,我应该如何检索此文件以通过电子邮件将其发送到电子邮件作业公司?也许使用 azure 存储?
谢谢。
最佳答案
正如您在评论中提到的,用户提供的附加 pdf 文件似乎作为附件存储在 channel 的 blob 存储中。
如果您想将用户提供的 pdf 文件存储在自定义存储(例如 Azure Blob 存储)中,您可以根据 ContentUrl
访问附件,并在验证功能中将其上传到 Azure Blob 存储。
代码片段:
.Field(nameof(file_CV),
validate: async (state, value) =>
{
var val = (AwaitableAttachment)value;
var url = val.Attachment.ContentUrl;
var aname = val.Attachment.Name;
HttpClient httpClient = new HttpClient();
Stream filestrem = await httpClient.GetStreamAsync(url);
httpClient.Dispose();
var storageAccount = CloudStorageAccount.Parse("{storage_connect_string}");
var blobClient = storageAccount.CreateCloudBlobClient();
var cloudBlobContainer = blobClient.GetContainerReference("useruploads");
await cloudBlobContainer.CreateIfNotExistsAsync();
CloudBlockBlob blockBlob = cloudBlobContainer.GetBlockBlobReference(aname);
blockBlob.UploadFromStream(filestrem);
((AwaitableAttachment)value).Attachment.ContentUrl = blockBlob.Uri.ToString();
var result = new ValidateResult { IsValid = true, Value = value };
return result;
})
测试结果:
关于c# - 使用可等待附件 FormFlow 从 Bot 框架检索文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922819/