Skip to content

Commit 0159c35

Browse files
author
Haiping Chen
committed
Flag realtime feature in Labels.
1 parent 45341eb commit 0159c35

5 files changed

Lines changed: 36 additions & 10 deletions

File tree

src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioInboundController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ await HookEmitter.Emit<ITwilioCallStatusHook>(_services,
7474
}
7575
else
7676
{
77-
if (agent.Profiles.Contains("realtime"))
77+
if (agent.Labels.Contains("realtime"))
7878
{
7979
response = twilio.ReturnBidirectionalMediaStreamsInstructions(instruction, agent);
8080
}

src/Plugins/BotSharp.Plugin.Twilio/Controllers/TwilioReconnectController.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using BotSharp.Plugin.Twilio.Models;
2+
using BotSharp.Plugin.Twilio.Services;
23
using Microsoft.AspNetCore.Mvc;
34

45
namespace BotSharp.Plugin.Twilio.Controllers;
@@ -24,7 +25,17 @@ public async Task<TwiMLResult> Reconnect(ConversationalVoiceRequest request)
2425
var connect = new Connect();
2526
var host = _settings.CallbackHost.Split("://").Last();
2627
connect.Stream(url: $"wss://{host}/twilio/stream/{request.AgentId}/{request.ConversationId}");
27-
response.Pause(1);
28+
if (!string.IsNullOrEmpty(request.InitAudioFile))
29+
{
30+
var twilio = _services.GetRequiredService<TwilioService>();
31+
var audioUrl = twilio.GetSpeechPath(request.ConversationId, request.InitAudioFile);
32+
response.Play(new Uri(audioUrl));
33+
}
34+
else
35+
{
36+
// Leave a pause to allow disposing objects.
37+
response.Pause(1);
38+
}
2839
response.Append(connect);
2940
return TwiML(response);
3041
}

src/Plugins/BotSharp.Plugin.Twilio/Hooks/TwilioConversationHook.cs

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Task = System.Threading.Tasks.Task;
33
using Twilio.Rest.Api.V2010.Account;
44
using BotSharp.Plugin.Twilio.Interfaces;
5+
using BotSharp.Plugin.Twilio.Models;
56

67
namespace BotSharp.Plugin.Twilio.Hooks;
78

@@ -23,17 +24,31 @@ public TwilioConversationHook(IServiceProvider services,
2324
public override async Task OnFunctionExecuted(RoleDialogModel message)
2425
{
2526
var hooks = _services.GetServices<ITwilioSessionHook>();
27+
28+
var routing = _services.GetRequiredService<IRoutingService>();
29+
var conversationId = routing.Context.ConversationId;
30+
31+
var states = _services.GetRequiredService<IConversationStateService>();
32+
var sid = states.GetState("twilio_call_sid");
33+
34+
var request = new ConversationalVoiceRequest
35+
{
36+
AgentId = message.CurrentAgentId,
37+
ConversationId = conversationId,
38+
CallSid = sid,
39+
};
40+
2641
foreach (var hook in hooks)
2742
{
28-
if (await hook.ShouldReconnect(message))
43+
if (await hook.ShouldReconnect(request, message))
2944
{
30-
var states = _services.GetRequiredService<IConversationStateService>();
31-
var sid = states.GetState("twilio_call_sid");
32-
33-
var routing = _services.GetRequiredService<IRoutingService>();
34-
var conversationId = routing.Context.ConversationId;
3545
var processUrl = $"{_setting.CallbackHost}/twilio/stream/reconnect?agent-id={message.CurrentAgentId}&conversation-id={conversationId}";
3646

47+
if (!string.IsNullOrEmpty(request.InitAudioFile))
48+
{
49+
processUrl += $"&init-audio-file={request.InitAudioFile}";
50+
}
51+
3752
// Save all states before reconnect
3853
states.Save();
3954

src/Plugins/BotSharp.Plugin.Twilio/Interfaces/ITwilioSessionHook.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,6 @@ Task OnAgentTransferring(ConversationalVoiceRequest request, TwilioSetting setti
8686
/// </summary>
8787
/// <param name="message"></param>
8888
/// <returns></returns>
89-
Task<bool> ShouldReconnect(RoleDialogModel message)
89+
Task<bool> ShouldReconnect(ConversationalVoiceRequest request, RoleDialogModel message)
9090
=> Task.FromResult(false);
9191
}

src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/OutboundPhoneCallFn.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public async Task<bool> Execute(RoleDialogModel message)
8282
var agent = await agentService.GetAgent(message.CurrentAgentId);
8383

8484
// Set up process URL streaming or synchronous
85-
if (agent.Profiles.Contains("realtime"))
85+
if (agent.Labels.Contains("realtime"))
8686
{
8787
processUrl += "/inbound";
8888
}

0 commit comments

Comments
 (0)