diff --git a/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.SendMessage.cs b/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.SendMessage.cs index e4d654528..3489d2603 100644 --- a/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.SendMessage.cs +++ b/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.SendMessage.cs @@ -16,6 +16,11 @@ public async Task SendMessage(string agentId, { var conversation = await GetConversationRecord(agentId); + // Save message files + var fileService = _services.GetRequiredService(); + fileService.SaveMessageFiles(_conversationId, message.MessageId, FileSourceType.User, message.Files); + message.Files?.Clear(); + var agentService = _services.GetRequiredService(); Agent agent = await agentService.LoadAgent(agentId); @@ -46,11 +51,6 @@ public async Task SendMessage(string agentId, routing.Context.SetMessageId(_conversationId, message.MessageId); routing.Context.Push(agent.Id); - // Save message files - var fileService = _services.GetRequiredService(); - fileService.SaveMessageFiles(_conversationId, message.MessageId, FileSourceType.User, message.Files); - message.Files?.Clear(); - // Save payload if (replyMessage != null && !string.IsNullOrEmpty(replyMessage.Payload)) { diff --git a/src/Infrastructure/BotSharp.Core/Files/BotSharpFileService.Conversation.cs b/src/Infrastructure/BotSharp.Core/Files/BotSharpFileService.Conversation.cs index d8f88b5c5..92f4107ec 100644 --- a/src/Infrastructure/BotSharp.Core/Files/BotSharpFileService.Conversation.cs +++ b/src/Infrastructure/BotSharp.Core/Files/BotSharpFileService.Conversation.cs @@ -1,3 +1,4 @@ +using Amazon.Runtime.Internal.Auth; using BotSharp.Abstraction.Browsing; using BotSharp.Abstraction.Browsing.Models; using Microsoft.EntityFrameworkCore; @@ -221,14 +222,16 @@ public bool SaveMessageFiles(string conversationId, string messageId, string sou } var (_, bytes) = GetFileInfoFromData(file.FileData); - Thread.Sleep(100); var subDir = Path.Combine(dir, source, $"{i + 1}"); if (!ExistDirectory(subDir)) { Directory.CreateDirectory(subDir); } - File.WriteAllBytes(Path.Combine(subDir, file.FileName), bytes); + using var fs = new FileStream(Path.Combine(subDir, file.FileName), FileMode.OpenOrCreate); + fs.Write(bytes, 0, bytes.Length); + fs.Flush(); + Thread.Sleep(100); } return true;