Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }
Example #3
0
 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;
		}