示例#1
0
        public static void Register(HttpConfiguration config)
        {
            // Json settings
            config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver  = new CamelCasePropertyNamesContractResolver();
            config.Formatters.JsonFormatter.SerializerSettings.Formatting        = Formatting.Indented;
            JsonConvert.DefaultSettings = () => new JsonSerializerSettings()
            {
                ContractResolver  = new CamelCasePropertyNamesContractResolver(),
                Formatting        = Newtonsoft.Json.Formatting.Indented,
                NullValueHandling = NullValueHandling.Ignore,
            };

            // Web API configuration and services
            config.EnableCors();

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            // Message routing
            MessageRouterManager       = new MessageRouterManager(new LocalRoutingDataManager());
            MessageRouterResultHandler = new MessageRouterResultHandler();
            CommandMessageHandler      = new CommandMessageHandler(MessageRouterManager, MessageRouterResultHandler);
            BackChannelMessageHandler  = new BackChannelMessageHandler(MessageRouterManager.RoutingDataManager);
        }
示例#2
0
        private static void SubscribeCommand <TMessage, THandler>(Processor processor,
                                                                  string handlerName,
                                                                  Func <THandler, ICommand <TMessage>, Task> handlerFunc,
                                                                  THandler instance = null)
            where THandler : class
        {
            var handler = new CommandMessageHandler <TMessage, THandler>(handlerFunc, instance);

            processor.RegisterMessageHandler <TMessage>(handlerName, handler);
        }
        public BotManager(
            IKernel kernel,
            IBotConfiguration config,
            IAdminChatManager adminChatManager,
            IPipeLine <IUpdateHandler, Update> updatePipeLine,
            ILogger logger,
            CommandMessageHandler commandMessageHandler)
        {
            _config                = config;
            _logger                = logger;
            _adminChatManager      = adminChatManager;
            _updatePipeLine        = updatePipeLine;
            _commandMessageHandler = commandMessageHandler;

            Telegram = string.IsNullOrEmpty(_config.Proxy.Host)
                ? new TelegramBotClient(_config.ApiToken)
                : new TelegramBotClient(_config.ApiToken, new WebProxy(_config.Proxy.Host, _config.Proxy.Port));
            _receiver = new QueuedUpdateReceiver(Telegram);
            Telegram.OnReceiveError        += Telegram_OnReceiveError;
            Telegram.OnReceiveGeneralError += Telegram_OnReceiveGeneralError;
        }
示例#4
0
        /// <summary>
        /// Creates and sets up the instances required for message routing.
        /// </summary>
        public static void InitializeMessageRouting()
        {
            Settings = new BotSettings();
            string connectionString = Settings[BotSettings.KeyRoutingDataStorageConnectionString];
            IRoutingDataManager routingDataManager = null;

            if (string.IsNullOrEmpty(connectionString))
            {
                System.Diagnostics.Debug.WriteLine($"WARNING!!! No connection string found - using {nameof(LocalRoutingDataManager)}");
                routingDataManager = new LocalRoutingDataManager();
            }
            else
            {
                System.Diagnostics.Debug.WriteLine($"Found a connection string - using {nameof(AzureTableStorageRoutingDataManager)}");
                routingDataManager = new AzureTableStorageRoutingDataManager(connectionString);
            }

            MessageRouterManager       = new MessageRouterManager(routingDataManager);
            MessageRouterResultHandler = new MessageRouterResultHandler(MessageRouterManager);
            CommandMessageHandler      = new CommandMessageHandler(MessageRouterManager, MessageRouterResultHandler);
            BackChannelMessageHandler  = new BackChannelMessageHandler(MessageRouterManager.RoutingDataManager);
        }
示例#5
0
        public static void Register(HttpConfiguration config)
        {
            // Json settings
            config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver  = new CamelCasePropertyNamesContractResolver();
            config.Formatters.JsonFormatter.SerializerSettings.Formatting        = Formatting.Indented;
            JsonConvert.DefaultSettings = () => new JsonSerializerSettings()
            {
                ContractResolver  = new CamelCasePropertyNamesContractResolver(),
                Formatting        = Newtonsoft.Json.Formatting.Indented,
                NullValueHandling = NullValueHandling.Ignore,
            };

            // Web API configuration and services
            config.EnableCors();
            // Web API configuration and services
            // Configure Web API to use only bearer token authentication.
            //config.SuppressDefaultHostAuthentication();
            // config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

            // Web API routes
            config.MapHttpAttributeRoutes();
            config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/octet-stream"));
            config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("multipart/form-data"));
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            // Message routing
            MessageRouterManager       = new MessageRouterManager(new LocalRoutingDataManager());
            MessageRouterResultHandler = new MessageRouterResultHandler();
            CommandMessageHandler      = new CommandMessageHandler(MessageRouterManager, MessageRouterResultHandler);
            BackChannelMessageHandler  = new BackChannelMessageHandler(MessageRouterManager.RoutingDataManager);
        }
示例#6
0
 public static void OnCommandMessage(CommandEventArgs e)
 {
     CommandMessageHandler?.Invoke(null, e);
 }