AlexaVoxCraft.Observability
3.2.1.71
dotnet add package AlexaVoxCraft.Observability --version 3.2.1.71
NuGet\Install-Package AlexaVoxCraft.Observability -Version 3.2.1.71
<PackageReference Include="AlexaVoxCraft.Observability" Version="3.2.1.71" />
<PackageVersion Include="AlexaVoxCraft.Observability" Version="3.2.1.71" />
<PackageReference Include="AlexaVoxCraft.Observability" />
paket add AlexaVoxCraft.Observability --version 3.2.1.71
#r "nuget: AlexaVoxCraft.Observability, 3.2.1.71"
#:package AlexaVoxCraft.Observability@3.2.1.71
#addin nuget:?package=AlexaVoxCraft.Observability&version=3.2.1.71
#tool nuget:?package=AlexaVoxCraft.Observability&version=3.2.1.71
๐ฃ AlexaVoxCraft
AlexaVoxCraft is a modular C# .NET library for building Amazon Alexa skills using modern .NET practices. It provides comprehensive support for Alexa skill development with CQRS patterns, visual interfaces, and AWS Lambda hosting.
Key Features
- ๐ฏ MediatR Integration: CQRS-style request handling with pipeline behaviors and auto-discovery
- ๐จ APL Support: Complete Alexa Presentation Language implementation for rich visual interfaces
- โก Lambda Hosting: Optimized AWS Lambda runtime with custom serialization and ReadyToRun publishing
- ๐ Session Management: Robust session attribute handling and game state persistence
- ๐ง Pipeline Behaviors: Request/response interceptors for cross-cutting concerns like logging and validation
- ๐งช Testing Support: Comprehensive testing utilities with AutoFixture integration and property-based testing
๐ฆ Packages
Package | NuGet | Downloads |
---|---|---|
AlexaVoxCraft.Model | ||
AlexaVoxCraft.Model.Apl | ||
AlexaVoxCraft.MediatR.Lambda | ||
AlexaVoxCraft.MediatR | ||
AlexaVoxCraft.Observability |
๐ Quick Start
Install Core Packages
# Core MediatR integration and Lambda hosting
dotnet add package AlexaVoxCraft.MediatR.Lambda
# APL visual interface support (optional)
dotnet add package AlexaVoxCraft.Model.Apl
# CloudWatch-compatible JSON logging (optional)
dotnet add package LayeredCraft.Logging.CompactJsonFormatter
Create a Basic Skill
// Program.cs
using AlexaVoxCraft.MediatR.Lambda;
using AlexaVoxCraft.Model.Response;
return await LambdaHostExtensions.RunAlexaSkill<MySkillFunction, SkillRequest, SkillResponse>();
// Function.cs
public class MySkillFunction : AlexaSkillFunction<SkillRequest, SkillResponse>
{
protected override void Init(IHostBuilder builder)
{
builder
.UseHandler<LambdaHandler, SkillRequest, SkillResponse>()
.ConfigureServices((context, services) =>
{
services.AddSkillMediator(context.Configuration, cfg =>
cfg.RegisterServicesFromAssemblyContaining<MySkillFunction>());
});
}
}
// Handler.cs
public class LaunchRequestHandler : IRequestHandler<LaunchRequest>
{
public bool CanHandle(IHandlerInput handlerInput) =>
handlerInput.RequestEnvelope.Request is LaunchRequest;
public async Task<SkillResponse> Handle(IHandlerInput input, CancellationToken cancellationToken)
{
return await input.ResponseBuilder
.Speak("Welcome to my skill!")
.Reprompt("What would you like to do?")
.GetResponse(cancellationToken);
}
}
๐ Documentation
๐ Complete Documentation - Comprehensive guides and examples
Core Components
- Request Handling - MediatR integration and handler patterns
- APL Integration - Rich visual interface development
- Lambda Hosting - AWS Lambda deployment and optimization
- Session Management - State persistence and user data
- Pipeline Behaviors - Cross-cutting concerns and interceptors
Examples
- Complete Examples - Production-ready trivia skill implementation
๐ Project Structure
AlexaVoxCraft/
โโโ ๐ src/ # Core library packages
โ โโโ ๐ฆ AlexaVoxCraft.Model/ # Base Alexa skill models & serialization
โ โโโ ๐ฆ AlexaVoxCraft.Model.Apl/ # APL (Alexa Presentation Language) support
โ โโโ ๐ฆ AlexaVoxCraft.MediatR/ # MediatR integration & request handling
โ โโโ ๐ฆ AlexaVoxCraft.MediatR.Lambda/ # AWS Lambda hosting & runtime
โ
โโโ ๐ samples/ # Working example projects
โ โโโ ๐ฑ Sample.Skill.Function/ # Basic Alexa skill demonstration
โ โโโ ๐ฑ Sample.Apl.Function/ # APL skill with visual interfaces
โ
โโโ ๐ test/ # Comprehensive test coverage
โ โโโ ๐งช AlexaVoxCraft.Model.Tests/ # Core model & serialization tests
โ โโโ ๐งช AlexaVoxCraft.Model.Apl.Tests/ # APL functionality tests
โ โโโ ๐งช AlexaVoxCraft.MediatR.Tests/ # MediatR integration tests
โ โโโ ๐งช AlexaVoxCraft.MediatR.Lambda.Tests/ # Lambda hosting tests
โ
โโโ ๐ AlexaVoxCraft.TestKit/ # Testing utilities & AutoFixture support
โโโ ๐ docs/ # Documentation source
โโโ ๐ samples/ # Example implementations
๐ Core Concepts
Request Handling Pattern
Skills use the MediatR pattern where:
- Requests implement
IRequestHandler<T>
- Handlers optionally implement
ICanHandle
for routing logic - Pipeline behaviors handle cross-cutting concerns (logging, exceptions)
- Lambda functions derive from
AlexaSkillFunction<TRequest, TResponse>
Package Breakdown
Package | Purpose | Key Features |
---|---|---|
AlexaVoxCraft.Model | Core Alexa models | Request/response types, SSML, cards, directives, System.Text.Json serialization |
AlexaVoxCraft.Model.Apl | APL support | 40+ components, commands, audio, vector graphics, extensions (DataStore, SmartMotion) |
AlexaVoxCraft.MediatR | Request handling | Handler routing, pipeline behaviors, attributes management, DI integration |
AlexaVoxCraft.MediatR.Lambda | Lambda hosting | AWS Lambda functions, context management, custom serialization, hosting extensions |
๐งช Testing
AlexaVoxCraft includes comprehensive testing support:
- xUnit v3 with Microsoft.Testing.Platform
- AutoFixture integration for property-based testing
- AwesomeAssertions for fluent assertions
- TestKit with specimen builders and test utilities
โ ๏ธ Error Handling
Implement the IExceptionHandler
interface for centralized error handling:
public class GlobalExceptionHandler : IExceptionHandler
{
public Task<bool> CanHandle(IHandlerInput handlerInput, Exception ex, CancellationToken cancellationToken)
{
return Task.FromResult(true); // Handle all exceptions
}
public Task<SkillResponse> Handle(IHandlerInput handlerInput, Exception ex, CancellationToken cancellationToken)
{
return handlerInput.ResponseBuilder
.Speak("Sorry, something went wrong. Please try again.")
.GetResponse(cancellationToken);
}
}
๐ค Contributing
PRs are welcome! Please submit issues and ideas to help make this toolkit even better.
๐ Credits & Attribution
๐ฆ Credits:
- Core Alexa skill models (
AlexaVoxCraft.Model
) based on timheuer/alexa-skills-dotnet- APL support (
AlexaVoxCraft.Model.Apl
) based on stoiveyp/Alexa.NET.APL
๐ License
This project is licensed under the MIT License.
Stargazers over time
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- AlexaVoxCraft.MediatR (>= 3.2.1.71)
- OpenTelemetry (>= 1.12.0)
-
net9.0
- AlexaVoxCraft.MediatR (>= 3.2.1.71)
- OpenTelemetry (>= 1.12.0)
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 |
---|---|---|
3.2.1.71 | 183 | 8/30/2025 |
3.2.0.70 | 187 | 8/29/2025 |
3.2.0.69 | 175 | 8/29/2025 |
3.2.0-preview.68 | 164 | 8/28/2025 |
3.2.0-preview.67 | 162 | 8/28/2025 |
3.2.0-preview.66 | 158 | 8/28/2025 |
3.2.0-preview.65 | 162 | 8/28/2025 |