//private void _lessonmenu(OOPEZZ_DBEntities db, BotMessageReceivedRequest botMessage) //{ // ///thua // List<LESSION> lessionlist = db.LESSION.ToList(); // List<PayloadElements> listelement = new List<PayloadElements>(); // foreach (LESSION ls in lessionlist) // { // PayloadElements element = new PayloadElements() // { // title = ls.NAME, // //image_url = ls.IMAGE, // subtitle = ls.DESCRIPTION, // buttons = new List<ResponseButtons> // { // new ResponseButtons // { // type = "web_url", // title = "View", // url = "https://www.facebook.com/pg/OOP-Ezz-108722340761918" // } // }, // default_action = new PayloadElementDefautAction // { // type = "web_url", // url = "https://www.facebook.com/pg/OOP-Ezz-108722340761918" // } // }; // listelement.Add(element); // } // List<ResponseButtons> lbt = new List<ResponseButtons>() // { // new ResponseButtons // { // title = "View More", // type = "postback", // payload = "payload view more" // } // }; // //listelement.RemoveAt(1); // String json = fbTemplate.ListTemplate(botMessage.sender.id, listelement); // _post(json); //} private void _rqQuestion(OOPEZZ_DBEntities db, BotMessageReceivedRequest botMessage) { String mess = botMessage.message.text.Remove(0, 6); mess = mess.Trim(); mess = Ulti.replaceKeyword(db, mess); USER user = db.USER.Where(x => x.TOKEN == botMessage.sender.id).FirstOrDefault(); int userpkseq = -1; if (user == null) { UserControl control = new UserControl(); userpkseq = control.CreateUser(db, botMessage.sender.id); } else { userpkseq = user.PK_SEQ; } QUESTION ques = new QUESTION() { BEST_ANSWER_FK = 0, QUESTION_TEXT = mess, QUESTION_USER_FK = userpkseq, STATUS = 0 }; db.QUESTION.Add(ques); db.SaveChanges(); String json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Oki đã ghi nhận nào có câu trả lời mình sẽ trả lời ngay"); _post(json); }
private void _help(OOPEZZ_DBEntities db, BotMessageReceivedRequest botMessage) { String json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Chào bạn"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "OOPEzz là bot chat hỗ trợ bạn học môn lập trình hướng đối tượng bằng ngôn ngữ C++ của trường Đại học Công Thông tin"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Chatbot có thể giúp bạn trả lời những câu hỏi xung quanh C++, OOP. Bạn chỉ cần hỏi và mình sẽ tìm câu trả lời phù hợp nhất"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Ví dụ, bạn chỉ cần chat 'hướng đối tượng là gì' thì bot sẽ tự tìm kiếm câu trả lời phù hợp nhất"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Ngoài ra để đặt câu hỏi cho về bài học hay bất cứ cái gì mà bot chưa giải quyết thỏa đáng chỉ cần chat '[QUES] mình có câu hỏi là'"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Để xem được danh sách chủ đề chat [menu]"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Để hiện lại bảng hướng dẫn chat [help]"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Để xem tiến độ học tập chat [process] (upcomming)"); _post(json); json = fbTemplate.ButtonTemplate(botMessage.sender.id, "Xem bài đầu tiên", new List <ResponseButtons> { new ResponseButtons { payload = "LESSON_1", type = "postback", title = "Xem bài 1" } }); _post(json); }
public int CreateUser(OOPEZZ_DBEntities db, string PSID) { string fbtoken = AppInstance.getInstance().getFbPageToken(); string url = "https://graph.facebook.com/" + PSID + "?fields=first_name,last_name,gender&access_token=" + fbtoken; var request = (HttpWebRequest)WebRequest.Create(url); request.ContentType = "application/json"; request.Method = "GET"; WebResponse response = request.GetResponse(); string result = new StreamReader(response.GetResponseStream()).ReadToEnd(); //UserAPITemplate userResponse = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<UserAPITemplate>(result); UserAPITemplate userResponse = JsonConvert.DeserializeObject <UserAPITemplate>(result); string name = Ulti.UnicodeDecode(userResponse.LastName + " " + userResponse.FirstName); USER user = new USER() { STATUS = 1, TOKEN = PSID, USERNAME = name }; db.USER.Add(user); db.SaveChanges(); return(user.PK_SEQ); }
private void _postContentList(OOPEZZ_DBEntities db, List <CONTENT> lcontent, String senderid) { foreach (CONTENT content in lcontent) { String json = ""; switch (content.TYPE) { case CONTENT_TYPE_TEXT: json = fbTemplate.SimpleTextTemplate(senderid, content.CONTENT_TEXT); break; case CONTENT_TYPE_IMG: json = fbTemplate.ImageUrlTemplate(senderid, content.CONTENT_TEXT); break; case CONTENT_TYPE_OPTION: json = fbTemplate.OptionPosbackTemplate(senderid, content.CONTENT_TEXT); break; //_post(json); //return; default: break; } _post(json); } }
public void ProgressRequest(BotMessageReceivedRequest botMessage) { OOPEZZ_DBEntities db = new OOPEZZ_DBEntities(); string senderid = botMessage.sender.id; USER user = db.USER.Where(x => x.TOKEN == senderid).FirstOrDefault(); if (user == null) { _postGreeting(db, botMessage); UserControl control = new UserControl(); control.CreateUser(db, botMessage.sender.id); } //ko có post back tức là câu hỏi hoặc chat lệnh cơ bản if (botMessage.postback == null) { //TIn nhắn thường if (botMessage.message == null || botMessage.message.text == null) { return; } ProgressCommonRequest(botMessage); //botMessage.postback = new BotPostback { payload = botMessage.message.text }; } else { if (botMessage.postback.payload == null) { return; } if (botMessage.postback.payload.StartsWith("LESSON")) { _postGroupContentListFromLS(db, botMessage); //_postLession(db,botMessage); } if (botMessage.postback.payload.StartsWith("GROUPCONTENT")) { _postContentfromGroup(db, botMessage); } if (botMessage.postback.payload.StartsWith("CONTENT")) { _postContentformContent(db, botMessage); } if (botMessage.postback.payload.StartsWith("MENUG")) { //_postGroupContentList(db, botMessage); } if (botMessage.postback.payload.StartsWith("ANS")) { _postAnswer(db, botMessage); } if (botMessage.postback.payload.StartsWith("QUES")) { _postQuestion(botMessage); } } db.Dispose(); }
private void _postQuestion(OOPEZZ_DBEntities db, QUESTION question, BotMessageReceivedRequest mess) { ANSWER answer = db.ANSWER.Where(x => x.QUESTION_FK == question.PK_SEQ).OrderByDescending(x => x.STATUS).First(); String json = ""; json = fbTemplate.SimpleTextTemplate(mess.sender.id, "Câu hỏi : "); _post(json); json = fbTemplate.SimpleTextTemplate(mess.sender.id, question.QUESTION_TEXT); _post(json); String answer_pkseq_contents = answer.ANSWER_TEXT; char[] charac = { '#' }; List <String> pkseqs = answer_pkseq_contents.Split(charac).ToList(); List <CONTENT> contents = new List <CONTENT>(); foreach (String pkseq in pkseqs) { int pk = int.Parse(pkseq); CONTENT ct = db.CONTENT.Where(x => x.PK_SEQ == pk).First(); contents.Add(ct); } _sendContentList(db, contents, mess.sender.id); //json = fbTemplate.ButtonTemplate(mess.sender.id, "Bấm nút bên dưới để tiếp tục bài học nhé", new List<ResponseButtons>() { // new ResponseButtons() // { // type = "postback", // title = "Tiếp tục bài học", // payload = "" // } //}); }
private void _help(OOPEZZ_DBEntities db, BotMessageReceivedRequest botMessage) { String json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Chào bạn"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "OOPEzz là bot chat hỗ trợ bạn học môn lập trình hướng đối tượng bằng ngôn ngữ C++ của trường Đại học Công Thông tin"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Chatbot có thể giúp bạn trả lời những câu hỏi xung quanh C++, OOP. Bạn chỉ cần hỏi và mình sẽ tìm câu trả lời phù hợp nhất"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Để xem được menu bài học chat [menu]"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Để hiện lại bảng hướng dẫn chat [help]"); _post(json); json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Để xem tiến độ học tập chat [process] (upcomming)"); _post(json); json = fbTemplate.ButtonTemplate(botMessage.sender.id, "Xem bài đầu tiên", new List <ResponseButtons> { new ResponseButtons { payload = "LESSON_1", type = "postback", title = "Xem bài 1" } }); _post(json); }
private void _postGroupContentListFromLS(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess) { char[] spa = { '_' }; String ls = mess.postback.payload.Split(spa)[1]; int ls_pk = int.Parse(ls); List <GROUP_CONTENT> listgcontent = db.GROUP_CONTENT.Where(x => x.LESSION_FK == ls_pk).ToList(); _sendGroupContentList(db, listgcontent, mess.sender.id); }
private void _postAnswerfromQuestion(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess) { char[] spa = { '_' }; String content = mess.postback.payload.Split(spa)[2]; int content_pk = int.Parse(content); QUESTION qs = db.QUESTION.Where(x => x.PK_SEQ == content_pk).First(); _postQuestion(db, qs, mess); }
private void _postContentformContent(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess) { char[] spa = { '_' }; String content = mess.postback.payload.Split(spa)[1]; int content_pk = int.Parse(content); CONTENT ct = db.CONTENT.Where(x => x.PK_SEQ == content_pk).First(); List <CONTENT> contents = db.CONTENT.Where(x => x.GROUP_CONTENT_FK == ct.GROUP_CONTENT_FK && x.STT >= ct.STT).OrderBy(x => x.STT).ToList(); _postContentList(db, contents, mess.sender.id); }
public static string replaceKeyword(OOPEZZ_DBEntities db, string str) { List <KEYWORD> keywords = db.KEYWORD.Where(x => x.STATUS == 1).OrderByDescending(x => x.ORDER).ToList(); foreach (KEYWORD kw in keywords) { str = str.Replace(kw.EN.ToLower().Trim(), kw.VI.ToLower().Trim()); } return(str); }
private void _postContentfromGroup(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess) { char[] spa = { '_' }; String gcontent = mess.postback.payload.Split(spa)[1]; int gcontent_pk = int.Parse(gcontent); GROUP_CONTENT groupcontent = db.GROUP_CONTENT.Where(x => x.PK_SEQ == gcontent_pk).First(); List <CONTENT> lcontent = db.CONTENT.Where(x => x.GROUP_CONTENT_FK == groupcontent.PK_SEQ).OrderBy(x => x.STT).ToList(); _postContentList(db, lcontent, mess.sender.id); }
private void _postLession(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess) { char[] spa = { '_' }; String lesson = mess.postback.payload.Split(spa)[1]; int lessonpkseq = int.Parse(lesson); LESSION lession = db.LESSION.Where(x => x.PK_SEQ == lessonpkseq).FirstOrDefault(); GROUP_CONTENT gcontent = db.GROUP_CONTENT.Where(x => x.LESSION_FK == lession.PK_SEQ).OrderBy(x => x.PK_SEQ).First(); _postContentfromGroup(db, mess, gcontent); }
private void _postRelateGroupcontent(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess, List <String> strques, QUESTION linkedques = null) { char[] charac = { '-' }; List <GROUP_CONTENT> gcontents = db.GROUP_CONTENT.ToList(); List <GROUP_CONTENT> gresult = new List <GROUP_CONTENT>(); foreach (GROUP_CONTENT goupcontent in gcontents) { List <String> gStrStr = Ulti.replaceAEIOU(goupcontent.NAME.ToLower()).Split(charac).ToList(); int resultLength = Ulti.LevenshteinDistance(strques, gStrStr); if (Ulti.calculateResultisAvaiable(resultLength, gStrStr)) { gresult.Add(goupcontent); } } //Tìm xong => post //post group content if (gresult.Count > 0) { String json; foreach (GROUP_CONTENT gcontent in gresult) { json = fbTemplate.ButtonTemplate(mess.sender.id, "Nội dung tương tự :" + gcontent.NAME, new List <ResponseButtons> { new ResponseButtons() { type = "postback", title = "Xem", payload = "GROUPCONTENT_" + gcontent.PK_SEQ } }); _post(json); } } else { if (linkedques != null) { string json = fbTemplate.SimpleTextTemplate(mess.sender.id, "Câu hỏi tương tự "); _post(json); _postQuestion(db, linkedques, mess); } else { _postNoQuest(mess); } } }
private void _sendGroupContentList(OOPEZZ_DBEntities db, List <GROUP_CONTENT> lgcontent, String senderid) { foreach (GROUP_CONTENT gcontent in lgcontent) { String json = fbTemplate.ButtonTemplate(senderid, gcontent.NAME, new List <ResponseButtons>() { new ResponseButtons() { type = "postback", title = "xem", payload = "GROUPCONTENT_" + gcontent.PK_SEQ } }); _post(json); } }
private void _postQuestion(OOPEZZ_DBEntities db, QUESTION question, BotMessageReceivedRequest mess) { String json = ""; //json = fbTemplate.SimpleTextTemplate(mess.sender.id, question.QUESTION_TEXT); //_post(json); json = fbTemplate.ButtonTemplate(mess.sender.id, question.QUESTION_TEXT, new List <ResponseButtons>() { new ResponseButtons() { title = "Xem", payload = "ANS_" + question.PK_SEQ, type = "postback" } }); _post(json); }
public void ProgressRequest(BotMessageReceivedRequest botMessage) { //ko có post back tức là câu hỏi hoặc chat lệnh cơ bản if (botMessage.postback == null) { //TIn nhắn thường if (botMessage.message == null || botMessage.message.text == null) { return; } ProgressCommonRequest(botMessage); //botMessage.postback = new BotPostback { payload = botMessage.message.text }; } else { if (botMessage.postback.payload == null) { return; } OOPEZZ_DBEntities db = new OOPEZZ_DBEntities(); if (botMessage.postback.payload.StartsWith("LESSON")) { _postLession(db, botMessage); } if (botMessage.postback.payload.StartsWith("GROUPCONTENT")) { _postContentfromGroup(db, botMessage); } if (botMessage.postback.payload.StartsWith("CONTENT")) { _postContentformContent(db, botMessage); } if (botMessage.postback.payload.StartsWith("ANS_QUES")) { _postAnswerfromQuestion(db, botMessage); } if (botMessage.postback.payload.StartsWith("QUES")) { _postQuestion(botMessage); } db.Dispose(); } }
private void _postAnswer(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess) { char[] spa = { '_' }; String content = mess.postback.payload.Split(spa)[1]; int content_pk = int.Parse(content); ANSWER answer = db.ANSWER.Where(x => x.QUESTION_FK == content_pk).OrderByDescending(x => x.STATUS).First(); String answer_pkseq_contents = answer.ANSWER_TEXT; char[] charac = { '#' }; List <String> pkseqs = answer_pkseq_contents.Split(charac).ToList(); List <CONTENT> contents = new List <CONTENT>(); foreach (String pkseq in pkseqs) { int pk = int.Parse(pkseq); CONTENT ct = db.CONTENT.Where(x => x.PK_SEQ == pk).First(); contents.Add(ct); } _postContentList(db, contents, mess.sender.id); }
private void _lessonmenu2(OOPEZZ_DBEntities db, BotMessageReceivedRequest botMessage) { List <LESSION> lessionlist = db.LESSION.ToList(); string json = fbTemplate.SimpleTextTemplate(botMessage.sender.id, "Danh sách bài học hiện có"); _post(json); foreach (LESSION ls in lessionlist) { json = fbTemplate.ButtonTemplate(botMessage.sender.id, ls.NAME, new List <ResponseButtons> { new ResponseButtons() { type = "postback", title = "Xem", payload = "LESSON_" + ls.PK_SEQ } }); _post(json); } }
public void ProgressCommonRequest(BotMessageReceivedRequest botMessage) { String mess = botMessage.message.text.ToLower(); OOPEZZ_DBEntities db = new OOPEZZ_DBEntities(); try { if (mess.StartsWith("[ques]") || mess.StartsWith("ques")) { _rqQuestion(db, botMessage); } else if (mess.StartsWith("[help]") || mess.StartsWith("help")) { _help(db, botMessage); } else if (mess.StartsWith("[menu]") || mess.StartsWith("menu")) { _lessonmenu2(db, botMessage); } else if (mess.StartsWith("[process]")) { } else { _question(db, botMessage); } } catch (Exception e) { Console.WriteLine("exeption " + e.ToString()); } db.Dispose(); }
private void _postGreeting(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess) { string js = fbTemplate.SimpleTextTemplate(mess.sender.id, "Chào bạn đến với OE Bot"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "Vì đây là lần đầu nên mình sẽ hướng dẫn qua tí"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "OOPEzz là bot chat hỗ trợ bạn học môn lập trình hướng đối tượng bằng ngôn ngữ C++ của trường Đại học Công Thông tin"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "Chatbot có thể giúp bạn trả lời những câu hỏi xung quanh C++, OOP. Bạn chỉ cần hỏi và mình sẽ tìm câu trả lời phù hợp nhất"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "Ví dụ, bạn chỉ cần chat 'hướng đối tượng là gì' thì bot sẽ tự tìm kiếm câu trả lời phù hợp nhất"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "Ngoài ra để đặt câu hỏi cho về bài học hay bất cứ cái gì mà bot chưa giải quyết thỏa đáng chỉ cần chat '[QUES] mình có câu hỏi là'"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "Để xem được danh sách chủ đề chat [menu]"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "Để hiện lại bảng hướng dẫn chat [help]"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "Để xem tiến độ học tập chat [process] (upcomming)"); _post(js); js = fbTemplate.SimpleTextTemplate(mess.sender.id, "-------"); _post(js); }
private void _question(OOPEZZ_DBEntities db, BotMessageReceivedRequest botMessage) { String mess = botMessage.message.text.ToLower(); mess = Ulti.removeCommonstr(mess); mess = mess.Trim(); mess = Ulti.replaceKeyword(db, mess); mess = Ulti.replaceAEIOU(mess); char[] charac = { '-' }; List <String> strques = mess.Split(charac).ToList(); List <QUESTION> questionlist = db.QUESTION.ToList(); int maxCompare = 10000; QUESTION result = null; foreach (QUESTION question in questionlist) { List <String> ques = Ulti.replaceAEIOU(question.QUESTION_TEXT.ToLower()).Split(charac).ToList(); int resultLength = Ulti.LevenshteinDistance(strques, ques); if (resultLength < maxCompare) { maxCompare = resultLength; result = question; } } if (!Ulti.calculateResultisAvaiable(maxCompare, Ulti.replaceAEIOU(result.QUESTION_TEXT.ToLower()).Split(charac).ToList()) || result == null) { _postRelateGroupcontent(db, botMessage, strques); } else { _postRelateGroupcontent(db, botMessage, strques, result); } }
private void _postContentfromGroup(OOPEZZ_DBEntities db, BotMessageReceivedRequest mess, GROUP_CONTENT gcontetn) { List <CONTENT> lcontent = db.CONTENT.Where(x => x.GROUP_CONTENT_FK == gcontetn.PK_SEQ).OrderBy(x => x.STT).ToList(); _postContentList(db, lcontent, mess.sender.id); }