diff --git a/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioOutboundController.cs b/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioOutboundController.cs index 5543af38a..5fb28e3f5 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioOutboundController.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioOutboundController.cs @@ -53,7 +53,15 @@ await HookEmitter.Emit(_services, { instruction.SpeechPaths.Add(request.InitAudioFile); } - response = twilio.ReturnNoninterruptedInstructions(instruction); + + if (request.WelcomeMessageAllowToBeInterrupted.HasValue && request.WelcomeMessageAllowToBeInterrupted.Value) + { + response = twilio.ReturnInstructions(instruction); + } + else + { + response = twilio.ReturnNoninterruptedInstructions(instruction); + } } return TwiML(response); diff --git a/src/Plugins/BotSharp.Plugin.Twilio/Models/ConversationalVoiceRequest.cs b/src/Plugins/BotSharp.Plugin.Twilio/Models/ConversationalVoiceRequest.cs index 344ddc06f..550ff5fd0 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/Models/ConversationalVoiceRequest.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/Models/ConversationalVoiceRequest.cs @@ -42,6 +42,9 @@ public class ConversationalVoiceRequest : VoiceRequest [FromForm] public int MachineDetectionDuration { get; set; } + [FromQuery(Name = "welcome_msg_allow_interrupt")] + public bool? WelcomeMessageAllowToBeInterrupted { get; set; } + [FromForm] public int CallDuration { get; set; } diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs index 3c5532bdb..4bdf0e23a 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs @@ -25,6 +25,7 @@ public class OutboundPhoneCallFn : IFunctionCallback public string Name => "util-twilio-outbound_phone_call"; public string Indication => "Dialing the phone number"; + public const string WelcomeMessageAllowToBeInterrupted = "welcome_msg_allow_interrupt"; public OutboundPhoneCallFn( IServiceProvider services, @@ -106,6 +107,11 @@ public async Task Execute(RoleDialogModel message) processUrl += $"&init-audio-file={initAudioFile}"; } + if (agent.Labels.Contains(WelcomeMessageAllowToBeInterrupted)) + { + processUrl += $"${WelcomeMessageAllowToBeInterrupted}=true"; + } + // Make outbound call var call = await CallResource.CreateAsync( url: new Uri(processUrl),