public string HandleMessage(SlackMessage message)
        {
            try
            {
                this.unitOfWork.SiteLogs.Add(
                    new SiteLog
                    {
                        DateOfLog = DateTime.Now,
                        Log = string.Format("Question:{0}", JsonConvert.SerializeObject(
                                message,
                                Formatting.Indented)),
                        LogType = LogType.Log
                    });
                this.unitOfWork.SaveChanges();

                var answer = MakePigLatin(message.Text.Replace(message.TriggerWord, string.Empty));

                this.unitOfWork.SiteLogs.Add(
                    new SiteLog
                    {
                        DateOfLog = DateTime.Now,
                        Log = "Answer: " + answer,
                        LogType = LogType.Log
                    });
                this.unitOfWork.SaveChanges();

                return new { text = answer }.ToJson();
            }
            catch (Exception ex)
            {
                this.unitOfWork.SiteLogs.Add(new SiteLog { DateOfLog = DateTime.Now, Log = ex.Message, LogType = LogType.Error });
                this.unitOfWork.SaveChanges();
                throw;
            }
        }
        public string HandleMessage(SlackMessage message)
        {
            try
            {
                this.unitOfWork.SiteLogs.Add(
                    new SiteLog
                    {
                        DateOfLog = DateTime.Now,
                        Log = string.Format("Question:{0}", JsonConvert.SerializeObject(
                                    message,
                                    Formatting.Indented)),
                        LogType = LogType.Log
                    });
                this.unitOfWork.SaveChanges();

                QueryResult queryResult = this.wolframApi.Query(message.Text.Replace(message.TriggerWord, "").Trim());
                var answer = string.Join(" ", queryResult.Pods.Where(pod => pod.Title == "Result").SelectMany(pod => pod.SubPods.Select(subpod => subpod.Plaintext)));
                if (string.IsNullOrWhiteSpace(answer))
                {
                    answer = queryResult.Pods.Select(pod => pod.SubPods.Select(subpod => subpod.Plaintext).FirstOrDefault()).FirstOrDefault();
                }

                this.unitOfWork.SiteLogs.Add(
                    new SiteLog
                    {
                        DateOfLog = DateTime.Now,
                        Log = "Answer: " + JsonConvert.SerializeObject(queryResult, Formatting.Indented),
                        LogType = LogType.Log
                    });
                this.unitOfWork.SaveChanges();

                answer = string.IsNullOrEmpty(answer) ? "I don't seem to know the answer to that" : answer;

                return new { text = answer }.ToJson();
            }
            catch (Exception ex)
            {
                this.unitOfWork.SiteLogs.Add(new SiteLog { DateOfLog = DateTime.UtcNow, Log = ex.Message, LogType = LogType.Error });
                this.unitOfWork.SaveChanges();
                throw;
            }
        }
 public void ProcessRequest(HttpContext context)
 {
     if (!string.IsNullOrEmpty(context.Request.Form["text"]))
     {
         var message = new SlackMessage
                           {
                                             ChannelId = context.Request.Form["channel_id"],
                                             ChannelName = context.Request.Form["channel_name"],
                                             ServiceId = context.Request.Form["service_id"],
                                             TeamDomain = context.Request.Form["team_domain"],
                                             TeamId = context.Request.Form["team_id"],
                                             Text = context.Request.Form["text"],
                                             Timestamp = context.Request.Form["timestamp"],
                                             Token = context.Request.Form["token"],
                                             TriggerWord = context.Request.Form["trigger_word"],
                                             UserId = context.Request.Form["user_id"],
                                             UserName = context.Request.Form["user_name"],
                           };
         context.Response.Write(_slackBot.HandleMessage(message));
     }
 }