diff --git a/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationService.cs b/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationService.cs
index 18cee8fc..2aa8a72f 100644
--- a/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationService.cs
+++ b/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationService.cs
@@ -51,8 +51,9 @@ public interface IConversationService
///
/// Whether to reset all states
/// Append user init words
+ ///
///
- Task UpdateBreakpoint(bool resetStates = false, string? reason = null);
+ Task UpdateBreakpoint(bool resetStates = false, string? reason = null, params string[] excludedStates);
Task GetConversationSummary(string conversationId);
}
diff --git a/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.UpdateBreakpoint.cs b/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.UpdateBreakpoint.cs
index 7453a202..8f88f44f 100644
--- a/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.UpdateBreakpoint.cs
+++ b/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.UpdateBreakpoint.cs
@@ -4,7 +4,7 @@ namespace BotSharp.Core.Conversations.Services;
public partial class ConversationService : IConversationService
{
- public async Task UpdateBreakpoint(bool resetStates = false, string? reason = null)
+ public async Task UpdateBreakpoint(bool resetStates = false, string? reason = null, params string[] excludedStates)
{
var db = _services.GetRequiredService();
var routingCtx = _services.GetRequiredService();
@@ -22,7 +22,13 @@ public partial class ConversationService : IConversationService
{
var states = _services.GetRequiredService();
// keep language state
- states.CleanStates(StateConst.LANGUAGE);
+ if (excludedStates == null) excludedStates = new string[] { };
+ if (!excludedStates.Contains(StateConst.LANGUAGE))
+ {
+ excludedStates = excludedStates.Append(StateConst.LANGUAGE).ToArray();
+ }
+
+ states.CleanStates(excludedStates);
}
var hooks = _services.GetServices()