在我的机器人中,我想接受用户的附件。 我知道如何接收它们:
public async Task<Message> Post([FromBody]Message message)
{
if (message.Type == "Message")
{
if (message.Attachments.Count > 0)
{
foreach (var afile in message.Attachments)
{
lstFiles.Add(afile.ContentUrl);
}
}
我在这里做的是存储它们,因为它们到达lstFiles,这是类MessageController:ApiController私有的字符串列表,这样我知道我可以拥有这些文件及其URL
当用户在Do事件中完成回答问题(我正在使用FormFlow)时,我将他的输入存储在Azure存储表中
internal static IDialog<VGMData> MakeRootDialog()
{
return Chain.From(() => FormDialog.FromForm(VEMData.BuildForm))
.Do(async (context, order) =>
{
var completed = await order;
StoreAndSendEmailConfirmations(completed);
await context.PostAsync("And I am done... ..");
}
我无法理解如何访问.Do功能中的附加文件,以便我可以在azure blob中为用户提交的文件和他的对话中启动下载和后续存储。我似乎只有“上下文”和“订单”是用户数据回复但没有附件文件。 我可以在那里找到lstFiles,但我担心它可能包含来自不同的同时用户和对话的文件。
提前谢谢, 罗马答案 0 :(得分:2)
您可能需要考虑在PerUserPerConversation数据包中存储附件列表。通过这种方式,您可以确保您将检索与参与该对话的用户相关的数据。
Here是关于机器人跟踪状态的文档。