Example #1
0
        public async Task <DialogTurnResult> CompleteDialog(WaterfallStepContext sc,
                                                            CancellationToken cancellationToken)
        {
            _state = await _accessor.GetAsync(sc.Context, () => new TarState(), cancellationToken);

            await _responder.ReplyWith(sc.Context, TarResponses.ResponseIds.MeetingsCancelled);

            await _responder.ReplyWith(sc.Context, TarResponses.ResponseIds.TakeCare);

            await _accessor.DeleteAsync(sc.Context);

            return(await sc.EndDialogAsync(null, cancellationToken));
        }
Example #2
0
        public async Task <DialogTurnResult> AskToSendNoteToTeam(WaterfallStepContext sc,
                                                                 CancellationToken cancellationToken)
        {
            _state = await _accessor.GetAsync(sc.Context, () => new TarState(), cancellationToken);

            var result = sc.Result as string;

            if (result != "Use sick day")
            {
                await _accessor.DeleteAsync(sc.Context);

                return(await sc.EndDialogAsync(null, cancellationToken));
            }

            _state.ConfirmSickDay = true;
            await _responder.ReplyWith(sc.Context, TarResponses.ResponseIds.ConfirmSickDaySubmitted);

            var choices = new[] { "Notify team about my sick day", "No" };

            var card = new AdaptiveCard
            {
                Version = new AdaptiveSchemaVersion(1, 0),
                Body    =
                {
                    new AdaptiveTextBlock("Would you like to send a note to your team?"),
                    new AdaptiveTextBlock()
                },
                Actions = choices.Select(choice => new AdaptiveSubmitAction
                {
                    Title = choice,
                    Data  = choice,
                }).ToList <AdaptiveAction>(),
            };

            return(await sc.PromptAsync(
                       DialogIds.AskSendNoteToTeam,
                       new PromptOptions
            {
                Choices = ChoiceFactory.ToChoices(choices),
                Prompt = (Activity)MessageFactory.Attachment(new Attachment
                {
                    ContentType = AdaptiveCard.ContentType,
                    Content = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card)),
                }),
            },
                       cancellationToken));
        }
Example #3
0
        public async Task <DialogTurnResult> ConfirmSickDay(WaterfallStepContext sc,
                                                            CancellationToken cancellationToken)
        {
            _state = await _accessor.GetAsync(sc.Context, () => new TarState());

            if (_state.ConfirmSickDay)
            {
                return(await sc.NextAsync(_state.ConfirmSickDay));
            }

            await _responder.ReplyWith(sc.Context, TarResponses.ResponseIds.FeelBetterSoon);

            var choices = new[] { "Use sick day", "No" };

            var card = new AdaptiveCard
            {
                Version = new AdaptiveSchemaVersion(1, 0),
                Body    =
                {
                    new AdaptiveTextBlock("Here is your sick day balance as of today"),
                    new AdaptiveTextBlock(),
                    new AdaptiveColumnSet()
                    {
                        Columns = new List <AdaptiveColumn>()
                        {
                            new AdaptiveColumn()
                            {
                                Items = new List <AdaptiveElement>()
                                {
                                    new AdaptiveTextBlock()
                                    {
                                        Text = "2",
                                        Size = AdaptiveTextSize.ExtraLarge
                                    }
                                }
                            },
                            new AdaptiveColumn()
                            {
                                Items = new List <AdaptiveElement>()
                                {
                                    new AdaptiveTextBlock(),
                                    new AdaptiveTextBlock(),
                                    new AdaptiveTextBlock()
                                    {
                                        Text = "days",
                                        Size = AdaptiveTextSize.Small
                                    }
                                }
                            }
                        }
                    },
                    new AdaptiveTextBlock(),
                    new AdaptiveTextBlock("Would you use your sick day?"),
                },
                Actions = choices.Select(choice => new AdaptiveSubmitAction
                {
                    Title = choice,
                    Data  = choice,
                }).ToList <AdaptiveAction>(),
            };

            return(await sc.PromptAsync(
                       DialogIds.ConfirmSickDay,
                       new PromptOptions
            {
                Choices = ChoiceFactory.ToChoices(choices),
                Prompt = (Activity)MessageFactory.Attachment(new Attachment
                {
                    ContentType = AdaptiveCard.ContentType,
                    Content = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card)),
                }),
            },
                       cancellationToken));
        }
Example #4
0
        public async Task <DialogTurnResult> PromptCalendarCancellation(WaterfallStepContext sc,
                                                                        CancellationToken cancellationToken)
        {
            _state = await _accessor.GetAsync(sc.Context, () => new TarState(), cancellationToken);

            var result = sc.Result as string;

            if (result != "Notify team about my sick day")
            {
                await _accessor.DeleteAsync(sc.Context);

                return(await sc.EndDialogAsync(null, cancellationToken));
            }

            await _responder.ReplyWith(sc.Context, TarResponses.ResponseIds.SentNoteToTeam);

            var choices = new[] { "Yes", "No" };

            var card = new AdaptiveCard
            {
                Version = new AdaptiveSchemaVersion(1, 0),
                Body    =
                {
                    new AdaptiveTextBlock("I see you have 3 meetings scheduled today."),
                    new AdaptiveTextBlock(),
                    new AdaptiveFactSet()
                    {
                        Facts = new List <AdaptiveFact>()
                        {
                            new AdaptiveFact()
                            {
                                Title = "Title",
                                Value = "Stand up"
                            },
                            new AdaptiveFact()
                            {
                                Title = "Time",
                                Value = "11:00 AM to 11:30 AM"
                            },
                            new AdaptiveFact()
                            {
                                Title = "Attendees",
                                Value = "ravigoridir"
                            },
                        }
                    },
                    new AdaptiveTextBlock("---------------"),
                    new AdaptiveFactSet()
                    {
                        Facts = new List <AdaptiveFact>()
                        {
                            new AdaptiveFact()
                            {
                                Title = "Title",
                                Value = "Discuss HR Bot"
                            },
                            new AdaptiveFact()
                            {
                                Title = "Time",
                                Value = "2:00 PM to 3:00 PM"
                            },
                            new AdaptiveFact()
                            {
                                Title = "Attendees",
                                Value = "HRBot Stakeholders"
                            },
                        }
                    },
                    new AdaptiveTextBlock("---------------"),
                    new AdaptiveFactSet()
                    {
                        Facts = new List <AdaptiveFact>()
                        {
                            new AdaptiveFact()
                            {
                                Title = "Title",
                                Value = "Sprint Planning"
                            },
                            new AdaptiveFact()
                            {
                                Title = "Time",
                                Value = "3:00 PM to 4:00 PM"
                            },
                            new AdaptiveFact()
                            {
                                Title = "Attendees",
                                Value = "ravigoridir"
                            },
                        }
                    },
                    new AdaptiveTextBlock(),
                    new AdaptiveTextBlock("Would you like to cancel those meetings?"),
                },
                Actions = choices.Select(choice => new AdaptiveSubmitAction
                {
                    Title = choice,
                    Data  = "I am done with tar",
                }).ToList <AdaptiveAction>()
            };

            return(await sc.PromptAsync(
                       DialogIds.PromptCalendarCancellation,
                       new PromptOptions
            {
                Choices = ChoiceFactory.ToChoices(choices),
                Prompt = (Activity)MessageFactory.Attachment(new Attachment
                {
                    ContentType = AdaptiveCard.ContentType,
                    Content = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card)),
                }),
            },
                       cancellationToken));
        }