From effe49457144918847a103603d875ca252cc4b7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=93=E7=A3=8A?= Date: Fri, 18 Oct 2024 14:24:57 +0800 Subject: [PATCH] voice copilot support postback voice copilot support postback --- .../Services/TwilioMessageQueueService.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioMessageQueueService.cs b/src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioMessageQueueService.cs index fb215e71..454b7166 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioMessageQueueService.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioMessageQueueService.cs @@ -67,10 +67,10 @@ namespace BotSharp.Plugin.Twilio.Services var progressService = sp.GetRequiredService(); InitProgressService(message, sessionManager, progressService); InitConversation(message, inputMsg, conv, routing); - + var result = await conv.SendMessage(config.AgentId, inputMsg, - replyMessage: null, + replyMessage: BuildPostbackMessageModel(conv), async msg => { reply = new AssistantMessage() @@ -88,6 +88,20 @@ namespace BotSharp.Plugin.Twilio.Services await sessionManager.SetAssistantReplyAsync(message.ConversationId, message.SeqNumber, reply); } + private PostbackMessageModel BuildPostbackMessageModel(IConversationService conv) + { + var messages = conv.GetDialogHistory(1); + if (!messages.Any()) return null; + var lastMessage = messages[0]; + if (string.IsNullOrEmpty(lastMessage.PostbackFunctionName)) return null; + return new PostbackMessageModel + { + FunctionName = lastMessage.PostbackFunctionName, + ParentId = lastMessage.MessageId, + Payload = lastMessage.Payload + }; + } + private static void InitConversation(CallerMessage message, RoleDialogModel inputMsg, IConversationService conv, IRoutingService routing) { routing.Context.SetMessageId(message.ConversationId, inputMsg.MessageId);