NickSoftware.Switchboard 0.1.0-preview.52

This is a prerelease version of NickSoftware.Switchboard.
This package has a SemVer 2.0.0 package version: 0.1.0-preview.52+f70eb54.
dotnet add package NickSoftware.Switchboard --version 0.1.0-preview.52
                    
NuGet\Install-Package NickSoftware.Switchboard -Version 0.1.0-preview.52
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NickSoftware.Switchboard" Version="0.1.0-preview.52" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NickSoftware.Switchboard" Version="0.1.0-preview.52" />
                    
Directory.Packages.props
<PackageReference Include="NickSoftware.Switchboard" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add NickSoftware.Switchboard --version 0.1.0-preview.52
                    
#r "nuget: NickSoftware.Switchboard, 0.1.0-preview.52"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package NickSoftware.Switchboard@0.1.0-preview.52
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NickSoftware.Switchboard&version=0.1.0-preview.52&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=NickSoftware.Switchboard&version=0.1.0-preview.52&prerelease
                    
Install as a Cake Tool

Switchboard - Amazon Connect Infrastructure Framework

A code-first, type-safe .NET framework for building Amazon Connect contact centers using AWS CDK.

NuGet

⚠️ 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 prompts
  • GetCustomerInput() - Collect DTMF or voice input
  • StoreCustomerInput() - Securely store sensitive input

Integrate

  • InvokeLambda() - Call AWS Lambda functions
  • TransferToFlow() - Transfer to another contact flow

Set

  • SetContactAttributes() - Set custom contact attributes
  • SetRecordingBehavior() - Enable/disable call recording
  • SetLoggingBehavior() - Configure flow logging
  • SetWorkingQueue() - Set the working queue
  • SetWhisperFlow() - Configure whisper flows

Check

  • CheckHoursOfOperation() - Branch based on business hours
  • CheckStaffing() - Check agent availability
  • CheckContactAttribute() - Conditional routing based on attributes

Logic

  • Loop() - Retry logic with configurable attempts

Terminate

  • TransferToQueue() - Transfer to a queue
  • Disconnect() - End the contact
  • EndFlowExecution() - 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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/