From 1468c01f4671f48825e2bc8019e7c415899dc087 Mon Sep 17 00:00:00 2001 From: Haiping Chen <101423@smsassist.com> Date: Wed, 26 Feb 2025 13:16:57 -0600 Subject: [PATCH] Remove call_sid from function util-twilio-hangup_phone_call --- .../BotSharp.Core/Realtime/RealtimeHub.cs | 2 +- .../Controllers/TwilioStreamController.cs | 4 +++- .../Functions/HangupPhoneCallFn.cs | 15 ++++++++++++--- .../Functions/OutboundPhoneCallFn.cs | 2 +- .../LlmContexts/LlmContextIn.cs | 3 --- .../functions/util-twilio-hangup_phone_call.json | 6 +----- .../util-twilio-outbound_phone_call.fn.liquid | 3 +-- 7 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/Infrastructure/BotSharp.Core/Realtime/RealtimeHub.cs b/src/Infrastructure/BotSharp.Core/Realtime/RealtimeHub.cs index 150959bb..51c1bd33 100644 --- a/src/Infrastructure/BotSharp.Core/Realtime/RealtimeHub.cs +++ b/src/Infrastructure/BotSharp.Core/Realtime/RealtimeHub.cs @@ -139,7 +139,7 @@ public class RealtimeHub : IRealtimeHub if (!string.IsNullOrEmpty(message.Content)) { - await hook.OnMessageReceived(message); + await hook.OnResponseGenerated(message); } } } diff --git a/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioStreamController.cs b/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioStreamController.cs index e6de9fc5..774d014b 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioStreamController.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioStreamController.cs @@ -93,6 +93,7 @@ public class TwilioStreamController : TwilioController Id = request.CallSid, AgentId = _settings.AgentId, Channel = ConversationChannel.Phone, + ChannelId = request.CallSid, Title = $"Phone call from {request.From}", Tags = [], }; @@ -103,7 +104,8 @@ public class TwilioStreamController : TwilioController var states = new List { new("channel", ConversationChannel.Phone), - new("calling_phone", request.From) + new("calling_phone", request.From), + new("twilio_call_sid", request.CallSid), }; convService.SetConversationId(conversation.Id, states); diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/HangupPhoneCallFn.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/HangupPhoneCallFn.cs index b4c7bca3..f54c1b42 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/HangupPhoneCallFn.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/HangupPhoneCallFn.cs @@ -1,4 +1,3 @@ -using BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.LlmContexts; using Twilio.Rest.Api.V2010.Account; namespace BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.Functions; @@ -21,14 +20,24 @@ public class HangupPhoneCallFn : IFunctionCallback public async Task Execute(RoleDialogModel message) { - var args = JsonSerializer.Deserialize(message.FunctionArgs); + var states = _services.GetRequiredService(); + var callSid = states.GetState("twilio_call_sid"); + + if (string.IsNullOrEmpty(callSid)) + { + message.Content = "The call has not been initiated."; + _logger.LogError(message.Content); + return false; + } + // Have to find the SID by the phone number var call = CallResource.Update( status: CallResource.UpdateStatusEnum.Completed, - pathSid: args.CallSid + pathSid: callSid ); message.Content = "The call has ended."; + message.StopCompletion = true; return true; } diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs index bc9e6203..df97cd44 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs @@ -105,7 +105,7 @@ public class OutboundPhoneCallFn : IFunctionCallback convStorage.Append(newConversationId, new List { - new RoleDialogModel(AgentRole.User, $"[Calling Phone To: {resource.ToFormatted}, Call SID: {resource.Sid}.]") + new RoleDialogModel(AgentRole.User, "Hi") { CurrentAgentId = entryAgentId }, diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextIn.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextIn.cs index b56db84e..cde85aa9 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextIn.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextIn.cs @@ -9,7 +9,4 @@ public class LlmContextIn [JsonPropertyName("initial_message")] public string InitialMessage { get; set; } - - [JsonPropertyName("call_sid")] - public string CallSid { get; set; } } diff --git a/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-twilio-hangup_phone_call.json b/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-twilio-hangup_phone_call.json index 63dd4327..76b0e841 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-twilio-hangup_phone_call.json +++ b/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-twilio-hangup_phone_call.json @@ -5,11 +5,7 @@ "parameters": { "type": "object", "properties": { - "call_sid": { - "type": "string", - "description": "The unique string SID that we created to identify this Call resource." - } }, - "required": [ "call_sid" ] + "required": [] } } \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-twilio-outbound_phone_call.fn.liquid b/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-twilio-outbound_phone_call.fn.liquid index ada72fb9..d8fa9131 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-twilio-outbound_phone_call.fn.liquid +++ b/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-twilio-outbound_phone_call.fn.liquid @@ -1,2 +1 @@ -** Please call util-twilio-outbound_phone_call if user wants to make an outbound call. -** For outbound calls, phone number format is "XXX-XXX-XXXX". \ No newline at end of file +** Please call util-twilio-outbound_phone_call if user wants to make an outbound call. \ No newline at end of file