@@ -142,7 +142,7 @@ public async Task<TwiMLResult> ReceiveCallerMessage(ConversationalVoiceRequest r
142
142
await messageQueue . EnqueueAsync ( callerMessage ) ;
143
143
144
144
response = new VoiceResponse ( ) ;
145
- response . Redirect ( new Uri ( $ "{ _settings . CallbackHost } /twilio/voice/{ request . ConversationId } /reply/{ request . SeqNum } ?{ GenerateStatesParameter ( request . States ) } ") , HttpMethod . Post ) ;
145
+ response . Redirect ( new Uri ( $ "{ _settings . CallbackHost } /twilio/voice/{ request . ConversationId } /reply/{ request . SeqNum } ?{ GenerateStatesParameter ( request . States ) } &AIResponseWaitTime=0 ") , HttpMethod . Post ) ;
146
146
147
147
await HookEmitter . Emit < ITwilioSessionHook > ( _services , async hook =>
148
148
{
@@ -217,8 +217,22 @@ public async Task<TwiMLResult> ReplyCallerMessage(ConversationalVoiceRequest req
217
217
218
218
var reply = await sessionManager . GetAssistantReplyAsync ( request . ConversationId , request . SeqNum ) ;
219
219
VoiceResponse response ;
220
+
221
+ if ( request . AIResponseWaitTime > 5 )
222
+ {
223
+ // Wait AI Response Timeout
224
+ await HookEmitter . Emit < ITwilioSessionHook > ( _services , async hook =>
225
+ {
226
+ request . AIResponseErrorMessage = $ "AI response timeout: AIResponseWaitTime greater than { request . AIResponseWaitTime } , please check internal error log!";
227
+ await hook . OnAgentHangUp ( request ) ;
228
+ } , new HookEmitOption
229
+ {
230
+ OnlyOnce = true
231
+ } ) ;
220
232
221
- if ( reply == null )
233
+ response = twilio . HangUp ( $ "twilio/error.mp3") ;
234
+ }
235
+ else if ( reply == null )
222
236
{
223
237
var indication = await sessionManager . GetReplyIndicationAsync ( request . ConversationId , request . SeqNum ) ;
224
238
if ( indication != null )
@@ -262,7 +276,7 @@ public async Task<TwiMLResult> ReplyCallerMessage(ConversationalVoiceRequest req
262
276
var instruction = new ConversationalVoiceResponse
263
277
{
264
278
SpeechPaths = speechPaths ,
265
- CallbackPath = $ "twilio/voice/{ request . ConversationId } /reply/{ request . SeqNum } ?{ GenerateStatesParameter ( request . States ) } ",
279
+ CallbackPath = $ "twilio/voice/{ request . ConversationId } /reply/{ request . SeqNum } ?{ GenerateStatesParameter ( request . States ) } &AIResponseWaitTime= { ++ request . AIResponseWaitTime } ",
266
280
ActionOnEmptyResult = true
267
281
} ;
268
282
@@ -301,7 +315,7 @@ await HookEmitter.Emit<ITwilioSessionHook>(_services, async hook =>
301
315
var instruction = new ConversationalVoiceResponse
302
316
{
303
317
SpeechPaths = instructions ,
304
- CallbackPath = $ "twilio/voice/{ request . ConversationId } /reply/{ request . SeqNum } ?{ GenerateStatesParameter ( request . States ) } ",
318
+ CallbackPath = $ "twilio/voice/{ request . ConversationId } /reply/{ request . SeqNum } ?{ GenerateStatesParameter ( request . States ) } &AIResponseWaitTime= { ++ request . AIResponseWaitTime } ",
305
319
ActionOnEmptyResult = true
306
320
} ;
307
321
0 commit comments