From 06973d89888f2b7b399a35e8d400bfb74669e74e Mon Sep 17 00:00:00 2001 From: Haiping Chen Date: Wed, 28 Aug 2024 16:19:47 -0500 Subject: [PATCH] Support play for reply --- .../Controllers/TwilioVoiceController.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioVoiceController.cs b/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioVoiceController.cs index d2914b3b..db611254 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioVoiceController.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioVoiceController.cs @@ -76,8 +76,9 @@ public class TwilioVoiceController : TwilioController } await messageQueue.EnqueueAsync(callerMessage); + int audioIndex = Random.Shared.Next(2, 5); response = new VoiceResponse() - .Redirect(new Uri($"{_settings.CallbackHost}/twilio/voice/{conversationId}/reply/{seqNum}?states={states}"), HttpMethod.Post); + .Redirect(new Uri($"{_settings.CallbackHost}/twilio/voice/{conversationId}/reply/{seqNum}?states={states}&play=%23hold-on-{audioIndex}%7c%23typing-2"), HttpMethod.Post); } else { @@ -89,7 +90,8 @@ public class TwilioVoiceController : TwilioController [ValidateRequest] [HttpPost("twilio/voice/{conversationId}/reply/{seqNum}")] - public async Task ReplyCallerMessage([FromRoute] string conversationId, [FromRoute] int seqNum, [FromQuery] string states, VoiceRequest request) + public async Task ReplyCallerMessage([FromRoute] string conversationId, [FromRoute] int seqNum, + [FromQuery] string states, [FromQuery] string play, VoiceRequest request) { var nextSeqNum = seqNum + 1; var sessionManager = _services.GetRequiredService(); @@ -102,7 +104,9 @@ public class TwilioVoiceController : TwilioController VoiceResponse response; if (reply == null) { - var indication = await sessionManager.GetReplyIndicationAsync(conversationId, seqNum); + var indication = string.IsNullOrEmpty(play) ? + await sessionManager.GetReplyIndicationAsync(conversationId, seqNum) : + play; if (indication != null) { var speechPaths = new List();