private async Task <QAModelInput> GenerateModelInput(Message message, BotMessageHandler handler) { var currentGoal = (await _goalService.GetCurrentGoalBySessionid(message.ChatSessionId))?.Goal; if (currentGoal == null) { return(null); } var currentGoalGuide = _guideService.GetGoalGuide(currentGoal); var contexts = new List <string>(); if (handler == BotMessageHandler.Abstract) { var currentScenarioGuide = _guideService.GetScenarioGuide(currentGoal.ScenarioId); contexts.Add(currentScenarioGuide.Abstract); } else { contexts.Add(currentGoalGuide.Description); } var modelInput = new QAModelInput() { Id = message.Id, Contexts = contexts, Question = message.Text }; return(modelInput); }
public void SetUp() { _messageFilter = new Mock <IMessageFilter>(); var messageFilterFactory = new Mock <IMessageFilterFactory>(); messageFilterFactory.Setup(x => x.GetFilter()).Returns(_messageFilter.Object); _messageProcessorInvoker = new Mock <IMessageProcessorInvoker>(); _logger = new Mock <ILogger <BotMessageHandler> >(); _handler = new BotMessageHandler(messageFilterFactory.Object, _messageProcessorInvoker.Object, _logger.Object); }
public async Task <Message> HandleMessage(Message message, BotMessageHandler handlerType) { if (message == null) { return(null); } switch (handlerType) { case BotMessageHandler.Greeting: return(SayHello(message.ChatSessionId, message.SessionName)); case BotMessageHandler.Question: case BotMessageHandler.Abstract: return(await AnswerQuestion(message, handlerType)); case BotMessageHandler.None: default: return(null); } }
private async Task <Message> AnswerQuestion(Message message, BotMessageHandler handler) { if (message == null) { return(null); } var modelInput = await GenerateModelInput(message, handler); var res = string.Empty; if (modelInput != null && modelInput.Contexts != null && modelInput.Contexts.Count > 0) { res = _nlpService.AskQuestionAboutContext(modelInput); } if (string.IsNullOrEmpty(res)) { res = _botDefaultResponses[BotMessageHandler.Question]; } return(GenerateMessage(message.ChatSessionId, message.SessionName, res)); }
public BotWriter(BotMessageHandler msgHandler) { MessageHandler = msgHandler; }
public void SetMessageHandler(BotMessageHandler msgHandler) { MessageHandler = msgHandler; }