Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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;
 }
Beispiel #6
0
 public void SetMessageHandler(BotMessageHandler msgHandler)
 {
     MessageHandler = msgHandler;
 }