public async Task history(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result) { var message = await activity; string answer = await QnaMaker.Qna(message.Text); await context.PostAsync(answer); context.Wait(MessageReceived); }
public async Task SchoolInformation(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result) { count1 = 0; count2 = 0; count3 = 3; var message = await activity; EntityRecommendation schoolrelated; //学校相关 EntityRecommendation objectname; //概括对象名 var query = "西安交通大学"; if (result.TryFindEntity(Objectname, out objectname)) { query += $"{objectname.Entity}"; } if (message.Text.IndexOf("网站") != -1) { query += "网站是什么?"; } if (message.Text.IndexOf("校训") != -1) { query += "校训是什么?"; } if (result.TryFindEntity(Schoolrelated, out schoolrelated)) { message.Text = message.Text.Replace(schoolrelated.Entity, "西安交通大学"); } else { message.Text = "西安交通大学" + message.Text; } string answer = await QnaMaker.Qna(message.Text); //Qna问题查询 if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { answer = await QnaMaker.Qna(query); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } }
public async Task None(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result) { count1 = 0; count2 = 0; count3 = 3; var message = await activity; string answer = await QnaMaker.Qna(message.Text); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("你在故意刁难本Orange机器人,请换一个问题!"); } context.Wait(MessageReceived); }
public async Task TimeQuery(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result) { count1 = 0; count2 = 0; count3 = 3; EntityRecommendation verb; //学校相关 EntityRecommendation schoolrelated; //学校相关 var message = await activity; if (result.TryFindEntity(Schoolrelated, out schoolrelated)) { message.Text = message.Text.Replace(schoolrelated.Entity, "西安交通大学"); } else { message.Text = "西安交通大学" + message.Text; } string answer = await QnaMaker.Qna(message.Text); //Qna问题查询 var query = "西安交通大学"; if (result.TryFindEntity(Verb, out verb)) { query += $"{verb.Entity}时间?"; } if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { answer = await QnaMaker.Qna(query); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } }
public async override Task OnReceiveActivity(IBotContext context) { // IMAGE var image = context.Get <ImageRecognizeResult>(ImageMiddleware.ImageRecognizerResultKey); if (image != null) { await context.SendActivity("Thaks for sending me a photo!\nLet's see..."); var keyword = image.PrimaryKeyword(); var finder = new Finder(); var result = await finder.SearchWithKeywordAsync(keyword); if (result != null) { SearcherFeedbackState = true; var activity = createReply(context, result); await context.SendActivity(activity); await context.SendActivity("Did you find what you ware looking for?"); return; } } if ((context.Request.Type == ActivityTypes.Message) && (context.Request.AsMessageActivity().Text.Length > 0)) { var message = context.Request.AsMessageActivity(); var qnamaker = new QnaMaker(); // If there is an active topic, let it handle this turn until it completes. if (HasActiveTopic) { await ActiveTopic.OnReceiveActivity(context); return; } if (!SearcherFeedbackState) { await context.SendActivity("Got it!"); } // CHIT var chitchater = new ChitChater(); var answer = await chitchater.SearchChitChat(message.Text); if (answer != null) { await context.SendActivity(answer); return; } // Feedback if (SearcherFeedbackState) { SearcherFeedbackState = false; var feedbacker = new Feedbacker(); var feedback = await feedbacker.SearchAsync(message.Text); if (feedback == Feedbacker.INTENT.FEEDBACK_NEGATIVE) { await context.SendActivity("Sorry, but could you try agein using another term?"); return; } else if (feedback == Feedbacker.INTENT.FEEDBACK_POSITIVE) { await context.SendActivity("No problem!"); return; } // Not reterun and continue next line when you get NOEN intent. } // SelectQuestion if (SelectQuestionState) { if (int.TryParse(message.Text, out i) && (i < 4)) { var selectquestion = questionlist[i]; var selectanswer = await qnamaker.SearchQnaMaker(selectquestion); await context.SendActivity(selectanswer.First().Answer); SelectQuestionState = false; SearcherFeedbackState = true; return; } else if (turn < maxturn) { await context.SendActivity("Sorry,but please input number(1 - 4)"); turn += 1; return; } else { SelectQuestionState = false; await context.SendActivity("too many attempts"); await context.SendActivity("OK! You may change your mind."); return; } } // QnA qnamaker = new QnaMaker(); var queryresults = await qnamaker.SearchQnaMaker(message.Text); if (queryresults != null) { if (queryresults.First().Questions.Count() == 1) { SearcherFeedbackState = true; await context.SendActivity(queryresults.First().Answer); return; } else { SelectQuestionState = true; SearcherFeedbackState = true; var messages = "Did you mean? Please input number(1 - 4)"; foreach (var q in queryresults.First().Questions.Select((value, index) => new { value, index })) { if (q.index > 2) { messages += "\n\n" + "\n\n" + (q.index + 1) + ".None of adove"; questionlist.Add(queryresults.First().Questions[q.index]); break; } messages += "\n\n" + "\n\n" + (q.index + 1) + "." + queryresults.First().Questions[q.index].ToString(); questionlist.Add(queryresults.First().Questions[q.index]); } await context.SendActivity(messages); return; } } // Search var finder = new Finder(); var result = await finder.SearchAsync(message.Text); if (result != null) { SearcherFeedbackState = true; var activity = createReply(context, result); await context.SendActivity(activity); await context.SendActivity("Did you find what you ware looking for?"); return; } await context.SendActivity("Sorry, but I didn't understand that. Could you try saying that another way?"); } }
public async Task Search(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result) { var message = await activity; if (message.Text.IndexOf("上一任") != -1 || message.Text.IndexOf("前任") != -1 || message.Text.IndexOf("前一任") != -1 || message.Text.IndexOf("上届") != -1 || message.Text.IndexOf("上一届") != -1 || message.Text.IndexOf("前届") != -1) { count1 += 1; } else if (message.Text.IndexOf("上两任") != -1 || message.Text.IndexOf("前两任") != -1) { count1 += 2; } else if (message.Text.IndexOf("下一任") != -1 || message.Text.IndexOf("后一任") != -1 || message.Text.IndexOf("后一任") != -1 || message.Text.IndexOf("下届") != -1 || message.Text.IndexOf("下一届") != -1 || message.Text.IndexOf("后届") != -1) { count1 -= 1; } else if (message.Text.IndexOf("下两任") != -1 || message.Text.IndexOf("后两任") != -1) { count1 -= 2; } else { count1 = 0; } if (message.Text.IndexOf("上一任") != -1 || message.Text.IndexOf("前任") != -1 || message.Text.IndexOf("前一任") != -1 || message.Text.IndexOf("上届") != -1 || message.Text.IndexOf("上一届") != -1 || message.Text.IndexOf("前届") != -1) { count2 += 1; } else if (message.Text.IndexOf("上两任") != -1 || message.Text.IndexOf("前两任") != -1) { count2 += 2; } else if (message.Text.IndexOf("下一任") != -1 || message.Text.IndexOf("后一任") != -1 || message.Text.IndexOf("后一任") != -1 || message.Text.IndexOf("下届") != -1 || message.Text.IndexOf("下一届") != -1 || message.Text.IndexOf("后届") != -1) { count2 -= 1; } else if (message.Text.IndexOf("下两任") != -1 || message.Text.IndexOf("后两任") != -1) { count2 -= 2; } else { count2 = 0; } count3 = 0; EntityRecommendation position; //职位 EntityRecommendation college; //学院 EntityRecommendation logicalorder; //次序逻辑 EntityRecommendation schoolrelated; //学校相关 var query = "西安交通大学"; if (result.TryFindEntity(Logicalorder, out logicalorder)) { query += $"{logicalorder.Entity}"; } if (result.TryFindEntity(College, out college)) { query += $"{college.Entity}"; record2 = $"{college.Entity}"; } if (result.TryFindEntity(Position, out position)) { query += $"{position.Entity}"; record1 = $"{position.Entity}"; } if (message.Text.IndexOf(Phone) != -1) { query += "电话"; } if (message.Text.IndexOf(Email) != -1) { query += "电子邮箱"; } query += "是?"; if (result.TryFindEntity(Schoolrelated, out schoolrelated)) { message.Text = message.Text.Replace(schoolrelated.Entity, "西安交通大学"); } else { message.Text = "西安交通大学" + message.Text; } if (message.Text.IndexOf("电子邮箱") != -1) { message.Text = message.Text.Replace("电子邮箱", "电子邮箱"); } else if (message.Text.IndexOf(Email) != -1) { message.Text = message.Text.Replace(Email, "电子邮箱"); } else if (message.Text.IndexOf("email") != -1) { message.Text = message.Text.Replace("email", "电子邮箱"); } else if (message.Text.IndexOf("Email") != -1) { message.Text = message.Text.Replace("Email", "电子邮箱"); } else if (message.Text.IndexOf("联系方式") != -1) { message.Text = message.Text.Replace("联系方式", "电子邮箱"); } string answer = await QnaMaker.Qna(message.Text); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { answer = await QnaMaker.Qna(query); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } context.Wait(MessageReceived); }
public async Task QuantityQuery(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result) { count1 = 0; count2 = 0; count3 = 1; EntityRecommendation title; //职位 EntityRecommendation college; EntityRecommendation schoolrelated; //学校相关 var message = await activity; if (message.Text.IndexOf("占") != -1) { if (message.Text.IndexOf("本科生") != -1) { await context.PostAsync("17099/33604=50.9%"); } if (message.Text.IndexOf("研究生") != -1) { await context.PostAsync("16505/33604=49.1%"); } } else { if (result.TryFindEntity(Schoolrelated, out schoolrelated)) { message.Text = message.Text.Replace(schoolrelated.Entity, "西安交通大学"); } else { message.Text = "西安交通大学" + message.Text; } string answer = await QnaMaker.Qna(message.Text); //Qna问题查询 if (result.TryFindEntity(College, out college)) { record2 = $"{college.Entity}"; } var query = "西安交通大学有多少"; if (result.TryFindEntity(Title, out title)) { query += $"{title.Entity}?"; record3 = $"{title.Entity}"; } if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { answer = await QnaMaker.Qna(query); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } } }
public async Task LogicalIdentification(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result) { EntityRecommendation logicalorder; EntityRecommendation schoolrelated; EntityRecommendation college; EntityRecommendation title; var message = await activity; if (record1 == "校长") { if (message.Text.IndexOf("上一任") != -1 || message.Text.IndexOf("前任") != -1 || message.Text.IndexOf("前一任") != -1 || message.Text.IndexOf("上届") != -1 || message.Text.IndexOf("上一届") != -1 || message.Text.IndexOf("前届") != -1) { count1 += 1; } if (message.Text.IndexOf("上两任") != -1 || message.Text.IndexOf("前两任") != -1) { count1 += 2; } if (message.Text.IndexOf("下一任") != -1 || message.Text.IndexOf("后一任") != -1 || message.Text.IndexOf("后一任") != -1 || message.Text.IndexOf("下届") != -1 || message.Text.IndexOf("下一届") != -1 || message.Text.IndexOf("后届") != -1) { count1 -= 1; } if (message.Text.IndexOf("下两任") != -1 || message.Text.IndexOf("后两任") != -1) { count1 -= 2; } if (count1 < 0 || message.Text.IndexOf("电话") != -1 || message.Text.IndexOf("邮箱") != -1 || message.Text.IndexOf("办公室") != -1) { await context.PostAsync("查不到"); } else { await context.PostAsync($"第{15 - count1}任校长是{Principal[count1]}(我校一共有15任校长)"); } } else if (record1 == "党委书记") { if (message.Text.IndexOf("上一任") != -1 || message.Text.IndexOf("前任") != -1 || message.Text.IndexOf("前一任") != -1 || message.Text.IndexOf("上届") != -1 || message.Text.IndexOf("上一届") != -1 || message.Text.IndexOf("前届") != -1) { count2 += 1; } if (message.Text.IndexOf("上两任") != -1 || message.Text.IndexOf("前两任") != -1) { count2 += 2; } if (message.Text.IndexOf("下一任") != -1 || message.Text.IndexOf("后一任") != -1 || message.Text.IndexOf("后一任") != -1 || message.Text.IndexOf("下届") != -1 || message.Text.IndexOf("下一届") != -1 || message.Text.IndexOf("后届") != -1) { count2 -= 1; } if (message.Text.IndexOf("下两任") != -1 || message.Text.IndexOf("后两任") != -1) { count2 -= 2; } if (count2 < 0 || message.Text.IndexOf("电话") != -1 || message.Text.IndexOf("邮箱") != -1 || message.Text.IndexOf("办公室") != -1) { await context.PostAsync("查不到"); } else { await context.PostAsync($"第{9 - count2}任党委书记是{Partysecretary[count2]}(我校一共有9任党委书记)"); } } else { if (count3 == 0) { var query = "西安交通大学"; if (result.TryFindEntity(Logicalorder, out logicalorder)) { query += $"{logicalorder.Entity}"; } query += record2; //加上了学院 query += record1; //加上了职位 if (message.Text.IndexOf(Phone) != -1) { query += "电话"; } if (message.Text.IndexOf("电子邮箱") != -1) { query += "电子邮箱"; } else if (message.Text.IndexOf(Email) != -1) { query += "电子邮箱"; } else if (message.Text.IndexOf("email") != -1) { query += "电子邮箱"; } else if (message.Text.IndexOf("Email") != -1) { query += "电子邮箱"; } else if (message.Text.IndexOf("联系方式") != -1) { query += "电子邮箱"; } query += "是?"; var answer = await QnaMaker.Qna(query); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } else if (count3 == 1) { if (result.TryFindEntity(College, out college)) { message.Text.Replace(record2, college.Entity); var answer = await QnaMaker.Qna(message.Text); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } else if (result.TryFindEntity(Title, out title)) { message.Text.Replace(record3, title.Entity); var answer = await QnaMaker.Qna(message.Text); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } else { if (result.TryFindEntity(Schoolrelated, out schoolrelated)) { message.Text = message.Text.Replace(schoolrelated.Entity, "西安交通大学"); } else { message.Text = "西安交通大学" + message.Text; } var answer = await QnaMaker.Qna(message.Text); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } } else { if (result.TryFindEntity(Schoolrelated, out schoolrelated)) { message.Text = message.Text.Replace(schoolrelated.Entity, "西安交通大学"); } else { message.Text = "西安交通大学" + message.Text; } var answer = await QnaMaker.Qna(message.Text); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } } }
public async Task Generalquestion(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result) { count1 = 0; count2 = 0; count3 = 3; EntityRecommendation generaljudgment; EntityRecommendation position; EntityRecommendation name; EntityRecommendation schoolrelated; //学校相关 EntityRecommendation college; EntityRecommendation logicalorder; var message = await activity; if (result.TryFindEntity(Position, out position) && result.TryFindEntity(Name, out name)) { var query = "西安交通大学"; if (result.TryFindEntity(Logicalorder, out logicalorder)) { query += $"{logicalorder.Entity}"; } if (result.TryFindEntity(College, out college)) { query += $"{college.Entity}"; } query += $"{position.Entity}是谁?"; string answer = await QnaMaker.Qna(query); if (answer == name.Entity) { await context.PostAsync("是"); } else { await context.PostAsync("不是"); } } else if (result.TryFindEntity(Position, out position)) { var query = "西安交通大学"; if (result.TryFindEntity(Logicalorder, out logicalorder)) { query += $"{logicalorder.Entity}"; } if (result.TryFindEntity(College, out college)) { query += $"{college.Entity}"; } query += $"{position.Entity}是谁?"; string answer = await QnaMaker.Qna(query); if (message.Text.IndexOf(answer) != -1) { await context.PostAsync("是"); } else { await context.PostAsync("不是"); } } else { if (result.TryFindEntity(Schoolrelated, out schoolrelated)) { message.Text = message.Text.Replace(schoolrelated.Entity, "西安交通大学"); } else { message.Text = "西安交通大学" + message.Text; } string answer = await QnaMaker.Qna(message.Text); if (answer != "No good match found in the KB") { await context.PostAsync(answer); } else { await context.PostAsync("通过学校官网我查询不到相关信息。"); } } context.Wait(MessageReceived); }