private Task OnRecognizeCompleted(RecognizeOutcomeEvent recognizeOutcomeEvent) { System.Diagnostics.Trace.TraceInformation("We zitten in OnRecognizeCompleted"); var callState = this.callStateMap[recognizeOutcomeEvent.ConversationResult.Id]; return(Task.FromResult(true)); }
private Task OnRecognizeCompleted(RecognizeOutcomeEvent recognizeOutcomeEvent) { var callState = this.callStateMap[recognizeOutcomeEvent.ConversationResult.Id]; return(Task.FromResult(true)); }
private static void ProcessMainMenuSelection(RecognizeOutcomeEvent outcome, CallState callStateForClient) { if (outcome.RecognizeOutcome.Outcome != Outcome.Success) { if (outcome.RecognizeOutcome.FailureReason == RecognitionCompletionReason.IncorrectDtmf.ToString()) { SetupInitialMenuWithErrorMessage(outcome.ResultingWorkflow); } else { SetupInitialMenu(outcome.ResultingWorkflow); } return; } switch (outcome.RecognizeOutcome.ChoiceOutcome.ChoiceName) { case Support: callStateForClient.ChosenMenuOption = Support; SetupRecording(outcome.ResultingWorkflow); break; default: SetupInitialMenu(outcome.ResultingWorkflow); break; } }
private Task <Workflow> HandleRecognizeOutcome(ConversationResult conversationResult, RecognizeOutcome recognizeOutcome) { var outcomeEvent = new RecognizeOutcomeEvent(conversationResult, CreateInitialWorkflow(), recognizeOutcome); var eventHandler = OnRecognizeCompleted; return(InvokeHandlerIfSet(eventHandler, outcomeEvent)); }
private Task OnRecognizeCompleted(RecognizeOutcomeEvent recognizeOutcomeEvent) { var callStateForClient = _callStateMap[recognizeOutcomeEvent.ConversationResult.Id]; switch (callStateForClient.InitiallyChosenMenuOption) { case null: ProcessMainMenuSelection(recognizeOutcomeEvent, callStateForClient); break; case NewClient: ProcessNewClientSelection(recognizeOutcomeEvent, callStateForClient); break; case Support: ProcessSupportSelection(recognizeOutcomeEvent, callStateForClient); break; case Payments: ProcessPaymentsSelection(recognizeOutcomeEvent, callStateForClient); break; default: SetupInitialMenu(recognizeOutcomeEvent.ResultingWorkflow); break; } return(Task.FromResult(true)); }
private void ProcessMainMenuSelection(RecognizeOutcomeEvent outcome, CallState callStateForClient) { if (outcome.RecognizeOutcome.Outcome != Outcome.Success) { SetupInitialMenu(outcome.ResultingWorkflow); return; } switch (outcome.RecognizeOutcome.ChoiceOutcome.ChoiceName) { case Emergency: callStateForClient.InitiallyChosenMenuOption = Emergency; outcome.ResultingWorkflow = null; break; case Support: callStateForClient.InitiallyChosenMenuOption = Support; SetupRecording(outcome.ResultingWorkflow); break; default: SetupInitialMenu(outcome.ResultingWorkflow); break; } }
private void ProcessPaymentsSelection(RecognizeOutcomeEvent outcome, CallState callStateForClient) { if (outcome.RecognizeOutcome.Outcome != Outcome.Success) { outcome.ResultingWorkflow.Actions = new List <ActionBase> { CreatePaymentsMenu() }; return; } switch (outcome.RecognizeOutcome.ChoiceOutcome.ChoiceName) { case PaymentDetails: outcome.ResultingWorkflow.Actions = new List <ActionBase> { GetPromptForText(IvrOptions.PaymentDetailsMessage), CreatePaymentsMenu() }; break; case PaymentNotVisible: SetupRecording(outcome.ResultingWorkflow); break; default: callStateForClient.InitiallyChosenMenuOption = null; SetupInitialMenu(outcome.ResultingWorkflow); break; } }
private void ProcessSupportSelection(RecognizeOutcomeEvent outcome, CallState callStateForClient) { if (outcome.RecognizeOutcome.Outcome != Outcome.Success) { outcome.ResultingWorkflow.Actions = new List <ActionBase> { CreateSupportMenu() }; return; } switch (outcome.RecognizeOutcome.ChoiceOutcome.ChoiceName) { case SupportOutages: outcome.ResultingWorkflow.Actions = new List <ActionBase> { GetPromptForText(IvrOptions.CurrentOutages), CreateSupportMenu() }; break; case SupportConsultant: SetupRecording(outcome.ResultingWorkflow); break; default: callStateForClient.InitiallyChosenMenuOption = null; SetupInitialMenu(outcome.ResultingWorkflow); break; } }
private Task OnRecognizeCompleted(RecognizeOutcomeEvent recognizeOutcomeEvent) { var callState = this.callStateMap[recognizeOutcomeEvent.ConversationResult.Id]; ProcessMainMenuSelection(recognizeOutcomeEvent, callState); return(Task.FromResult(true)); }
private async Task <bool> OnRecognizeCompleted(RecognizeOutcomeEvent recognizeOutcomeEvent) { var text = string.Empty; var callState = this.callStateMap[recognizeOutcomeEvent.ConversationResult.Id]; bool calledHangUp = false; switch (recognizeOutcomeEvent.RecognizeOutcome.ChoiceOutcome.ChoiceName) { case "Yes": AddToTranscript(botUser, "yes"); text = "Current weather is sunny. I hope you have a wonderful day. Goodbye!"; recognizeOutcomeEvent.ResultingWorkflow.Actions = new List <ActionBase> { GetPromptForText(text), new Hangup { OperationId = Guid.NewGuid().ToString() } }; calledHangUp = true; break; case "No": AddToTranscript(botUser, "No"); text = "ok. That is all I can do for now. Goodbye!"; recognizeOutcomeEvent.ResultingWorkflow.Actions = new List <ActionBase> { GetPromptForText(text), new Hangup { OperationId = Guid.NewGuid().ToString() } }; calledHangUp = true; break; default: text = "I didn't understand. Say 'Yes' if you want to know weather conditions, otherwise say 'No'"; recognizeOutcomeEvent.ResultingWorkflow.Actions = new List <ActionBase> { CreateIvrOptions(text, 2, false) }; break; } AddToTranscript(botName, text); if (calledHangUp) { await this.SendTranscriptToUser(ConversationLogs.ToString(), callState.Participants); } //return Task.FromResult(true); return(true); }
private Task OnRecognizeCompleted(RecognizeOutcomeEvent recognizeOutcomeEvent) { switch (recognizeOutcomeEvent.RecognizeOutcome.ChoiceOutcome.ChoiceName) { case "1": var id = Guid.NewGuid().ToString(); var prompt = GetPromptForText("Record your message with the new published app!"); var record = new Record { OperationId = id, PlayPrompt = prompt, MaxDurationInSeconds = 10, InitialSilenceTimeoutInSeconds = 5, MaxSilenceTimeoutInSeconds = 2, PlayBeep = true, StopTones = new List <char> { '#' } }; recognizeOutcomeEvent.ResultingWorkflow.Actions = new List <ActionBase> { record }; break; case "2": recognizeOutcomeEvent.ResultingWorkflow.Actions = new List <ActionBase> { GetPromptForText("Goodbye!"), new Hangup { OperationId = Guid.NewGuid().ToString() } }; break; default: recognizeOutcomeEvent.ResultingWorkflow.Actions = new List <ActionBase> { CreateIvrOptions("Press 1 to record your voice, Press 2 to hangup.", 2, false) }; break; } return(Task.FromResult(true)); }
private void ProcessMainMenuSelection(RecognizeOutcomeEvent outcome, CallState callStateForClient) { if (outcome.RecognizeOutcome.Outcome != Outcome.Success) { SetupInitialMenu(outcome.ResultingWorkflow); return; } switch (outcome.RecognizeOutcome.ChoiceOutcome.ChoiceName) { case NewClient: callStateForClient.InitiallyChosenMenuOption = NewClient; outcome.ResultingWorkflow.Actions = new List <ActionBase> { CreateNewClientMenu() }; break; case Support: callStateForClient.InitiallyChosenMenuOption = Support; outcome.ResultingWorkflow.Actions = new List <ActionBase> { CreateSupportMenu() }; break; case Payments: callStateForClient.InitiallyChosenMenuOption = Payments; outcome.ResultingWorkflow.Actions = new List <ActionBase> { CreatePaymentsMenu() }; break; case MoreInfo: callStateForClient.InitiallyChosenMenuOption = MoreInfo; outcome.ResultingWorkflow.Actions = new List <ActionBase> { GetPromptForText(IvrOptions.MoreInfoPrompt) }; break; default: SetupInitialMenu(outcome.ResultingWorkflow); break; } }
/// <summary> /// Called when [recognize completed]. /// </summary> /// <param name="recognizeOutcomeEvent">The recognize outcome event.</param> /// <returns></returns> private Task OnRecognizeCompleted(RecognizeOutcomeEvent recognizeOutcomeEvent) { if (recognizeOutcomeEvent.RecognizeOutcome.Outcome != Outcome.Success) { telemetryClient.TrackTrace($"RecognizeFailed - {recognizeOutcomeEvent.ConversationResult.Id}"); var unsupported = GetPromptForText(IVROptions.OptionMenuNotSupportedMessage); var recognize = SetupInitialMenu(); recognizeOutcomeEvent.ResultingWorkflow.Actions = new List <ActionBase> { unsupported, recognize }; return(Task.FromResult(true)); } // outcome success telemetryClient.TrackTrace($"RecognizeCompleted - {recognizeOutcomeEvent.ConversationResult.Id}"); var prompt = GetPromptForText(IVROptions.RecordMessage); var record = new Record { OperationId = Guid.NewGuid().ToString(), PlayPrompt = prompt, MaxDurationInSeconds = 180, InitialSilenceTimeoutInSeconds = 5, MaxSilenceTimeoutInSeconds = 10, RecordingFormat = RecordingFormat.Wav, PlayBeep = true, StopTones = new List <char> { '#' } }; this.callStateMap[recognizeOutcomeEvent.ConversationResult.Id].ChosenMenuOption = recognizeOutcomeEvent.RecognizeOutcome.ChoiceOutcome.ChoiceName.ToString(); this.callStateMap[recognizeOutcomeEvent.ConversationResult.Id].Id = recognizeOutcomeEvent.ConversationResult.Id; recognizeOutcomeEvent.ResultingWorkflow.Actions = new List <ActionBase> { record }; return(Task.FromResult(true)); }
private void ProcessEmergency(RecognizeOutcomeEvent outcome, CallState callStateForClient) { SetupRecording(outcome.ResultingWorkflow); }