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); }
public void Register(IAliceRequestHandler handler) { if (_registeredHandlers == null) { _registeredHandlers = new List <IAliceRequestHandler>(); } _registeredHandlers.Add(handler); }
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); }
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); }
public CommandProcessor(IAliceRequestHandler handler, Command command, string userMessage) { _handler = handler; _command = command; _userMessage = userMessage; }