Skip to content

🏗️ Contact Center Architecture Hub

Welcome to the Switchboard Architecture documentation. This section helps you make informed decisions when designing and building your Amazon Connect contact center.

🎯 What You'll Learn

  • How to structure your contact center project
  • When to use different architectural patterns
  • How to integrate Lambda functions (in any language)
  • Best practices for production deployments
  • Dynamic configuration strategies

📚 Documentation Guide

Quick Start

Architecture & Design

Flow Design

Best Practices

🔑 Key Decisions at a Glance

QuestionOptionsGuidance
Project Structure?Layer-based, Domain-centric, HybridChoose based on team size and complexity
Lambda Language?JavaScript, Python, C#, Go, etc.Use what your team knows best
Dynamic Config?DynamoDB, SSM Parameter Store, S3DynamoDB for complex configs, SSM for simple
Flow Design?Fluent API, Attribute-based, HybridFluent for simple, Attributes for complex

🚀 Getting Started

1. Choose Your Project Structure

See Project Structure Examples for different approaches:

  • Layer-based - Organized by resource type (Flows/, Queues/, Lambdas/)
  • Domain-centric - Organized by business domain (Sales/, Support/, Billing/)
  • Hybrid - Mix of both based on your needs

2. Plan Your Lambda Integration

Switchboard makes it easy to integrate Lambda functions written in any language:

csharp
// Add a Lambda function to your contact center
var customerLookup = ConnectLambda
    .Create("customer-lookup")
    .WithId("CustomerLookupLambda")
    .WithCode("./lambdas/customer-lookup")  // Your Lambda code (any language)
    .WithHandler("index.handler")            // Node.js example
    .WithMemory(512)
    .WithTimeout(30)
    .AssociateWithConnect(stack.InstanceId)
    .Build(stack);

See Lambda Integration Guide for:

  • JavaScript/TypeScript Lambda examples
  • Python Lambda examples
  • .NET Lambda examples
  • Performance considerations for each language

3. Design Your Flows

Use the Flow Blocks Reference to understand all available flow actions, then choose your design approach:

Fluent API - Great for straightforward flows:

csharp
Flow.Create("MainMenu")
    .PlayPrompt("Welcome!")
    .GetCustomerInput("Press 1 for Sales, 2 for Support")
    .Branch()
        .When("1", b => b.TransferToQueue("Sales"))
        .When("2", b => b.TransferToQueue("Support"))
    .Build(stack);

Attribute-based - Better for complex, reusable flows:

csharp
[ContactFlow("MainMenu")]
public partial class MainMenuFlow : FlowDefinitionBase
{
    [PlayPrompt("Welcome!")]
    public partial void Welcome();

    [GetInput(MaxDigits = 1)]
    public partial void GetMenuChoice();
}

4. Configure for Production

Follow Deployment Strategies to:

  • Set up multi-environment deployments
  • Configure CI/CD pipelines
  • Implement monitoring and alerting

💡 Architecture Tips

Start Simple

Don't over-engineer your first deployment. Start with:

  • Basic project structure
  • A few core flows
  • Simple queue configuration

Iterate Based on Needs

Add complexity as needed:

  • Dynamic configuration when you need runtime updates
  • More sophisticated routing as call volume grows
  • Additional Lambda integrations as requirements evolve

Use What You Know

  • Lambda Language: Use JavaScript, Python, or whatever your team is comfortable with
  • Project Structure: Adapt to your team's preferences
  • Testing: Use your existing testing frameworks

Preview release - Licensing terms TBD before 1.0