Files
git.stella-ops.org/docs/features/unchecked/notifier/multi-channel-delivery.md

3.6 KiB

Multi-Channel Delivery (Slack, Teams, Email, Webhooks)

Module

Notifier

Status

IMPLEMENTED

Description

Multi-channel notification delivery with Slack, Webhook connectors (and PagerDuty in Notifier), with snapshot testing and error handling.

Implementation Details

  • IChannelAdapter interface: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/IChannelAdapter.cs -- DispatchAsync (sends notification via channel), CheckHealthAsync (verifies channel connectivity), typed by NotifyChannelType
  • ChannelAdapterFactory: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/ChannelAdapterFactory.cs -- resolves channel adapters by type, GetAdapter/GetAllAdapters for DI-based adapter registry
  • SlackChannelAdapter: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/SlackChannelAdapter.cs -- Slack delivery adapter
  • WebhookChannelAdapter: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/WebhookChannelAdapter.cs -- generic webhook delivery adapter
  • ChatWebhookChannelAdapter: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/ChatWebhookChannelAdapter.cs -- chat-specific webhook adapter (Teams, Discord, etc.)
  • PagerDutyChannelAdapter: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/PagerDutyChannelAdapter.cs -- PagerDuty incident creation adapter
  • OpsGenieChannelAdapter: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/OpsGenieChannelAdapter.cs -- OpsGenie alert adapter
  • EmailChannelAdapter: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/EmailChannelAdapter.cs -- email delivery adapter
  • InAppChannelAdapter: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/InAppChannelAdapter.cs -- in-app notification adapter
  • WebhookChannelDispatcher: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Dispatch/WebhookChannelDispatcher.cs -- dispatches to webhook-based channels
  • IWebhookSecurityService: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Security/IWebhookSecurityService.cs -- webhook signature verification
  • IFallbackHandler: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Fallback/IFallbackHandler.cs -- fallback when primary channel fails
  • HttpEgressSloSink: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Processing/HttpEgressSloSink.cs -- SLO tracking for HTTP egress
  • Templates: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/offline/notifier/templates/ -- Slack and webhook templates for risk, attestation, deprecation events
  • Tests: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Tests/Channels/WebhookChannelAdapterTests.cs, Dispatch/WebhookChannelDispatcherTests.cs, Dispatch/SimpleTemplateRendererTests.cs, Security/WebhookSecurityServiceTests.cs, Fallback/FallbackHandlerTests.cs, HttpEgressSloSinkTests.cs
  • Source: Feature matrix scan

E2E Test Plan

  • Verify Slack channel adapter delivers notifications with Block Kit formatting
  • Test webhook channel adapter posts to configured URLs with HMAC signature
  • Verify PagerDuty adapter creates incidents with correct severity mapping
  • Test OpsGenie adapter creates alerts with priority
  • Verify email adapter sends with subject and rendered body
  • Test in-app notification adapter records notifications for UI retrieval
  • Verify channel health checks detect unreachable endpoints
  • Test fallback handler routes to secondary channel on primary failure
  • Verify egress SLO tracking records delivery latency