Skip to content

Commit e07deb1

Browse files
authored
Merge pull request #748 from hchen2020/master
Twilio optimize
2 parents deb01d4 + 8baff71 commit e07deb1

File tree

2 files changed

+6
-11
lines changed

2 files changed

+6
-11
lines changed

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

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,10 @@ public async Task<TwiMLResult> InitiateConversation(ConversationalVoiceRequest r
4343
}
4444

4545
VoiceResponse response = null;
46-
request.ConversationId = $"TwilioVoice_{request.CallSid}";
47-
4846
var instruction = new ConversationalVoiceResponse
4947
{
5048
SpeechPaths = ["twilio/welcome.mp3"],
51-
CallbackPath = $"twilio/voice/{request.ConversationId}/receive/0",
52-
ActionOnEmptyResult = true,
53-
Timeout = 2
49+
ActionOnEmptyResult = true
5450
};
5551
await HookEmitter.Emit<ITwilioSessionHook>(_services, async hook =>
5652
{
@@ -60,7 +56,8 @@ await HookEmitter.Emit<ITwilioSessionHook>(_services, async hook =>
6056
OnlyOnce = true
6157
});
6258

63-
instruction.CallbackPath = $"{instruction.CallbackPath}?{GenerateStatesParameter(request.States)}";
59+
request.ConversationId = $"TwilioVoice_{request.CallSid}";
60+
instruction.CallbackPath = $"twilio/voice/{request.ConversationId}/receive/0?{GenerateStatesParameter(request.States)}";
6461

6562
var twilio = _services.GetRequiredService<TwilioService>();
6663
if (string.IsNullOrWhiteSpace(request.Intent))
@@ -109,7 +106,6 @@ public async Task<TwiMLResult> ReceiveCallerMessage(ConversationalVoiceRequest r
109106
var twilio = _services.GetRequiredService<TwilioService>();
110107
var messageQueue = _services.GetRequiredService<TwilioMessageQueue>();
111108
var sessionManager = _services.GetRequiredService<ITwilioSessionManager>();
112-
113109
var messages = await sessionManager.RetrieveStagedCallerMessagesAsync(request.ConversationId, request.SeqNum);
114110
string text = (request.SpeechResult + "\r\n" + request.Digits).Trim();
115111

@@ -148,7 +144,7 @@ await HookEmitter.Emit<ITwilioSessionHook>(_services, async hook =>
148144
else
149145
{
150146
// keep waiting for user response
151-
if (request.Attempts > 2)
147+
if (request.Attempts > 3)
152148
{
153149
var instruction = new ConversationalVoiceResponse
154150
{
@@ -187,7 +183,7 @@ await HookEmitter.Emit<ITwilioSessionHook>(_services, async hook =>
187183
ActionOnEmptyResult = true
188184
};
189185

190-
if (request.Attempts == 2)
186+
if (request.Attempts == 3)
191187
{
192188
instruction.SpeechPaths.Add($"twilio/say-it-again-{Random.Shared.Next(1, 5)}.mp3");
193189
}
@@ -220,7 +216,6 @@ public async Task<TwiMLResult> ReplyCallerMessage(ConversationalVoiceRequest req
220216
var sessionManager = _services.GetRequiredService<ITwilioSessionManager>();
221217
var twilio = _services.GetRequiredService<TwilioService>();
222218
var fileStorage = _services.GetRequiredService<IFileStorageService>();
223-
224219
if (request.SpeechResult != null)
225220
{
226221
await sessionManager.StageCallerMessageAsync(request.ConversationId, nextSeqNum, request.SpeechResult);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public VoiceResponse ReturnNoninterruptedInstructions(ConversationalVoiceRespons
115115
},
116116
Action = new Uri($"{_settings.CallbackHost}/{conversationalVoiceResponse.CallbackPath}"),
117117
SpeechModel = Gather.SpeechModelEnum.PhoneCall,
118-
SpeechTimeout = conversationalVoiceResponse.Timeout > 0 ? conversationalVoiceResponse.Timeout.ToString() : "3",
118+
SpeechTimeout = "auto", // conversationalVoiceResponse.Timeout > 0 ? conversationalVoiceResponse.Timeout.ToString() : "3",
119119
Timeout = conversationalVoiceResponse.Timeout > 0 ? conversationalVoiceResponse.Timeout : 3,
120120
ActionOnEmptyResult = conversationalVoiceResponse.ActionOnEmptyResult
121121
};

0 commit comments

Comments
 (0)