using ChatApi.Services.Classifier; using ChatApi.Services.ClassifyHandlers; namespace ChatApi.Services { public enum EnumClassification { Company=0, Estimate=1, BotRHCall = 2, Chat = 3, CantDetect=4 } /// /// enum /// public class TextClassifier { private readonly TextFilter _textFilter; private readonly ClassifierPersistence _classifierPersistence; public TextClassifier(TextFilter textFilter, ClassifierPersistence classifierPersistence) { _textFilter = textFilter; _classifierPersistence = classifierPersistence; } public async Task ClassifyQuestion(string sessionId, string question) { var state = _classifierPersistence.GetState(sessionId); if (state!=null && (state.ClassificationType == EnumClassificationType.Stay)) { return state.Classification; } else { var classifyCompany = new ClassifyCompany(); var classifyChat = new ClassifyChat(); var botChat = new ClassifyBotRHCall(); classifyCompany .SetNext(botChat) .SetNext(classifyChat); var classify = classifyCompany.Handle(question); _classifierPersistence.SaveState(new ClassifierSate { Id = sessionId, UsuarioId = sessionId, Classification = classify, DhInicio = DateTime.Now, ClassificationType = botChat.MyClassification == classify ? EnumClassificationType.Stay : EnumClassificationType.Free }); return classify; } } } }