public async Task <IMessageReceiver> CreateAsync(IServiceProvider serviceProvider, IDictionary <string, object> settings) { string outState = null; var builder = new TextcMessageReceiverBuilder(serviceProvider.GetService <Sender.IMessagingHubSender>()); if (settings != null) { var textcMessageReceiverSettings = TextcMessageReceiverSettings.ParseFromSettings(settings); if (textcMessageReceiverSettings.Commands != null) { builder = SetupCommands( serviceProvider, settings, textcMessageReceiverSettings.Commands, builder); } if (textcMessageReceiverSettings.ScorerType != null) { builder = await SetupScorerAsync( serviceProvider, settings, textcMessageReceiverSettings.ScorerType, builder).ConfigureAwait(false); } if (textcMessageReceiverSettings.TextSplitterType != null) { builder = await SetupTextSplitterAsync( serviceProvider, settings, textcMessageReceiverSettings.TextSplitterType, builder).ConfigureAwait(false); } if (textcMessageReceiverSettings.Context != null) { builder = await SetupContextProviderAsync( serviceProvider, settings, textcMessageReceiverSettings.Context, builder).ConfigureAwait(false); } if (textcMessageReceiverSettings.MatchNotFoundReturnText != null) { builder = builder.WithMatchNotFoundReturn(textcMessageReceiverSettings.MatchNotFoundReturnText); } if (textcMessageReceiverSettings.MatchNotFoundReturn != null) { builder = builder.WithMatchNotFoundReturn(textcMessageReceiverSettings.MatchNotFoundReturn.ToDocument()); } if (textcMessageReceiverSettings.ExceptionHandlerType != null) { builder = await SetupExceptionHandlerAsync( serviceProvider, settings, textcMessageReceiverSettings.ExceptionHandlerType, builder).ConfigureAwait(false); } if (textcMessageReceiverSettings.PreProcessorTypes != null) { builder = await SetupTextPreprocessorsAsync( serviceProvider, settings, textcMessageReceiverSettings, builder).ConfigureAwait(false); } outState = textcMessageReceiverSettings.OutState; } var stateManager = serviceProvider.GetService <IStateManager>(); return(new SetStateIfDefinedMessageReceiver(builder.Build(), stateManager, outState)); }
private static async Task <TextcMessageReceiverBuilder> SetupTextPreprocessorsAsync(IServiceProvider serviceProvider, IDictionary <string, object> settings, TextcMessageReceiverSettings textcMessageReceiverSettings, TextcMessageReceiverBuilder builder) { foreach (var textPreprocessorType in textcMessageReceiverSettings.PreProcessorTypes) { var textPreprocessor = await Bootstrapper.CreateAsync <ITextPreprocessor>( textPreprocessorType, serviceProvider, settings, TypeResolver.Instance).ConfigureAwait(false); builder = builder.AddTextPreprocessor(textPreprocessor); } return(builder); }