Skip to content

Commit e04b513

Browse files
authored
Merge pull request #827 from wcao-lessen/improvement/twiliocallutility
enable answering machine detection
2 parents 2101f3a + 065601f commit e04b513

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using BotSharp.Abstraction.Files;
22
using BotSharp.Abstraction.Infrastructures;
3+
using BotSharp.Abstraction.Repositories;
34
using BotSharp.Core.Infrastructures;
45
using BotSharp.Plugin.Twilio.Interfaces;
56
using BotSharp.Plugin.Twilio.Models;
@@ -126,9 +127,11 @@ public async Task<TwiMLResult> ReceiveCallerMessage(ConversationalVoiceRequest r
126127
SeqNumber = request.SeqNum,
127128
Content = messageContent,
128129
Digits = request.Digits,
129-
From = request.From,
130+
From = string.Equals(request.Direction, "inbound") ? request.From : request.To,
130131
States = ParseStates(request.States)
131132
};
133+
callerMessage.RequestHeaders = new KeyValuePair<string, Microsoft.Extensions.Primitives.StringValues>[Request.Headers.Count];
134+
Request.Headers.CopyTo(callerMessage.RequestHeaders, 0);
132135
await messageQueue.EnqueueAsync(callerMessage);
133136

134137
response = new VoiceResponse();
@@ -387,6 +390,9 @@ public TwiMLResult InitiateOutboundCall(VoiceRequest request, [Required][FromQue
387390
$"twilio/voice/speeches/{conversationId}/intial.mp3"
388391
}
389392
};
393+
string tag = $"AnsweredBy: {Request.Form["AnsweredBy"]}";
394+
var db = _services.GetRequiredService<IBotSharpRepository>();
395+
db.AppendConversationTags(conversationId, new List<string> { tag });
390396
var twilio = _services.GetRequiredService<TwilioService>();
391397
var response = twilio.ReturnNoninterruptedInstructions(instruction);
392398
return TwiML(response);

src/Plugins/BotSharp.Plugin.Twilio/Models/CallerMessage.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using Microsoft.Extensions.Primitives;
2+
13
namespace BotSharp.Plugin.Twilio.Models
24
{
35
public class CallerMessage
@@ -8,6 +10,7 @@ public class CallerMessage
810
public string Digits { get; set; }
911
public string From { get; set; }
1012
public Dictionary<string, string> States { get; set; } = new();
13+
public KeyValuePair<string, StringValues>[] RequestHeaders { get; set; }
1114

1215
public override string ToString()
1316
{

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ public async Task<bool> Execute(RoleDialogModel message)
9292
var call = await CallResource.CreateAsync(
9393
url: new Uri($"{_twilioSetting.CallbackHost}/twilio/voice/init-call?conversationId={conversationId}"),
9494
to: new PhoneNumber(args.PhoneNumber),
95-
from: new PhoneNumber(_twilioSetting.PhoneNumber));
95+
from: new PhoneNumber(_twilioSetting.PhoneNumber),
96+
machineDetection: "DetectMessageEnd");
9697

9798
message.Content = $"The generated phone message: {args.InitialMessage}. \r\n[Conversation ID: {conversationId}]" ?? message.Content;
9899
message.StopCompletion = true;

src/Plugins/BotSharp.Plugin.Twilio/Services/TwilioMessageQueueService.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ private async Task ProcessUserMessageAsync(CallerMessage message)
6565
var httpContext = sp.GetRequiredService<IHttpContextAccessor>();
6666
httpContext.HttpContext = new DefaultHttpContext();
6767
httpContext.HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity());
68+
foreach (var header in message.RequestHeaders)
69+
{
70+
httpContext.HttpContext.Request.Headers[header.Key] = header.Value;
71+
}
6872
httpContext.HttpContext.Request.Headers["X-Twilio-BotSharp"] = "LOST";
6973

7074
AssistantMessage reply = null;

0 commit comments

Comments
 (0)