Part 3 built the content. Ordering dispatches OrderCreated with the order facts it owns, Communications resolves the buyer through Identity, a Catalog enricher fills in product details, and one enriched context comes out the other side. Then a single channel used it: email.
Part 3 also sketched what SMS and push could do with the same context. This article builds them. Along the way we'll separate two ideas that are easy to blur together, channels and providers, and see what it would take to connect real ones like SMTP, Twilio, and Firebase.
The code stays on Transmitly's simulator the whole time. Nothing in this article needs an account, an API key, or a phone.
Ordering doesn't change
Ordering still dispatches exactly what it dispatched in Part 3 :
await _communicationsClient . DispatchAsync ( CommunicationIntents . OrderCreated , [ buyer ], TransactionModel .…