private static DialogueFrame AnylizeMessage(string message, HealthBotContext ctx, users dbUser) { EnumActivity ea = EnumActivity.DoNothing; string ent = ""; object tag = null; if (dbUser.chatting != null && dbUser.chatting != "") { ea = EnumActivity.Chatting; ent = message; } else { var txt = FindActivityEntityInTable(message.Replace(",", "").Replace(".", "").Replace(":", "").Split(' '), ctx); if (txt == null) { txt = message; } if (txt == "запиши мои показания") { ea = EnumActivity.ReadMyBiomarkers; tag = FindNextQuestion(ctx, dbUser); if (tag == null) { ent = ctx.system_messages.Find((int)SystemMessages.YouDontHaveBiomarksToTrack).message; } } else if (txt == "загрузи файл") { ea = EnumActivity.LoadFile; //доп контекст не нужен? } else if (txt == "добавь показатели") { ea = EnumActivity.AddBiomarks; } else if (txt == "/start") { ea = EnumActivity.ConversationStart; } else if (txt == "покажи мне график приложения") { ea = EnumActivity.GetPlot; } else if (txt == "введи показатель в приложение") { ea = EnumActivity.SendToApp; } else if (txt == "синхронизируй с приложением") { ea = EnumActivity.ConnectToMobileApp; } else if (txt == "позови человека") { ea = EnumActivity.CallHuman; } else if (txt == "выведи показания") { ea = EnumActivity.PrintBiomarks; } else if (txt == "секретное сообщение") { ea = EnumActivity.SecretMessage; } else if (dbUser.id_last_question != null && dbUser.is_last_question_system.HasValue) { //ответ на запись показаний if (!dbUser.is_last_question_system.Value) { var question = ctx.biomarks.Where(t => t.id == dbUser.id_last_question).FirstOrDefault(); if (question != null) { ent = ParseAnswer(txt, question.format, question.splitter); } if (ent != "") { ea = EnumActivity.Answer; tag = FindNextQuestion(ctx, dbUser, dbUser.id_last_question.Value); } else { ea = EnumActivity.Unknown; ent = ctx.system_messages.Find((int)SystemMessages.ErrorInputBiomark).message; tag = true; } } else { //системное сообщение bool makeNull = false; switch (dbUser.id_last_question) { case (int)SystemMessages.WantToStart: if (txt == "да") { ea = EnumActivity.DoNothing; } else { ea = EnumActivity.Unknown; ent = "Неправильный ответ"; } makeNull = true; break; case (int)SystemMessages.SendBiomark_plot: ea = EnumActivity.SystemAnswer; ent = txt; break; case (int)SystemMessages.SendBiomark_record: ea = EnumActivity.SystemAnswer; ent = txt; break; case (int)SystemMessages.SendBiomarkValue_record: ea = EnumActivity.SystemAnswer; ent = txt; break; case (int)SystemMessages.SendToken: ea = EnumActivity.SystemAnswer; ent = txt; break; case (int)SystemMessages.YouveEnteredToken: if (txt == "да") { ea = EnumActivity.SystemAnswer; ent = txt; } else if (txt == "нет") { ea = EnumActivity.DoNothing; } else { ea = EnumActivity.Unknown; ent = "Ошибка при вводе. Повторите снова"; } break; case (int)SystemMessages.PleaseListBiomarks: ea = EnumActivity.SystemAnswer; ent = txt; break; case (int)SystemMessages.WhatPeriod: ea = EnumActivity.SystemAnswer; ent = txt; break; } if (ea == EnumActivity.DoNothing || ea == EnumActivity.Unknown) { dbUser.is_last_question_system = null; dbUser.id_last_question = null; } } } else { ea = EnumActivity.Unknown; } } return(new DialogueFrame(ea, ent, tag)); }
public DialogueFrame(EnumActivity activity, string entity = "", object tag = null) { Activity = activity; Entity = string.Copy(entity); Tag = tag; }