コード例 #1
0
        public static ElsaOptionsBuilder AddConductorActivities(this ElsaOptionsBuilder elsa, Action <ConductorOptions>?configureOptions = default, Action <IHttpClientBuilder>?configureHttpClient = default)
        {
            var services = elsa.Services;

            if (configureOptions != null)
            {
                services.Configure(configureOptions);
            }

            services.ConfigureCommandsHttpClient(configureHttpClient);
            services.ConfigureTasksHttpClient(configureHttpClient);

            services
            .AddCommandsProvider <OptionsCommandsProvider>()
            .AddEventsProvider <OptionsEventsProvider>()
            .AddTasksProvider <OptionsTasksProvider>()
            .AddActivityTypeProvider <CommandActivityTypeProvider>()
            .AddActivityTypeProvider <EventActivityTypeProvider>()
            .AddActivityTypeProvider <TaskActivityTypeProvider>()
            .AddBookmarkProvider <EventBookmarkProvider>()
            .AddBookmarkProvider <TaskBookmarkProvider>()
            .AddSingleton <Scoped <IEnumerable <ICommandsProvider> > >()
            .AddSingleton <Scoped <IEnumerable <IEventsProvider> > >()
            .AddSingleton <Scoped <IEnumerable <ITasksProvider> > >();

            elsa
            .AddActivitiesFrom <SendCommand>()
            .AddCompetingConsumer <SendCommandConsumer, SendCommandModel>("ConductorCommand")
            .AddCompetingConsumer <RunTaskConsumer, RunTaskModel>("ConductorCommand");

            return(elsa);
        }
コード例 #2
0
        private static ElsaOptionsBuilder AddCoreActivities(this ElsaOptionsBuilder options)
        {
            if (!options.WithCoreActivities)
            {
                return(options);
            }

            return(options
                   .AddActivitiesFrom <ElsaOptions>()
                   .AddActivitiesFrom <CompositeActivity>());
        }
コード例 #3
0
        public static ElsaOptionsBuilder AddTelnyx(
            this ElsaOptionsBuilder elsaOptions,
            Action <TelnyxOptions>?configure = default,
            Func <IServiceProvider, HttpClient>?httpClientFactory  = default,
            Action <IHttpClientBuilder>?configureHttpClientBuilder = default)
        {
            var services = elsaOptions.Services;

            // Configure Telnyx.
            var telnyxOptions = services.GetTelnyxOptions();

            configure?.Invoke(telnyxOptions);

            // Activities.
            elsaOptions
            .AddActivitiesFrom <AnswerCall>();

            // Services.
            services
            .AddActivityTypeProvider <NotificationActivityTypeProvider>()
            .AddBookmarkProvidersFrom <NotificationBookmarkProvider>()
            .AddNotificationHandlers(typeof(TriggerWebhookActivities))
            .AddJavaScriptTypeDefinitionProvider <TelnyxTypeDefinitionProvider>()
            .AddScoped <IWebhookHandler, WebhookHandler>()
            .AddSingleton <IWebhookFilterService, WebhookFilterService>()
            .AddSingleton <IWebhookFilter, AttributeBasedWebhookFilter>()
            .AddSingleton <IWebhookFilter, CallInitiatedWebhookFilter>()
            .AddScoped(telnyxOptions.ExtensionProviderFactory);

            // Liquid.
            services.RegisterLiquidTag(parser => parser.RegisterEmptyTag("telnyx_client_state", TelnyxClientStateTag.WriteToAsync));

            // Telnyx API Client.
            var refitSettings = CreateRefitSettings();

            services
            .AddApiClient <ICallsApi>(refitSettings, httpClientFactory, configureHttpClientBuilder)
            .AddTransient <ITelnyxClient, TelnyxClient>();

            return(elsaOptions);
        }