refine side car
This commit is contained in:
parent
ce80abb263
commit
81bb38b9b3
|
|
@ -79,7 +79,7 @@ public class SideCarAttribute : AsyncMoAttribute
|
|||
object? res = null;
|
||||
var isHandled = false;
|
||||
|
||||
var enabled = instance != null && instance.IsEnabled() && method != null;
|
||||
var enabled = instance != null && instance.IsEnabled && method != null;
|
||||
if (!enabled)
|
||||
{
|
||||
return (isHandled, value);
|
||||
|
|
@ -112,7 +112,7 @@ public class SideCarAttribute : AsyncMoAttribute
|
|||
object? value = null;
|
||||
var isHandled = false;
|
||||
|
||||
var enabled = instance != null && instance.IsEnabled() && method != null;
|
||||
var enabled = instance != null && instance.IsEnabled && method != null;
|
||||
if (!enabled)
|
||||
{
|
||||
return (isHandled, value);
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ namespace BotSharp.Abstraction.SideCar;
|
|||
public interface IConversationSideCar
|
||||
{
|
||||
string Provider { get; }
|
||||
bool IsEnabled { get; }
|
||||
|
||||
bool IsEnabled();
|
||||
void AppendConversationDialogs(string conversationId, List<DialogElement> messages);
|
||||
List<DialogElement> GetConversationDialogs(string conversationId);
|
||||
void UpdateConversationBreakpoint(string conversationId, ConversationBreakpoint breakpoint);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
limitations under the License.
|
||||
******************************************************************************/
|
||||
|
||||
using BotSharp.Abstraction.SideCar.Models;
|
||||
using BotSharp.Core.Infrastructures;
|
||||
|
||||
namespace BotSharp.Core.SideCar.Services;
|
||||
|
|
@ -31,6 +30,7 @@ public class BotSharpConversationSideCar : IConversationSideCar
|
|||
private string _conversationId = string.Empty;
|
||||
|
||||
public string Provider => "botsharp";
|
||||
public bool IsEnabled => _enabled;
|
||||
|
||||
public BotSharpConversationSideCar(
|
||||
IServiceProvider services,
|
||||
|
|
@ -40,11 +40,6 @@ public class BotSharpConversationSideCar : IConversationSideCar
|
|||
_logger = logger;
|
||||
}
|
||||
|
||||
public bool IsEnabled()
|
||||
{
|
||||
return _enabled;
|
||||
}
|
||||
|
||||
public void AppendConversationDialogs(string conversationId, List<DialogElement> messages)
|
||||
{
|
||||
if (!IsValid(conversationId))
|
||||
|
|
@ -99,17 +94,22 @@ public class BotSharpConversationSideCar : IConversationSideCar
|
|||
top.State = new ConversationState(states);
|
||||
}
|
||||
|
||||
public async Task<RoleDialogModel> SendMessage(string agentId, string text,
|
||||
public async Task<RoleDialogModel> SendMessage(
|
||||
string agentId,
|
||||
string text,
|
||||
PostbackMessageModel? postback = null,
|
||||
List<MessageState>? states = null,
|
||||
List<DialogElement>? dialogs = null,
|
||||
SideCarOptions? options = null)
|
||||
{
|
||||
_sideCarOptions = options;
|
||||
_logger.LogInformation($"Entering side car conversation...");
|
||||
|
||||
BeforeExecute(dialogs);
|
||||
var response = await InnerExecute(agentId, text, postback, states);
|
||||
AfterExecute();
|
||||
|
||||
_logger.LogInformation($"Existing side car conversation...");
|
||||
return response;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ public class ConversationStateService : IConversationStateService
|
|||
Reset();
|
||||
|
||||
var endNodes = new Dictionary<string, string>();
|
||||
if (_sidecar?.IsEnabled() == true)
|
||||
if (_sidecar?.IsEnabled == true)
|
||||
{
|
||||
return endNodes;
|
||||
}
|
||||
|
|
@ -234,7 +234,7 @@ public class ConversationStateService : IConversationStateService
|
|||
|
||||
public void Save()
|
||||
{
|
||||
if (_conversationId == null || _sidecar?.IsEnabled() == true)
|
||||
if (_conversationId == null || _sidecar?.IsEnabled == true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ public class ChatHubConversationHook : ConversationHookBase
|
|||
private bool AllowSendingMessage()
|
||||
{
|
||||
var sidecar = _services.GetService<IConversationSideCar>();
|
||||
return sidecar == null || !sidecar.IsEnabled();
|
||||
return sidecar == null || !sidecar.IsEnabled;
|
||||
}
|
||||
|
||||
private async Task InitClientConversation(string conversationId, ConversationDto conversation)
|
||||
|
|
|
|||
|
|
@ -53,28 +53,29 @@ public class TwilioInboundController : TwilioController
|
|||
instruction.SpeechPaths.Add(request.InitAudioFile);
|
||||
}
|
||||
|
||||
// Before creating session
|
||||
await HookEmitter.Emit<ITwilioSessionHook>(_services, async hook =>
|
||||
{
|
||||
await hook.OnSessionCreating(request, instruction);
|
||||
}, request.AgentId);
|
||||
|
||||
|
||||
var (agent, conversationId) = await InitConversation(request);
|
||||
request.ConversationId = conversationId.Id;
|
||||
instruction.AgentId = request.AgentId;
|
||||
instruction.ConversationId = request.ConversationId;
|
||||
|
||||
|
||||
// After creating session
|
||||
await HookEmitter.Emit<ITwilioSessionHook>(_services, async hook =>
|
||||
{
|
||||
await hook.OnSessionCreated(request);
|
||||
}, request.AgentId);
|
||||
|
||||
var conv = _services.GetRequiredService<IConversationService>();
|
||||
conv.SaveStates();
|
||||
|
||||
if (twilio.MachineDetected(request))
|
||||
{
|
||||
response = new VoiceResponse();
|
||||
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async hook => await hook.OnVoicemailStarting(request), request.AgentId);
|
||||
|
||||
|
|
@ -122,7 +123,7 @@ public class TwilioInboundController : TwilioController
|
|||
await Task.Delay(1500);
|
||||
await twilio.StartRecording(request.CallSid, request.AgentId, request.ConversationId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return TwiML(response);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue