Esempio n. 1
0
        private async Task BookingRoomStart(DialogContext dialogContext, object args, SkipStepFunction next)
        {
            var state = new TechClubAssistantBotState(dialogContext.ActiveDialog.State);

            FillBookingStateFromLuisResult(state, (args as IDictionary <string, object>)?["luisResult"] as LuisResult);

            dialogContext.ActiveDialog.State = state;

            await dialogContext.Context.SendActivity($"Booking meeting room started");

            if (String.IsNullOrEmpty(state.MeetingRoom))
            {
                var choices = MeetingRooms.Select(r => new Choice()
                {
                    Value = r
                }).ToList();
                await dialogContext.Prompt(MeetingRoomPrompt, "Select meeting room: ", new ChoicePromptOptions()
                {
                    Choices = choices
                });
            }
            else
            {
                await dialogContext.Continue();
            }
        }
Esempio n. 2
0
        private async Task BookingRoomFinish(DialogContext dialogContext, object args, SkipStepFunction next)
        {
            var state = new TechClubAssistantBotState(dialogContext.ActiveDialog.State);

            if (args is Microsoft.Bot.Builder.Prompts.ChoiceResult choiceResult)
            {
                state.IsConfirmed = choiceResult.Value.Value == "Confirm";
            }

            if (state.IsConfirmed)
            {
                var bookingResult = await _meetingRoomBookingService.BookMeetingRoomAsync(new BookingRequest()
                {
                    MeetingRoom = state.MeetingRoom, Time = state.Time, Duration = state.Duration
                });

                await dialogContext.Context.SendActivity($"Your booking was processed.");
            }
            else
            {
                await dialogContext.Context.SendActivity($"Your booking was cancelled");
            }

            await dialogContext.End();
        }
Esempio n. 3
0
        private async Task BookingRoomConfirmation(DialogContext dialogContext, object args, SkipStepFunction next)
        {
            var state = new TechClubAssistantBotState(dialogContext.ActiveDialog.State);

            dialogContext.ActiveDialog.State = state;


            if (args is Microsoft.Bot.Builder.Prompts.TextResult result)
            {
                state.Duration = result.Value;
            }

            string summary = $"Please confirm your booking: **{state.MeetingRoom}** at {state.Time} for {state.Duration}";

            var choices = new List <Choice> {
                new Choice()
                {
                    Value = "Confirm"
                }, new Choice()
                {
                    Value = "Reject"
                }
            };
            await dialogContext.Prompt(ConfirmPrompt, summary, new ChoicePromptOptions()
            {
                Choices = choices
            });
        }
Esempio n. 4
0
        private static void FillBookingStateFromLuisResult(TechClubAssistantBotState state, LuisResult result)
        {
            EntityRecommendation meetingRoomEntity = result.Entities.Where(e => e.Type == "Meeting Room").FirstOrDefault();

            state.MeetingRoom = ((meetingRoomEntity?.Resolution?["values"]) as List <object>)?.FirstOrDefault()?.ToString();

            EntityRecommendation durationEntity = result.Entities.Where(e => e.Type == "builtin.datetimeV2.duration").FirstOrDefault();
            var resolvedDuration = (((durationEntity?.Resolution?["values"]) as List <object>)?.FirstOrDefault() as Dictionary <string, object>)?["value"];

            state.Duration = resolvedDuration != null?TimeSpan.FromSeconds(Convert.ToDouble(resolvedDuration)).ToString() : null;

            EntityRecommendation timeEntity = result.Entities.Where(e => e.Type == "builtin.datetimeV2.datetime").FirstOrDefault();

            state.Time = (((timeEntity?.Resolution?["values"]) as List <object>)?.FirstOrDefault() as Dictionary <string, object>)?["value"]?.ToString();
        }
Esempio n. 5
0
        private async Task BookingRoomDuration(DialogContext dialogContext, object args, SkipStepFunction next)
        {
            var state = new TechClubAssistantBotState(dialogContext.ActiveDialog.State);

            dialogContext.ActiveDialog.State = state;

            if (args is Microsoft.Bot.Builder.Prompts.DateTimeResult result)
            {
                state.Time = result.Text;
            }

            if (String.IsNullOrEmpty(state.Duration))
            {
                await dialogContext.Prompt(DurationPrompt, "Enter duration: ", new PromptOptions()
                {
                    RetryPromptString = "Please enter correct duration"
                });
            }
            else
            {
                await dialogContext.Continue();
            }
        }
Esempio n. 6
0
        private async Task BookingRoomTime(DialogContext dialogContext, object args, SkipStepFunction next)
        {
            var state = new TechClubAssistantBotState(dialogContext.ActiveDialog.State);

            dialogContext.ActiveDialog.State = state;


            if (args is Microsoft.Bot.Builder.Prompts.ChoiceResult choiceResult)
            {
                state.MeetingRoom = choiceResult.Value.Value;
            }

            if (String.IsNullOrEmpty(state.Time))
            {
                await dialogContext.Prompt(TimePrompt, "Enter date and time: ", new PromptOptions()
                {
                    RetryPromptString = "Please enter correct date and time"
                });
            }
            else
            {
                await dialogContext.Continue();
            }
        }