public async Task <MatchedMessage> ProcessAsync(string username, AnalysisResult result, string input) { input = TransformCommandToInput(input); List <Tweet> messages = _memoryCache.Get(MESSAGES_TAG) as List <Tweet>; if (messages == null) { messages = await _twitterRepository .GetTweetContentAsync(); _memoryCache.Add(MESSAGES_TAG, messages, DateTimeOffset.UtcNow.AddHours(1)); } MatchedMessage matchedMessage = ProcessGreetingsMessage(messages, username, result, input); if (matchedMessage == null) { matchedMessage = await PredictWithLUIS(messages, username, input); } if (matchedMessage == null) { matchedMessage = ProcessDefaultMessage(messages, username, result, input); } return(matchedMessage); }