public async Task <DialogTurnResult> AfterUpdateSubject(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await EmailStateAccessor.GetAsync(sc.Context); if (!string.IsNullOrWhiteSpace(state.Subject)) { return(await sc.EndDialogAsync(cancellationToken : cancellationToken)); } if (sc.Result != null) { sc.Context.Activity.Properties.TryGetValue("OriginText", out var subject); var subjectInput = subject != null?subject.ToString() : sc.Context.Activity.Text; if (!EmailCommonPhrase.GetIsSkip(subjectInput)) { state.Subject = subjectInput; } else { state.Subject = EmailCommonStrings.EmptySubject; } } return(await sc.EndDialogAsync(cancellationToken : cancellationToken)); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
public async Task <DialogTurnResult> RetryCollectSubject(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await EmailStateAccessor.GetAsync(sc.Context); if (sc.Result != null) { sc.Context.Activity.Properties.TryGetValue("OriginText", out var subject); var subjectInput = subject != null?subject.ToString() : sc.Context.Activity.Text; if (!EmailCommonPhrase.GetIsSkip(subjectInput)) { state.Subject = subjectInput; } } if (!string.IsNullOrWhiteSpace(state.Subject)) { return(await sc.NextAsync()); } return(await sc.PromptAsync(Actions.Prompt, new PromptOptions() { Prompt = ResponseManager.GetResponse(SendEmailResponses.RetryNoSubject), })); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
public async Task <DialogTurnResult> RetryCollectSubjectAsync(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await EmailStateAccessor.GetAsync(sc.Context, cancellationToken : cancellationToken); if (sc.Result != null) { var subjectInput = sc.Context.Activity.Text; if (!EmailCommonPhrase.GetIsSkip(subjectInput)) { state.Subject = subjectInput; } } if (!string.IsNullOrWhiteSpace(state.Subject)) { return(await sc.NextAsync(cancellationToken : cancellationToken)); } var activity = TemplateManager.GenerateActivityForLocale(SendEmailResponses.RetryNoSubject); return(await sc.PromptAsync(Actions.Prompt, new PromptOptions() { Prompt = activity as Activity }, cancellationToken)); } catch (Exception ex) { await HandleDialogExceptionsAsync(sc, ex, cancellationToken); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
public async Task <DialogTurnResult> PlayBackContent(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await EmailStateAccessor.GetAsync(sc.Context); if (sc.Result != null) { sc.Context.Activity.Properties.TryGetValue("OriginText", out var content); var contentInput = content != null?content.ToString() : sc.Context.Activity.Text; if (!EmailCommonPhrase.GetIsSkip(contentInput)) { state.Content = contentInput; var emailCard = new EmailCardData { Subject = EmailCommonStrings.MessageConfirm, EmailContent = state.Content, }; var stringToken = new StringDictionary { { "EmailContent", state.Content }, }; var replyMessage = ResponseManager.GetCardResponse( SendEmailResponses.PlayBackMessage, new Card("EmailContentPreview", emailCard), stringToken); await sc.Context.SendActivityAsync(replyMessage); return(await sc.PromptAsync(Actions.TakeFurtherAction, new PromptOptions() { Prompt = ResponseManager.GetResponse(SendEmailResponses.CheckContent), RetryPrompt = ResponseManager.GetResponse(SendEmailResponses.ConfirmMessageRetry), })); } else { state.Content = EmailCommonStrings.EmptyContent; return(await sc.EndDialogAsync(cancellationToken)); } } return(await sc.NextAsync()); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
public async Task <DialogTurnResult> AfterConfirmNameList(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context); // get name list from sc.result sc.Context.Activity.Properties.TryGetValue("OriginText", out var content); var userInput = "dane"; if (state.MailSourceType != MailSource.Other) { if (userInput != null) { var nameList = userInput.Split(EmailCommonPhrase.GetContactNameSeparator(), StringSplitOptions.None) .Select(x => x.Trim()) .Where(x => !string.IsNullOrWhiteSpace(x)) .ToList(); state.FindContactInfor.ContactsNameList = nameList; } } ////////////////////////////// if (state.FindContactInfor.ContactsNameList.Any()) { if (state.FindContactInfor.ContactsNameList.Count > 1) { var nameString = await GetNameListStringAsync(sc); await sc.Context.SendActivityAsync(ResponseManager.GetResponse(FindContactResponses.BeforeSendingMessage, new StringDictionary() { { "NameList", nameString } })); } // go to loop to go through all the names state.FindContactInfor.ConfirmContactsNameIndex = 0; return(await sc.ReplaceDialogAsync(FindContactAction.LoopNameList, sc.Options, cancellationToken)); } //////////////////////// state.FindContactInfor.ContactsNameList = new List <string>(); state.FindContactInfor.CurrentContactName = string.Empty; state.FindContactInfor.ConfirmContactsNameIndex = 0; return(await sc.EndDialogAsync()); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
public async Task <DialogTurnResult> PlayBackContent(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await EmailStateAccessor.GetAsync(sc.Context); if (sc.Result != null) { sc.Context.Activity.Properties.TryGetValue("OriginText", out var content); var contentInput = content != null?content.ToString() : sc.Context.Activity.Text; if (!EmailCommonPhrase.GetIsSkip(contentInput)) { state.Content = contentInput; var replyMessage = TemplateEngine.GenerateActivityForLocale( SendEmailResponses.PlayBackMessage, new { emailContent = state.Content, }); var confirmMessageRetryActivity = TemplateEngine.GenerateActivityForLocale(SendEmailResponses.ConfirmMessageRetry); return(await sc.PromptAsync(Actions.TakeFurtherAction, new PromptOptions() { Prompt = replyMessage as Activity, RetryPrompt = confirmMessageRetryActivity as Activity, })); } else { state.Content = EmailCommonStrings.EmptyContent; return(await sc.EndDialogAsync(cancellationToken)); } } return(await sc.NextAsync()); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }