public virtual async Task <HttpResponseMessage> Post([FromBody] Activity activity) { if (activity != null) { using (MathBotDataContext dbContext = new MathBotDataContext()) { ActivityModel model = new ActivityModel(); model.Activity = activity.ToJson(); dbContext.Activities.Add(model); await dbContext.SaveChangesAsync(); } string message = activity.Text; string _fullText = activity.Text; var _tokens = _fullText.GetHasTags(); var _emails = _fullText.GetEmails(); if (activity.Type == ActivityTypes.Message) { StateClient sc = activity.GetStateClient(); BotData userData = sc.BotState.GetPrivateConversationData(activity.ChannelId, activity.Conversation.Id, activity.From.Id); await Conversation.SendAsync(activity, () => new RootDialog()); } else { HandleSystemMessage(activity); } } return(new HttpResponseMessage(System.Net.HttpStatusCode.Accepted)); }
public string SearchInDictionary(string text) { string _word = text.ToLower(); using (MathBotDataContext dbContext = new MathBotDataContext()) { var _result = dbContext.Dictionaries.Where(t => t.English.ToLower().Contains(_word)); if (_result != null) { return(dbContext.Dictionaries .Where(t => t.English.ToLower().Contains(_word)) .Select(t => t.Vietnameses) .FirstOrDefault()); } else if (dbContext.Dictionaries.Where(t => t.Vietnameses.ToLower().Contains(_word)) != null) { return(dbContext.Dictionaries .Where(t => t.Vietnameses.ToLower().Contains(_word)) .Select(t => t.English) .FirstOrDefault()); } else { return(string.Empty); } } }
public List <string> Search(string[] keywords) { List <string> _urlsResult = new List <string>(); foreach (string _keyword in keywords) { using (MathBotDataContext dbContext = new MathBotDataContext()) { var _urls = dbContext.Urls.Where(t => t.Url.ToLower() .Contains(_keyword.ToLower())) .Select(t => t.Url).ToList(); _urlsResult.AddRange(_urls); } } return(_urlsResult.Distinct().ToList()); }
public async Task ProcessMessageAsync(IDialogContext context, IMessageActivity message) { UserMessage userText = new UserMessage(message.Text); if (userText.Type == UserMessageType.Url) { UrlModel url = new UrlModel(userText.Text); if (url.Ping()) { using (MathBotDataContext dbContext = new MathBotDataContext()) { if (!dbContext.Urls.Select(t => t.Url).Contains(url.Url)) { try { dbContext.Urls.Add(url); await dbContext.SaveChangesAsync(); await BotTalk(context, MakeBotMessage(userText)); } catch (Exception ex) { await BotTalk(context, ex.Message); } } else { await BotTalk(context, url.Url + " is exits"); } } } return; } else if (userText.Type == UserMessageType.MathExpression) { MathEngine mathEngine = new MathEngine(); string _result = mathEngine.Calc(userText.Text); await BotTalk(context, _result); return; } else if (userText.Type == UserMessageType.DatabaseCommand) { string command = ""; string sql = userText.Text.GetFromEndTo("#"); string table = userText.Text.NextWords("#")[0]; using (MathBotDataContext dbContext = new MathBotDataContext()) { if (table == "Url") { string lastUrl = dbContext.Urls .OrderByDescending(t => t.CreatedDate) .FirstOrDefault().Url; await BotTalk(context, lastUrl); return; } else { return; } } } else if (userText.Type == UserMessageType.Translate) { await BotTranslate(context, userText); return; } else if (userText.Type == UserMessageType.ChangeCurrency) { if (userText.Text.ToLower().EndsWith("vnd")) { string amount = userText.Text.GetFromBeginTo("?").Trim(); decimal _amount = decimal.Parse(amount); string endToken = userText.Text.GetFromEndTo("?").Trim(); var results = Convertor.CurrencyConvert(_amount, "USD", "VND"); string replyMessage = results; await BotTalk(context, replyMessage); } return; } else if (userText.Text.StartsWith("#vietlott")) { string _url = "http://vietlott.vn/vi/trung-thuong/ket-qua-trung-thuong/"; await BotTalk(context, "Now i'm reading from (url): " + _url); WebPage _page = new WebPage(_url.Trim()); if (_page.HtmlTables != null && _page.HtmlTables.Count > 0) { foreach (var table in _page.HtmlTables) { foreach (var row in table.Rows) { if (row.IsContainsNumber()) { string text = row.ToHtmlDocument().DocumentNode.InnerText; var numbers = text.GetNumbers() .WordsToString(); if (!numbers.IsNullOrEmptyOrWhiteSpace()) { await BotTalk(context, numbers); } } } } } } else if (userText.Type == UserMessageType.Search) { string command = userText.Text; var results = new GoogleServices() .Search(command); var items = results.Items.TakeMax(5); foreach (var item in results.Items) { await BotTalk(context, item.HtmlSnippet); } return; } else if (userText.Type == UserMessageType.ImageSearch) { string command = userText.Text; var results = new GoogleServices() .SearchImage(command); var items = results.Items.TakeMax(5); foreach (var item in results.Items) { await BotTalk(context, item.HtmlSnippet); } return; } else if (userText.Type == UserMessageType.SayGoodbye) { await BotTalk(context, "Goodbye"); return; } else if (userText.Type == UserMessageType.SayHello) { await BotTalk(context, "Hello"); return; } else { await this.SendUnknowMessageAsync(context); } }
private async Task BotTranslate(IDialogContext context, UserMessage userText) { bool isSave = true; string _text = userText.Text.GetFromBeginTo("?").Trim(); string _token = userText.Text.GetFromEndTo("?").Trim(); string messageText = userText.Text.GetFromBeginTo("?").Trim(); var _results = SearchInDictionary(_text); if (_results != null) { isSave = false; await context.PostAsync(_results); return; } else { Translator translator = new Translator(); WordDictionary _newWord = new WordDictionary(); _newWord.CountViews = 0; _newWord.IsRemembered = false; if (_token.IsEnglishLangCode()) { _newWord.English = _text; _newWord.Vietnameses = translator.Translate(_text, "vi", "en"); _newWord.Vietnameses = System.Web.HttpUtility.HtmlDecode(_newWord.Vietnameses); await context.PostAsync(_newWord.Vietnameses); } else if (_token.IsVietnameseLangCode()) { _newWord.Vietnameses = _text; _newWord.English = translator.Translate(_text, "en", "vi"); _newWord.English = System.Web.HttpUtility.HtmlDecode(_newWord.English); await context.PostAsync(_newWord.English); } else { isSave = false; await context.PostAsync("Sorry, i don't understand this language"); return; } if (isSave) { using (MathBotDataContext dbContext = new MathBotDataContext()) { dbContext.Dictionaries.Add(_newWord); try { dbContext.SaveChanges(); return; } catch (Exception ex) { await context.PostAsync(ex.Message); return; } } } } }