/// <inheritdoc /> public ParsedCommandRequest Parse(Activity activity) { string commandRequestText = RemoveRecipientMention(activity); logger.LogInformation("Parsing command request '{0}'", commandRequestText); ParsedCommandRequest parseResult = null; Match match = CommandRegex.Match(commandRequestText); if (match.Success) { string name = match.Groups[NameGroup].Value; string arguments = match.Groups[ArgumentsGroup]?.Value ?? string.Empty; parseResult = new ParsedCommandRequest(name, arguments); logger.LogInformation("Command request parsed to command '{0}' with arguments '{1}'", name, arguments); } if (parseResult == null) { logger.LogWarning("Command request '{0}' cannot be parsed", commandRequestText); } return(parseResult); }
public async Task <OkResult> Post([FromBody] Activity activity) { if (activity.Type == ActivityTypes.Message) { DecodeActivityText(activity); string replyText = null; ParsedCommandRequest parsedCommandRequest = commandRequestParser.Parse(activity); if (parsedCommandRequest != null) { IBotCommand command = commandSelector.GetCommand(parsedCommandRequest.Name); if (command != null) { ExecutionResult <string> executionResult = await command.ExecuteAsync(activity, parsedCommandRequest.Arguments); replyText = executionResult.IsSuccess ? executionResult.Entity : executionResult.ErrorMessage; } } if (replyText == null) { replyText = "Sorry, I don't understand you :("; } logger.LogInformation("Replying with '{0}'", replyText); await messageProcessor.ReplyAsync(activity, replyText, CancellationToken.None); } return(Ok()); }