Esempio n. 1
0
        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));
        }
Esempio n. 2
0
 public DialogueFrame(EnumActivity activity, string entity = "", object tag = null)
 {
     Activity = activity;
     Entity   = string.Copy(entity);
     Tag      = tag;
 }