Beispiel #1
0
        private async Task AfterChoiceAsync(IDialogContext context, IAwaitable <string> result)
        {
            var selection = await result;

            if (selection == "네, 맞아요!")
            {
                using (CommentService service = new CommentService(new KetBotContext()))
                {
                    await context.PostAsync(await service.GetCommentAsync("RPB02"));

                    // get state
                    KetBotState state = null;
                    // category 2 question
                    context.ConversationData.TryGetValue("KetBotState", out state);
                    // category 2 list
                    var cat2 = await service.GetFormsAsync(state.Stage0Selection);

                    var cat2numbering = ListNumberingHelper.Numbering(cat2);
                    await context.PostAsync(string.Join("\n", cat2numbering.ToArray()));

                    // go next
                    context.Done("");
                }
            }
            else if (selection == "아닌데요?")
            {
                // go back
                context.Call(new Stage0Dialog(), async(c, r) =>
                {
                    var s = await r;
                    //context.Done("");
                    context.Wait(MessageReceivedAsync);
                });
            }
        }
Beispiel #2
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument)
        {
            using (CommentService service = new CommentService(new KetBotContext()))
            {
                var activity = await argument;

                // Check here the right value of the Stage 0
                var cat1 = await service.GetFormsAsync("0");

                bool checkflag = false;
                int  selected;
                if (int.TryParse(activity.Text, out selected) && selected > 0 && selected <= cat1.Count)
                {
                    checkflag = true;
                }

                if (checkflag == true)
                {
                    // The result of stage 0
                    // Get Current State.
                    KetBotState state = null;
                    context.ConversationData.TryGetValue("KetBotState", out state);

                    // save Stage0 selection
                    state.Stage0Selection = activity.Text;

                    // save state
                    context.ConversationData.SetValue("KetBotState", state);

                    // stage 1 question
                    var cat2 = await service.GetCommentAsync("RCB01");

                    var q = string.Format(cat2, cat1[selected - 1]);

                    List <string> yesno = new List <string>()
                    {
                        "네, 맞아요!", "아닌데요?"
                    };

                    PromptDialog.Choice(context, AfterChoiceAsync, yesno, q, promptStyle: PromptStyle.Keyboard);
                }
                else
                {
                    // Go back to stage 0
                    // How to go back?
                    await context.PostAsync(await service.GetCommentAsync("REB01"));

                    await context.PostAsync(string.Join("\n", cat1.ToArray()));

                    context.Wait(MessageReceivedAsync);
                }
            }
        }
Beispiel #3
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument)
        {
            using (CommentService service = new CommentService(new KetBotContext()))
            {
                var activity = await argument;

                // get state
                KetBotState state = null;
                context.ConversationData.TryGetValue("KetBotState", out state);

                var cat3 = await service.GetFormsAsync(state.Stage1Selection);

                bool checkflag = false;
                int  selected;
                if (int.TryParse(activity.Text, out selected) && selected > 0 && selected <= cat3.Count)
                {
                    checkflag = true;
                }

                if (checkflag == true)
                {
                    // save Stage1 selection
                    state.Stage2Selection = activity.Text;
                    // save state
                    context.ConversationData.SetValue("KetBotState", state);

                    // final answers
                    var answers = await service.GetAnswerAsync(state.Stage0Selection + state.Stage1Selection + state.Stage2Selection);

                    await context.PostAsync(string.Join("\n", answers.ToArray()));

                    var q = await service.GetCommentAsync("RCB02");

                    List <string> yesno = new List <string>()
                    {
                        "네, 맞아요!", "아닌데요?"
                    };

                    PromptDialog.Choice(context, AfterChoiceAsync, yesno, q, promptStyle: PromptStyle.Keyboard);
                }
                else
                {
                    // Go back to stage 2
                    await context.PostAsync(await service.GetCommentAsync("REB01"));

                    await context.PostAsync(string.Join("\n", cat3.ToArray()));

                    context.Wait(MessageReceivedAsync);
                }
            }
        }
Beispiel #4
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument)
        {
            using (CommentService service = new CommentService(new KetBotContext()))
            {
                var activity = await argument;

                // get state
                KetBotState state = null;
                context.ConversationData.TryGetValue("KetBotState", out state);

                var cat2 = await service.GetFormsAsync(state.Stage0Selection);

                bool checkflag = false;
                int  selected;
                if (int.TryParse(activity.Text, out selected) && selected > 0 && selected <= cat2.Count)
                {
                    checkflag = true;
                }

                if (checkflag == true)
                {
                    // save Stage 2 selection
                    state.Stage1Selection = activity.Text;
                    // save state
                    context.ConversationData.SetValue("KetBotState", state);

                    // stage 3 question
                    var q = await service.GetCommentAsync("RCB01");

                    q = string.Format(q, cat2[selected - 1]);
                    var cat3 = await service.GetFormsAsync(state.Stage0Selection + state.Stage1Selection);

                    var cat3numbering = ListNumberingHelper.Numbering(cat3);
                    await context.PostAsync(q);

                    await context.PostAsync(string.Join("\n", cat3numbering.ToArray()));

                    context.Done("");
                }
                else
                {
                    // Go back to stage 0
                    // TODO : How to go back?
                    context.Call(new Stage1Dialog(), async(c, r) => { var s = await r; context.Done(""); });
                }
            }
        }
Beispiel #5
0
        public async Task StartAsync(IDialogContext context)
        {
            // Init state here
            KetBotState state = null;

            context.ConversationData.TryGetValue("KetBotState", out state);

            // if null,
            if (state == null)
            {
                state = new KetBotState();
                context.ConversationData.SetValue("KetBotState", state);
            }

            using (CommentService service = new CommentService(new KetBotContext()))
            {
                // Greeting
                await context.PostAsync(await service.GetCommentAsync("RGB01"));

                await context.PostAsync(await service.GetCommentAsync("RIB01"));

                context.Done("");
            }
        }