using BotSharp.Abstraction.Realtime.Models; using BotSharp.Plugin.Twilio.Models; using Task = System.Threading.Tasks.Task; namespace BotSharp.Plugin.Twilio.Interfaces; public interface ITwilioSessionHook { /// /// Before session creating /// /// /// /// Task OnSessionCreating(ConversationalVoiceRequest request, ConversationalVoiceResponse response) => Task.CompletedTask; /// /// On session created /// /// /// /// Task OnSessionCreated(ConversationalVoiceRequest request) => Task.CompletedTask; Task OnStreamingStarted(RealtimeHubConnection conn) => Task.CompletedTask; /// /// On received user message /// /// /// /// Task OnReceivedUserMessage(ConversationalVoiceRequest request) => Task.CompletedTask; /// /// Waiting user response /// /// /// /// Task OnWaitingUserResponse(ConversationalVoiceRequest request, ConversationalVoiceResponse response) => Task.CompletedTask; /// /// Waiting agent response /// /// /// /// Task OnWaitingAgentResponse(ConversationalVoiceRequest request, ConversationalVoiceResponse response) => Task.CompletedTask; /// /// Before agent responsing /// /// /// /// Task OnAgentResponsing(ConversationalVoiceRequest request, ConversationalVoiceResponse response) => Task.CompletedTask; /// /// On agent hang up /// /// /// /// Task OnAgentHangUp(ConversationalVoiceRequest request) => Task.CompletedTask; /// /// Before agent transferred /// /// /// /// Task OnAgentTransferring(ConversationalVoiceRequest request, TwilioSetting settings) => Task.CompletedTask; /// /// Allow Twilio to reconnect when it's in streaming mode. /// /// /// Task ShouldReconnect(ConversationalVoiceRequest request, RoleDialogModel message) => Task.FromResult(false); }