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); }); } }
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); } } }
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); } } }
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(""); }); } } }
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(""); } }