예제 #1
0
        public Tuple <Command, IAliceRequestHandler> FindOrDefault(string userMessage)
        {
            Command command = null;
            IAliceRequestHandler handler = null;

            for (int index = 0; index < AliceContext.Current.Handlers.Count; index++)
            {
                IAliceRequestHandler currentHandler = AliceContext.Current.Handlers[index];
                command = Find(userMessage, currentHandler);

                if (command != null)
                {
                    handler = currentHandler;
                    break;
                }
            }

            if (command == null)
            {
                handler = AliceContext.Current.Handlers[0];
                command = CommandFinder.GetDefault();
            }

            Tuple <Command, IAliceRequestHandler> result = new Tuple <Command, IAliceRequestHandler>(command, handler);

            return(result);
        }
예제 #2
0
        public void Register(IAliceRequestHandler handler)
        {
            if (_registeredHandlers == null)
            {
                _registeredHandlers = new List <IAliceRequestHandler>();
            }

            _registeredHandlers.Add(handler);
        }
예제 #3
0
        private Command Find(string userMessage, IAliceRequestHandler handler)
        {
            AliceCommandRepository repository;

            repository = new AliceCommandRepository(handler.RequestsDataFile);
            IList <Command> commands = repository.List();
            Command         command  = Find(userMessage, commands);

            return(command);
        }
예제 #4
0
        private IAliceResponse ProcessMessage(string userMessage)
        {
            userMessage = CleanupRequestMessage(userMessage);

            CommandFinder finder = new CommandFinder();
            Tuple <Command, IAliceRequestHandler> tuple;

            tuple = finder.FindOrDefault(userMessage);

            Command command = tuple.Item1;
            IAliceRequestHandler handler   = tuple.Item2;
            CommandProcessor     processor = new CommandProcessor(handler, command, userMessage);
            IAliceResponse       response  = processor.Process();

            return(response);
        }
예제 #5
0
 public CommandProcessor(IAliceRequestHandler handler, Command command, string userMessage)
 {
     _handler     = handler;
     _command     = command;
     _userMessage = userMessage;
 }