🏗️ 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
- Quick Reference - Decision summary and cheat sheet
- Attribute Quick Guide - Fast attribute lookup
Architecture & Design
- Architecture Patterns - Choose the right patterns for your use case
- Dynamic Configuration - Runtime configuration without redeployment
- Lambda Integration - Integrate Lambda functions in any language
- Project Structure - Organize your contact center project
Flow Design
- Flow Blocks Reference - Complete flow block documentation
- ASR & DTMF Design - Voice input and touch-tone patterns
- Sequential Input - Multi-step input collection
Best Practices
- Deployment Strategies - CI/CD and deployment patterns
- Production Examples - Real-world project structures
🔑 Key Decisions at a Glance
| Question | Options | Guidance |
|---|---|---|
| Project Structure? | Layer-based, Domain-centric, Hybrid | Choose 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, S3 | DynamoDB for complex configs, SSM for simple |
| Flow Design? | Fluent API, Attribute-based, Hybrid | Fluent 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
🔗 Related Resources
- User Guide - Getting started with Switchboard
- Building Guide - Step-by-step resource creation
- Examples - Complete working examples
- API Reference - Detailed API documentation