Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #4
0
        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));
            }
        }