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); }
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; }
/// <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); }
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); }
public static void OnCommandMessage(CommandEventArgs e) { CommandMessageHandler?.Invoke(null, e); }