【问题标题】:botframework handling attachments per user and conversationbotframework 处理每个用户和对话的附件
【发布时间】:2016-09-08 07:58:30
【问题描述】:

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

 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 中,这是类 MessagesController 私有的字符串列表: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,但恐怕它可能包含来自不同同时用户和对话的文件。

提前致谢, 罗马

【问题讨论】:

    标签: botframework


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我在询问之前阅读了有关机器人状态的文档。我的困惑是我实际上从不使用回复消息,一切都通过 FormFlow 进行,我的问题是我不知道如何从内部访问消息数据包。最后做事件
    • 我明白了,在 .Do 事件中我可以通过 context.PerUserInConversationData 访问,谢谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多