61 lines
1.8 KiB
C#
61 lines
1.8 KiB
C#
using ChatApi.Services.Classifier;
|
|
using ChatApi.Services.ClassifyHandlers;
|
|
|
|
namespace ChatApi.Services
|
|
{
|
|
public enum EnumClassification
|
|
{
|
|
Company=0,
|
|
Estimate=1,
|
|
BotRHCall = 2,
|
|
Chat = 3,
|
|
CantDetect=4
|
|
}
|
|
|
|
/// <summary>
|
|
/// enum
|
|
/// </summary>
|
|
public class TextClassifier
|
|
{
|
|
private readonly TextFilter _textFilter;
|
|
private readonly ClassifierPersistence _classifierPersistence;
|
|
|
|
public TextClassifier(TextFilter textFilter, ClassifierPersistence classifierPersistence)
|
|
{
|
|
_textFilter = textFilter;
|
|
_classifierPersistence = classifierPersistence;
|
|
}
|
|
public async Task<EnumClassification> 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;
|
|
}
|
|
}
|
|
}
|
|
}
|