NickSoftware.Switchboard.Extensions.DependencyInjection
0.1.0-preview.52
dotnet add package NickSoftware.Switchboard.Extensions.DependencyInjection --version 0.1.0-preview.52
NuGet\Install-Package NickSoftware.Switchboard.Extensions.DependencyInjection -Version 0.1.0-preview.52
<PackageReference Include="NickSoftware.Switchboard.Extensions.DependencyInjection" Version="0.1.0-preview.52" />
<PackageVersion Include="NickSoftware.Switchboard.Extensions.DependencyInjection" Version="0.1.0-preview.52" />
<PackageReference Include="NickSoftware.Switchboard.Extensions.DependencyInjection" />
paket add NickSoftware.Switchboard.Extensions.DependencyInjection --version 0.1.0-preview.52
#r "nuget: NickSoftware.Switchboard.Extensions.DependencyInjection, 0.1.0-preview.52"
#:package NickSoftware.Switchboard.Extensions.DependencyInjection@0.1.0-preview.52
#addin nuget:?package=NickSoftware.Switchboard.Extensions.DependencyInjection&version=0.1.0-preview.52&prerelease
#tool nuget:?package=NickSoftware.Switchboard.Extensions.DependencyInjection&version=0.1.0-preview.52&prerelease
Switchboard Dependency Injection Extensions
Dependency injection and IoC container extensions for the Switchboard Amazon Connect framework.
⚠️ PREVIEW RELEASE: Part of the Switchboard preview release. APIs may change.
Overview
This package provides Microsoft.Extensions.DependencyInjection integration for the Switchboard framework, enabling:
- Automatic assembly scanning for flow builders and providers
- Middleware pipeline registration
- Configuration binding from appsettings.json
- Service lifetime management
Installation
dotnet add package NickSoftware.Switchboard.Extensions.DependencyInjection --prerelease
This package is typically installed alongside the main Switchboard package:
dotnet add package NickSoftware.Switchboard --prerelease
dotnet add package NickSoftware.Switchboard.Extensions.DependencyInjection --prerelease
Quick Start
Basic Setup
using Switchboard.Extensions.DependencyInjection;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddSwitchboard(options =>
{
options.InstanceName = "MyCallCenter";
options.Region = "us-east-1";
});
var host = builder.Build();
var app = host.Services.GetRequiredService<ISwitchboardApp>();
With Configuration
// Using appsettings.json
builder.Services.AddSwitchboard(builder.Configuration);
// appsettings.json
{
"Switchboard": {
"InstanceName": "MyCallCenter",
"Region": "us-east-1",
"EnableLogging": true
}
}
Features
Assembly Scanning
Automatically discover and register flow builders and resource providers:
builder.Services.AddSwitchboard(options => { })
.AddAssemblyScanning(typeof(Program).Assembly);
Flow builders are discovered by:
- Implementing
IDiscoverableFlowBuilderinterface - Decorating with
[FlowBuilder]attribute
// Using interface
public class MainFlowBuilder : IDiscoverableFlowBuilder
{
public IFlow Build() => Flow.Create("MainFlow")
.PlayPrompt("Welcome")
.Build();
}
// Using attribute
[FlowBuilder]
public class SupportFlowBuilder
{
public IFlow Build() => Flow.Create("SupportFlow")
.PlayPrompt("Support line")
.Build();
}
Middleware Pipeline
Register and configure middleware for flow validation and processing:
builder.Services.AddSwitchboard(options => { })
.UseMiddleware<LoggingMiddleware>()
.UseMiddleware<ValidationMiddleware>()
.UseMiddleware<MetricsMiddleware>();
Built-in middleware:
LoggingMiddleware- Logs flow building and validationValidationMiddleware- Validates flow structureLambdaValidationMiddleware- Validates Lambda configurationsMetricsMiddleware- Collects build metrics
Custom Middleware
public class CustomMiddleware : IFlowMiddleware
{
private readonly ILogger<CustomMiddleware> _logger;
public CustomMiddleware(ILogger<CustomMiddleware> logger)
{
_logger = logger;
}
public async Task InvokeAsync(FlowContext context, Func<Task> next)
{
_logger.LogInformation("Processing flow: {FlowName}", context.FlowName);
await next();
_logger.LogInformation("Flow processed successfully");
}
}
Validation Configuration
Configure custom validators:
builder.Services.AddSwitchboard(options => { })
.AddValidation(config =>
{
config.ValidateEmptyFlows = true;
config.ValidateTerminalActions = true;
config.ValidateTransitions = true;
});
Resource Providers
Register configuration providers for queues, routing profiles, and hours of operation:
[ResourceProvider]
public class QueueProvider : IResourceProvider
{
public void Configure(ISwitchboardStack stack)
{
stack.AddQueue(Queue.Create("Sales")
.Build());
}
}
Manual Registration
If you prefer explicit registration over scanning:
builder.Services.AddSwitchboard(options => { })
.AddFlowBuilders(typeof(MainFlowBuilder), typeof(SupportFlowBuilder))
.AddProviders(typeof(QueueProvider), typeof(HoursProvider));
Integration with Existing Connect Instance
builder.Services.AddSwitchboard(options =>
{
options.InstanceArn = "arn:aws:connect:us-east-1:123456789:instance/abc-123";
});
Requirements
- .NET 10.0 or later
- Microsoft.Extensions.DependencyInjection 9.0+
Related Packages
- NickSoftware.Switchboard - Core framework
- NickSoftware.Switchboard.Analyzers - Compile-time validation
- NickSoftware.Switchboard.SourceGenerators - Code generation
Documentation
Part of the Switchboard framework for Amazon Connect
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Configuration (>= 9.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options (>= 9.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.0)
- NickSoftware.Switchboard (>= 0.1.0-preview.52)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.52 | 41 | 12/3/2025 |
| 0.1.0-preview.51 | 43 | 12/2/2025 |
| 0.1.0-preview.48 | 37 | 12/2/2025 |
| 0.1.0-preview.47 | 37 | 12/1/2025 |
| 0.1.0-preview.46 | 31 | 12/1/2025 |
| 0.1.0-preview.45 | 38 | 11/30/2025 |
| 0.1.0-preview.44 | 42 | 11/30/2025 |
| 0.1.0-preview.43 | 33 | 11/30/2025 |
| 0.1.0-preview.42 | 45 | 11/30/2025 |
Preview release - APIs may change. See documentation at https://nicksoftware.github.io/switchboard-docs/