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); }
private ResponseDataModel DecideStoryCommand(BotMessageReceivedRequest message, User user) { if (user.SavedState == MainMenuStateMachine.State.ListStory) { int index; if (Int32.TryParse(message.message.text, out index)) { return(_stateMachine.OnChoosingStory(user, index)); } else { return(Constants.NOT_AVAILABLE_ERROR); } } else if (user.SavedState == MainMenuStateMachine.State.ChooseName) { return(_stateMachine.OnGivingName(user, message.message.text)); } else if (user.SavedState == MainMenuStateMachine.State.ChoosePrimaryAttribute) { int attribute; if (Int32.TryParse(message.message.text, out attribute)) { return(_stateMachine.OnGivingPrimaryAttribute(user, (AttributeType)attribute - 1)); } else { return(Constants.NOT_AVAILABLE_ERROR); } } return(Constants.NOT_AVAILABLE_ERROR); }
//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 SendURL(BotMessageReceivedRequest userMessage) { var msg = "https://loremflickr.com/320/240"; var json = $@" {{recipient: {{ id: {userMessage.Sender.Id}}},message: {{text: ""{msg}"" }}}}"; PostRaw("https://graph.facebook.com/v2.6/me/messages?access_token=" + _tokenPage, 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 FirstMessage(BotMessageReceivedRequest userMessage) { var msg = "Введите ключевые слова для отработки бота: Фото, Видео, Кнопка, Ссылка, КнопкаСсылка, НомерТелефона, Опросник"; var json = $@" {{recipient: {{ id: {userMessage.Sender.Id}}},message: {{text: ""{msg}"" }}}}"; PostRaw("https://graph.facebook.com/v2.6/me/messages?access_token=" + _tokenPage, json); }
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 _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 _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 _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); }
private void SendButtonURL(BotMessageReceivedRequest userMessage) { /* * "attachment":{ * "type":"template", * "payload":{ * "template_type":"button", * "text":"Try the URL button!", * "buttons":[ * { * "type":"web_url", * "url":"https://loremflickr.com/320/240", * "title":"URL Button", * "webview_height_ratio": "full" * } * ] * } * } */ dynamic messageData = new JObject(); messageData.attachment = new JObject(); messageData.attachment.type = "template"; messageData.attachment.payload = new JObject(); messageData.attachment.payload.template_type = "generic"; messageData.attachment.payload.elements = new JArray( new JObject( new JProperty("title", "hola"), new JProperty("subtitle", "Mundo"), new JProperty("buttons", new JArray( new JObject( new JProperty("type", "element_share") ) ) ) ) ); var msg1 = "https://loremflickr.com/320/240"; var json1 = $@" {{recipient: {{ id: {userMessage.Sender.Id}}},message: {{text: ""{msg1}"" }}}}"; var msg = " attachment:{ type : template, payload:{template_type:button, text:Try the URL button!, buttons :[ { type:web_url, url:https://loremflickr.com/320/240, title:URL Button, webview_height_ratio: full } ] } }"; var json = $@" {{recipient: {{ id: {userMessage.Sender.Id}}}, message: {{{messageData}}}}}"; PostRaw("https://graph.facebook.com/v2.6/me/messages?access_token=" + _tokenPage, json); }
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 _postQuestion(BotMessageReceivedRequest mess) { char[] spa = { '_' }; String next = mess.postback.payload.Split(spa)[2] + "_" + mess.postback.payload.Split(spa)[3]; String json = fbTemplate.ButtonTemplate(mess.sender.id, "Bạn muốn hỏi gì nào.Khi nào hỏi xong 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 = next } }); _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 _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); } }
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 GetResponseMessage(BotMessageReceivedRequest message, User user) { ResponseDataModel msg; switch (message.message.text.ToLower().Trim()) { case Constants.INFO: if (user.SavedState == MainMenuStateMachine.State.MainMenu) { msg = _stateMachine.OnInfo(); } else { msg = Constants.DEFAULT_ERROR; } break; case Constants.LIST_STORIES: if (user.SavedState == MainMenuStateMachine.State.MainMenu) { msg = _stateMachine.OnStories(); } else { msg = Constants.DEFAULT_ERROR; } break; case Constants.BACK_TO_MAIN_MENU: msg = _stateMachine.OnBackToMainMenu(); break; default: msg = DecideStoryCommand(message, user); break; } //PrepareMessage(msg.text, user.Facebook_id.ToString()); PrepareMessageWithQuickReply(msg.text, msg.quick_replies, user.Facebook_id.ToString()); }
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 _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 _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 _postNoQuest(BotMessageReceivedRequest mess) { String json = fbTemplate.SimpleTextTemplate(mess.sender.id, "Hiện tại không có câu hỏi tương tự, để đặt câu hỏi soạn tin nhắn với từ khóa '[QUES]' ơ đầu tin "); _post(json); }
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); }