From 6c1cebe87be4f2d0fbe575e105262eab90cff586 Mon Sep 17 00:00:00 2001 From: Jicheng Lu <103353@smsassist.com> Date: Mon, 11 Mar 2024 15:32:13 -0500 Subject: [PATCH] add message delete event --- .../Conversations/ConversationHookBase.cs | 3 +++ .../Conversations/IConversationHook.cs | 8 ++++++++ .../Services/ConversationService.TruncateMessage.cs | 5 +++++ .../BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs | 2 +- .../Hooks/ChatHubConversationHook.cs | 10 ++++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationHookBase.cs b/src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationHookBase.cs index 1592aa8f..5bceefaf 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationHookBase.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationHookBase.cs @@ -67,4 +67,7 @@ public abstract class ConversationHookBase : IConversationHook public virtual Task OnUserAgentConnectedInitially(Conversation conversation) => Task.CompletedTask; + + public virtual Task OnMessageDeleted(string conversationId, string messageId) + => Task.CompletedTask; } diff --git a/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationHook.cs b/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationHook.cs index 95afaab4..8552aa20 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationHook.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationHook.cs @@ -84,4 +84,12 @@ public interface IConversationHook /// /// Task OnHumanInterventionNeeded(RoleDialogModel message); + + /// + /// Delete message in a conversation + /// + /// + /// + /// + Task OnMessageDeleted(string conversationId, string messageId); } diff --git a/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.TruncateMessage.cs b/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.TruncateMessage.cs index 1f1cc8fd..8c82eb1f 100644 --- a/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.TruncateMessage.cs +++ b/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.TruncateMessage.cs @@ -8,6 +8,11 @@ public partial class ConversationService : IConversationService { var db = _services.GetRequiredService(); var isSaved = db.TruncateConversation(conversationId, messageId, true); + var hooks = _services.GetServices().ToList(); + foreach (var hook in hooks) + { + await hook.OnMessageDeleted(conversationId, messageId); + } return await Task.FromResult(isSaved); } } diff --git a/src/Infrastructure/BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs b/src/Infrastructure/BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs index 0434976e..1ebe6ea5 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs @@ -30,7 +30,7 @@ public static class BotSharpOpenApiExtensions bool enableValidation) { services.AddScoped(); - services.AddHostedService(); + //services.AddHostedService(); // Add bearer authentication var schema = "MIXED_SCHEME"; diff --git a/src/Plugins/BotSharp.Plugin.ChatHub/Hooks/ChatHubConversationHook.cs b/src/Plugins/BotSharp.Plugin.ChatHub/Hooks/ChatHubConversationHook.cs index 187c2bf4..045a707a 100644 --- a/src/Plugins/BotSharp.Plugin.ChatHub/Hooks/ChatHubConversationHook.cs +++ b/src/Plugins/BotSharp.Plugin.ChatHub/Hooks/ChatHubConversationHook.cs @@ -96,4 +96,14 @@ public class ChatHubConversationHook : ConversationHookBase await base.OnResponseGenerated(message); } + + public override async Task OnMessageDeleted(string conversationId, string messageId) + { + await _chatHub.Clients.User(_user.Id).SendAsync("OnMessageDeleted", new ChatResponseModel + { + ConversationId = conversationId, + MessageId = messageId + }); + await base.OnMessageDeleted(conversationId, messageId); + } }