NickSoftware.Switchboard
0.1.0-preview.52
dotnet add package NickSoftware.Switchboard --version 0.1.0-preview.52
NuGet\Install-Package NickSoftware.Switchboard -Version 0.1.0-preview.52
<PackageReference Include="NickSoftware.Switchboard" Version="0.1.0-preview.52" />
<PackageVersion Include="NickSoftware.Switchboard" Version="0.1.0-preview.52" />
<PackageReference Include="NickSoftware.Switchboard" />
paket add NickSoftware.Switchboard --version 0.1.0-preview.52
#r "nuget: NickSoftware.Switchboard, 0.1.0-preview.52"
#:package NickSoftware.Switchboard@0.1.0-preview.52
#addin nuget:?package=NickSoftware.Switchboard&version=0.1.0-preview.52&prerelease
#tool nuget:?package=NickSoftware.Switchboard&version=0.1.0-preview.52&prerelease
Switchboard - Amazon Connect Infrastructure Framework
A code-first, type-safe .NET framework for building Amazon Connect contact centers using AWS CDK.
⚠️ PREVIEW RELEASE: APIs may change before stable release. Use with caution in production environments.
Overview
Switchboard provides a modern, fluent API for defining Amazon Connect resources as code. Built on .NET 10 and AWS CDK, it eliminates the need for manual console configuration and enables version-controlled, testable contact center infrastructure.
Features
- Fluent API - Intuitive, chainable methods for building contact flows
- Type-Safe - Full IntelliSense support with compile-time validation
- AWS CDK Integration - Deploy directly to AWS with infrastructure as code
- Middleware Pipeline - Extensible validation and logging
- Multi-Language Support - Built-in translation dictionaries for prompts
- Comprehensive Flow Blocks - All Amazon Connect actions supported
Installation
dotnet add package NickSoftware.Switchboard --prerelease
Optional Packages
# Roslyn analyzers for compile-time validation
dotnet add package NickSoftware.Switchboard.Analyzers --prerelease
# Source generators for attribute-based flows
dotnet add package NickSoftware.Switchboard.SourceGenerators --prerelease
# Dependency injection extensions
dotnet add package NickSoftware.Switchboard.Extensions.DependencyInjection --prerelease
Quick Start
using Switchboard;
var app = new SwitchboardApp();
var stack = app.CreateStack("MyCallCenter", "MyConnectInstance");
// Create a contact flow
var flow = Flow.Create("MainFlow")
.PlayPrompt("Thank you for calling. How can I help you today?")
.GetCustomerInput("Press 1 for sales, 2 for support", input =>
{
input.MaxDigits = 1;
input.TimeoutSeconds = 5;
})
.OnPressed("1", b => b.TransferToQueue("Sales").Disconnect())
.OnPressed("2", b => b.TransferToQueue("Support").Disconnect())
.OnTimeout(b => b.PlayPrompt("We didn't receive your input.").Disconnect())
.OnDefault(b => b.PlayPrompt("Invalid option.").Disconnect())
.Disconnect()
.Build();
stack.AddFlow(flow);
app.Synth();
Supported Flow Actions
Interact
PlayPrompt()- Play text, SSML, or audio promptsGetCustomerInput()- Collect DTMF or voice inputStoreCustomerInput()- Securely store sensitive input
Integrate
InvokeLambda()- Call AWS Lambda functionsTransferToFlow()- Transfer to another contact flow
Set
SetContactAttributes()- Set custom contact attributesSetRecordingBehavior()- Enable/disable call recordingSetLoggingBehavior()- Configure flow loggingSetWorkingQueue()- Set the working queueSetWhisperFlow()- Configure whisper flows
Check
CheckHoursOfOperation()- Branch based on business hoursCheckStaffing()- Check agent availabilityCheckContactAttribute()- Conditional routing based on attributes
Logic
Loop()- Retry logic with configurable attempts
Terminate
TransferToQueue()- Transfer to a queueDisconnect()- End the contactEndFlowExecution()- End flow execution
Advanced Features
Lambda Integration with Response Handling
builder.InvokeLambda(myLambda.FunctionArn, "CustomerLookup")
.OnSuccess(b => b
.SetContactAttributes(attrs => attrs["CustomerTier"] = "$.External.tier"))
.OnError(b => b
.PlayPrompt("We're experiencing technical difficulties.")
.TransferToQueue("Support"));
Hours of Operation Checks
builder.CheckHoursOfOperation("BusinessHours")
.WhenInHours(b => b.TransferToQueue("Sales"))
.WhenOutOfHours(b => b
.PlayPrompt("We're currently closed. Please call back during business hours.")
.Disconnect());
Dependency Injection
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddSwitchboard(options =>
{
options.InstanceName = "MyCallCenter";
})
.UseMiddleware<LoggingMiddleware>()
.UseMiddleware<ValidationMiddleware>()
.AddAssemblyScanning(typeof(Program).Assembly);
Flow Types
Switchboard supports all Amazon Connect flow types:
- Contact Flow
- Customer Queue Flow
- Customer Hold Flow
- Customer Whisper Flow
- Agent Hold Flow
- Agent Whisper Flow
- Outbound Whisper Flow
- Agent Transfer Flow
- Queue Transfer Flow
Documentation
Requirements
- .NET 10 SDK
- AWS CDK CLI (
npm install -g aws-cdk) - AWS CLI configured with credentials
License
See LICENSE for details.
Built with ❤️ for Amazon Connect developers
| 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
- Amazon.CDK.Lib (>= 2.171.1)
- AWSSDK.Connect (>= 4.0.14.1)
- Constructs (>= 10.3.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on NickSoftware.Switchboard:
| Package | Downloads |
|---|---|
|
NickSoftware.Switchboard.Extensions.DependencyInjection
Dependency injection and IoC container extensions for the Switchboard framework. Provides automatic assembly scanning, service registration, and configuration binding. Part of Switchboard preview release. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.52 | 47 | 12/3/2025 |
| 0.1.0-preview.51 | 33 | 12/2/2025 |
| 0.1.0-preview.48 | 34 | 12/2/2025 |
| 0.1.0-preview.47 | 45 | 12/1/2025 |
| 0.1.0-preview.46 | 41 | 12/1/2025 |
| 0.1.0-preview.45 | 44 | 11/30/2025 |
| 0.1.0-preview.44 | 49 | 11/30/2025 |
| 0.1.0-preview.43 | 36 | 11/30/2025 |
| 0.1.0-preview.42 | 44 | 11/30/2025 |
| 0.1.0-preview.41 | 34 | 11/30/2025 |
| 0.1.0-preview.39 | 41 | 11/30/2025 |
| 0.1.0-preview.38 | 46 | 11/29/2025 |
| 0.1.0-preview.37 | 41 | 11/29/2025 |
| 0.1.0-preview.36 | 47 | 11/28/2025 |
| 0.1.0-preview.35 | 53 | 11/27/2025 |
| 0.1.0-preview.34 | 50 | 11/27/2025 |
| 0.1.0-preview.32 | 51 | 11/27/2025 |
| 0.1.0-preview.31 | 40 | 11/27/2025 |
| 0.1.0-preview.29 | 52 | 11/26/2025 |
| 0.1.0-preview.26 | 57 | 11/25/2025 |
| 0.1.0-preview.16 | 98 | 10/26/2025 |
Preview release - APIs may change. See documentation at https://nicksoftware.github.io/switchboard-docs/