/// <summary> /// Maps various endpoint handlers for the <see cref="ServiceCollectionExtensions.AddBot{TBot}(IServiceCollection, Action{BotFrameworkOptions})">registered bot</see> into the request execution pipeline. /// </summary> /// <param name="appicationBuilder">The <see cref="IApplicationBuilder"/>.</param> /// <param name="configurePaths">A callback to configure the paths that determine where the endpoints of the bot will be exposed.</param> /// <returns>A reference to this instance after the operation has completed.</returns> /// <seealso cref="ServiceCollectionExtensions.AddBot{TBot}(IServiceCollection, Action{BotFrameworkOptions})"/> /// <seealso cref="BotFrameworkPaths"/> public static IApplicationBuilder UseBotFrameworkSlack(this IApplicationBuilder applicationBuilder, Action <BotFrameworkPathsSlack> configurePaths) { if (applicationBuilder == null) { throw new ArgumentNullException(nameof(applicationBuilder)); } if (configurePaths == null) { throw new ArgumentNullException(nameof(configurePaths)); } var options = applicationBuilder.ApplicationServices.GetRequiredService <IOptions <BotFrameworkOptions> >().Value; var paths = new BotFrameworkPathsSlack(); configurePaths(paths); var slackCommandAdapter = new SlackCommandAdapter(options.CredentialProvider, options.ConnectorClientRetryPolicy); applicationBuilder.Map( paths.BasePath + paths.SlashCommandsPath, botActivitiesAppBuilder => botActivitiesAppBuilder.Run(new CommandMessageHandler(slackCommandAdapter).HandleAsync)); return(applicationBuilder); }
protected override async Task ProcessMessageRequestAsync(HttpRequest request, SlackCommandAdapter slackCommandAdapter, Func <ITurnContext, Task> botCallbackHandler) { var command = default(Command); using (var bodyReader = new JsonTextReader(new StreamReader(request.Body, Encoding.UTF8))) { command = CommandMessageHandlerBase.BotMessageSerializer.Deserialize <Command>(bodyReader); } await slackCommandAdapter.ProcessCommand( request.Headers["Authorization"], command, botCallbackHandler); }
public CommandMessageHandler(SlackCommandAdapter slackCommandAdapter) : base(slackCommandAdapter) { }
/// <summary> /// Creates a context object. /// </summary> /// <param name="adapter">The adapter creating the context.</param> /// <param name="activity">The incoming activity for the turn; /// or <c>null</c> for a turn for a proactive message.</param> /// <exception cref="ArgumentNullException"><paramref name="activity"/> or /// <paramref name="adapter"/> is <c>null</c>.</exception> /// <remarks>For use by bot adapter implementations only.</remarks> public CommandContext(SlackCommandAdapter adapter, Command command) { _adapter = adapter ?? throw new ArgumentNullException(nameof(adapter)); _command = command ?? throw new ArgumentNullException(nameof(command)); }
protected abstract Task ProcessMessageRequestAsync(HttpRequest request, SlackCommandAdapter slackCommandAdapter, Func<ITurnContext, Task> botCallbackHandler));
public CommandMessageHandlerBase(SlackCommandAdapter slackCommandAdapter) { _slackCommandAdapter = slackCommandAdapter; }