From 6366e14e500ad4550a46191450fa2bc9ce599ac3 Mon Sep 17 00:00:00 2001 From: Haiping Chen Date: Mon, 26 Aug 2024 17:33:47 -0500 Subject: [PATCH] Speech + Digits --- .../Controllers/TwilioVoiceController.cs | 9 +++++---- .../BotSharp.Plugin.Twilio/Services/TwilioService.cs | 12 +++++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioVoiceController.cs b/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioVoiceController.cs index 9521e8ff..a89c6464 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioVoiceController.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioVoiceController.cs @@ -47,15 +47,16 @@ public class TwilioVoiceController : TwilioController var messageQueue = _services.GetRequiredService(); var sessionManager = _services.GetRequiredService(); var messages = await sessionManager.RetrieveStagedCallerMessagesAsync(conversationId, seqNum); - if (!string.IsNullOrWhiteSpace(request.SpeechResult)) + string text = (request.SpeechResult + "\r\n" + request.Digits).Trim(); + if (!string.IsNullOrWhiteSpace(text)) { - messages.Add(request.SpeechResult); - await sessionManager.StageCallerMessageAsync(conversationId, seqNum, request.SpeechResult); + messages.Add(text); + await sessionManager.StageCallerMessageAsync(conversationId, seqNum, text); } VoiceResponse response; if (messages.Count == 0 && seqNum == 0) { - response = twilio.ReturnInstructions("twilio/welcome.mp3", $"twilio/voice/{conversationId}/receive/{seqNum}?states={states}", true); + response = twilio.ReturnInstructions("twilio/welcome.mp3", $"twilio/voice/{conversationId}/receive/{seqNum}?states={states}", true, timeout: 2); } else { diff --git a/src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioService.cs b/src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioService.cs index 718741a1..309d627c 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioService.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioService.cs @@ -54,7 +54,8 @@ public class TwilioService { Input = new List() { - Gather.InputEnum.Speech + Gather.InputEnum.Speech, + Gather.InputEnum.Dtmf }, Action = new Uri($"{_settings.CallbackHost}/twilio/voice/{twilioSetting.AgentId}") }; @@ -70,7 +71,8 @@ public class TwilioService { Input = new List() { - Gather.InputEnum.Speech + Gather.InputEnum.Speech, + Gather.InputEnum.Dtmf }, Action = new Uri($"{_settings.CallbackHost}/{callbackPath}"), SpeechModel = Gather.SpeechModelEnum.PhoneCall, @@ -109,7 +111,11 @@ public class TwilioService var response = new VoiceResponse(); var gather = new Gather() { - Input = new List() { Gather.InputEnum.Speech }, + Input = new List() + { + Gather.InputEnum.Speech, + Gather.InputEnum.Dtmf + }, Action = new Uri($"{_settings.CallbackHost}/twilio/voice/{twilioSetting.AgentId}"), ActionOnEmptyResult = true };