botframework处理每个用户和对话的附件

时间:2016-05-12 12:59:03

标签: botframework

在我的机器人中,我想接受用户的附件。 我知道如何接收它们:

 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,但我担心它可能包含来自不同的同时用户和对话的文件。

提前谢谢, 罗马

1 个答案:

答案 0 :(得分:2)

您可能需要考虑在PerUserPerConversation数据包中存储附件列表。通过这种方式,您可以确保您将检索与参与该对话的用户相关的数据。

Here是关于机器人跟踪状态的文档。