Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }