diff --git a/src/Infrastructure/BotSharp.Core.SideCar/Services/BotSharpConversationSideCar.cs b/src/Infrastructure/BotSharp.Core.SideCar/Services/BotSharpConversationSideCar.cs index 7988171a..a948e5e2 100644 --- a/src/Infrastructure/BotSharp.Core.SideCar/Services/BotSharpConversationSideCar.cs +++ b/src/Infrastructure/BotSharp.Core.SideCar/Services/BotSharpConversationSideCar.cs @@ -23,7 +23,7 @@ public class BotSharpConversationSideCar : IConversationSideCar private readonly IServiceProvider _services; private readonly ILogger _logger; - private Stack contextStack = new(); + private Stack _contextStack = new(); private bool _enabled = false; private string _conversationId = string.Empty; @@ -45,55 +45,55 @@ public class BotSharpConversationSideCar : IConversationSideCar public void AppendConversationDialogs(string conversationId, List messages) { - if (contextStack.IsNullOrEmpty() || _conversationId != conversationId) + if (!IsValid(conversationId)) { return; } - var top = contextStack.Peek(); + var top = _contextStack.Peek(); top.Dialogs.AddRange(messages); } public List GetConversationDialogs(string conversationId) { - if (contextStack.IsNullOrEmpty() || _conversationId != conversationId) + if (!IsValid(conversationId)) { return new List(); } - return contextStack.Peek().Dialogs; + return _contextStack.Peek().Dialogs; } public void UpdateConversationBreakpoint(string conversationId, ConversationBreakpoint breakpoint) { - if (contextStack.IsNullOrEmpty() || _conversationId != conversationId) + if (!IsValid(conversationId)) { return; } - var top = contextStack.Peek().Breakpoints; + var top = _contextStack.Peek().Breakpoints; top.Add(breakpoint); } public ConversationBreakpoint? GetConversationBreakpoint(string conversationId) { - if (contextStack.IsNullOrEmpty() || _conversationId != conversationId) + if (!IsValid(conversationId)) { return null; } - var top = contextStack.Peek().Breakpoints; + var top = _contextStack.Peek().Breakpoints; return top.LastOrDefault(); } public void UpdateConversationStates(string conversationId, List states) { - if (contextStack.IsNullOrEmpty() || _conversationId != conversationId) + if (!IsValid(conversationId)) { return; } - var top = contextStack.Peek(); + var top = _contextStack.Peek(); top.State = new ConversationState(states); } @@ -148,7 +148,7 @@ public class BotSharpConversationSideCar : IConversationSideCar RecursiveCounter = routing.Context.GetRecursiveCounter(), RoutingStack = routing.Context.GetAgentStack() }; - contextStack.Push(node); + _contextStack.Push(node); // Reset state.ResetCurrentState(); @@ -163,7 +163,7 @@ public class BotSharpConversationSideCar : IConversationSideCar var state = _services.GetRequiredService(); var routing = _services.GetRequiredService(); - var node = contextStack.Pop(); + var node = _contextStack.Pop(); // Recover state.SetCurrentState(node.State); @@ -173,4 +173,12 @@ public class BotSharpConversationSideCar : IConversationSideCar Utilities.ClearCache(); _enabled = false; } + + private bool IsValid(string conversationId) + { + return !_contextStack.IsNullOrEmpty() + && _conversationId == conversationId + && !string.IsNullOrEmpty(conversationId) + && !string.IsNullOrEmpty(_conversationId); + } } \ No newline at end of file