From 1e912aecb4503564dd3611a7b8644d49f4eaa2ec Mon Sep 17 00:00:00 2001 From: Haiping Date: Thu, 17 Apr 2025 06:30:35 -0500 Subject: [PATCH] Continue conversation after outbound phone call --- .../Functions/OutboundPhoneCallFn.cs | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs index 22ce213b..b5ecf101 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs @@ -116,16 +116,23 @@ public class OutboundPhoneCallFn : IFunctionCallback record: _twilioSetting.RecordingEnabled, recordingStatusCallback: $"{_twilioSetting.CallbackHost}/twilio/record/status?agent-id={message.CurrentAgentId}&conversation-id={newConversationId}"); - var convService = _services.GetRequiredService(); - var routing = _services.GetRequiredService(); - var originConversationId = convService.ConversationId; - var entryAgentId = routing.EntryAgentId; - - await ForkConversation(args, entryAgentId, originConversationId, newConversationId, call); + if (call.Status == CallResource.StatusEnum.Queued) + { + var convService = _services.GetRequiredService(); + var routing = _services.GetRequiredService(); + var originConversationId = convService.ConversationId; + var entryAgentId = routing.EntryAgentId; - message.Content = $"The generated phone initial message: \"{args.InitialMessage}.\" [NEW CONVERSATION ID: {newConversationId}, TWILIO CALL SID: {call.Sid}, RECORDING: {_twilioSetting.RecordingEnabled}]"; - message.StopCompletion = true; - return true; + await ForkConversation(args, entryAgentId, originConversationId, newConversationId, call); + + message.Content = $"The call has been successfully queued. The initial information is as follows: {args.InitialMessage}."; + return true; + } + else + { + message.Content = $"Failed to make a call, status is {call.Status}."; + return false; + } } private async Task ForkConversation(LlmContextIn args,