Exemple #1
0
        public static HttpConfiguration MapAlexaBotFramework(this HttpConfiguration httpConfiguration, Action <AlexaBotConfigurationBuilder> configurer)
        {
            var options        = new AlexaBotOptions();
            var optionsBuilder = new AlexaBotConfigurationBuilder(options);

            configurer(optionsBuilder);

            ConfigureAlexaBotRoutes(BuildAdapter());

            return(httpConfiguration);

            AlexaAdapter BuildAdapter()
            {
                var adapter = new AlexaAdapter();

                foreach (var middleware in options.Middleware)
                {
                    adapter.Use(middleware);
                }

                return(adapter);
            }

            void ConfigureAlexaBotRoutes(AlexaAdapter adapter)
            {
                var routes  = httpConfiguration.Routes;
                var baseUrl = options.Paths.BasePath;

                if (!baseUrl.StartsWith("/"))
                {
                    baseUrl = baseUrl.Substring(1, baseUrl.Length - 1);
                }

                if (!baseUrl.EndsWith("/"))
                {
                    baseUrl += "/";
                }

                routes.MapHttpRoute(
                    "Alexa Skill Requests Handler",
                    baseUrl + options.Paths.SkillRequestsPath,
                    defaults: null,
                    constraints: null,
                    handler: new AlexaRequestHandler(adapter, options.AlexaOptions));
            }
        }
 public AlexaBotConfigurationBuilder(AlexaBotOptions alexaBotOptions)
 {
     _options = alexaBotOptions;
 }