optimize ITwilioCallStatusHook
This commit is contained in:
parent
094fea58a4
commit
fd2b5d1b01
|
|
@ -346,35 +346,53 @@ public class TwilioVoiceController : TwilioController
|
|||
if (twilio.MachineDetected(request))
|
||||
{
|
||||
// voicemail
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async hook => await hook.OnVoicemailLeft(request));
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async hook =>
|
||||
{
|
||||
if (hook.IsMatch(request)) await hook.OnVoicemailLeft(request);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
// phone call completed
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async x => await x.OnUserDisconnected(request));
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async hook =>
|
||||
{
|
||||
if (hook.IsMatch(request)) await hook.OnUserDisconnected(request);
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (request.CallStatus == "busy")
|
||||
{
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async x => await x.OnCallBusyStatus(request));
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async hook =>
|
||||
{
|
||||
if (hook.IsMatch(request)) await hook.OnCallBusyStatus(request);
|
||||
});
|
||||
}
|
||||
else if (request.CallStatus == "no-answer")
|
||||
{
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async x => await x.OnCallNoAnswerStatus(request));
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async hook =>
|
||||
{
|
||||
if (hook.IsMatch(request)) await hook.OnCallNoAnswerStatus(request);
|
||||
});
|
||||
}
|
||||
else if (request.CallStatus == "canceled")
|
||||
{
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async x => await x.OnCallCanceledStatus(request));
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async hook =>
|
||||
{
|
||||
if (hook.IsMatch(request)) await hook.OnCallCanceledStatus(request);
|
||||
});
|
||||
}
|
||||
else if (request.CallStatus == "failed")
|
||||
{
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async x => await x.OnCallFailedStatus(request));
|
||||
await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
|
||||
async hook =>
|
||||
{
|
||||
if (hook.IsMatch(request)) await hook.OnCallFailedStatus(request);
|
||||
});
|
||||
}
|
||||
|
||||
return Ok();
|
||||
|
|
|
|||
|
|
@ -5,10 +5,11 @@ namespace BotSharp.Plugin.Twilio.Interfaces;
|
|||
|
||||
public interface ITwilioCallStatusHook
|
||||
{
|
||||
Task OnVoicemailLeft(ConversationalVoiceRequest request);
|
||||
Task OnUserDisconnected(ConversationalVoiceRequest request);
|
||||
Task OnRecordingCompleted(ConversationalVoiceRequest request);
|
||||
Task OnVoicemailStarting(ConversationalVoiceRequest request);
|
||||
bool IsMatch(ConversationalVoiceRequest request) => true;
|
||||
Task OnVoicemailLeft(ConversationalVoiceRequest request) => Task.CompletedTask;
|
||||
Task OnUserDisconnected(ConversationalVoiceRequest request) => Task.CompletedTask;
|
||||
Task OnRecordingCompleted(ConversationalVoiceRequest request) => Task.CompletedTask;
|
||||
Task OnVoicemailStarting(ConversationalVoiceRequest request)=> Task.CompletedTask;
|
||||
|
||||
/// <summary>
|
||||
/// 1. The recipient's phone line is already engaged.
|
||||
|
|
@ -17,11 +18,11 @@ public interface ITwilioCallStatusHook
|
|||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
Task OnCallBusyStatus(ConversationalVoiceRequest request);
|
||||
Task OnCallBusyStatus(ConversationalVoiceRequest request)=> Task.CompletedTask;
|
||||
|
||||
Task OnCallNoAnswerStatus(ConversationalVoiceRequest request);
|
||||
Task OnCallNoAnswerStatus(ConversationalVoiceRequest request) => Task.CompletedTask;
|
||||
|
||||
Task OnCallCanceledStatus(ConversationalVoiceRequest request);
|
||||
Task OnCallCanceledStatus(ConversationalVoiceRequest request)=> Task.CompletedTask;
|
||||
|
||||
Task OnCallFailedStatus(ConversationalVoiceRequest request);
|
||||
Task OnCallFailedStatus(ConversationalVoiceRequest request)=> Task.CompletedTask;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue