Every application eventually needs to reach humans: the order confirmation email, the delivery SMS, the support video call, the appointment reminder. Azure Communication Services is the platform’s CPaaS layer, the same infrastructure under Teams exposed as SDKs and APIs, and it turns communications from a vendor procurement into a resource in your Terraform.
Email: The Workhorse Done Right
Transactional email through ACS pairs a communication resource with an email service and your custom domain, and deliverability is mostly the DNS ceremony done completely: the verification TXT, SPF include, and DKIM records the portal hands you, published through the DNS zones your IaC already manages, plus DMARC because receiving domains increasingly demand it. Operational discipline is what separates “lands in inbox” from “lands in spam”: separate sending domains for transactional and anything marketing adjacent so reputations do not cross contaminate, engagement tracking webhooks feeding your analytics, suppression handling for bounces and complaints wired through Event Grid (yesterday’s post immediately earning its keep, delivery status events subscribe like everything else), and volume ramped gradually on new domains because reputation is earned, not provisioned. The sending path from applications is the series invariant: managed identity, no connection strings in config, and the send calls behind your own thin abstraction so the day someone mandates a different provider is a refactor, not an excavation.
SMS, Numbers, and the Compliance Reality
SMS is the highest attention channel and the most regulated one. ACS provisions numbers (toll free, short codes, alphanumeric sender IDs where countries allow) and the practical work is compliance: toll free verification and campaign registration where jurisdictions require it, honest opt in and the STOP handling the platform manages, and quiet hours logic in your sending layer because 3 AM delivery notifications generate complaints that damage the sender standing everything else depends on. Design the channel hierarchy deliberately, email for records, SMS for urgency, push where the app is installed, and centralize the decision in one notification service consuming the domain events from your Event Grid topics, rather than scattering send calls through every microservice, because preference management, do not disturb, and auditability all want one throat to choke.
Chat, Calling, and Identity
The real time SDKs cover chat threads and voice and video calling (WebRTC in the browser and mobile SDKs, with PSTN dial out through provisioned numbers), which is how support call, telehealth visit, and see what the customer sees features get built without a media stack team. The architecture note that matters is identity: ACS has its own lightweight identity model, your backend exchanges its trusted knowledge of the user for scoped, short lived access tokens (chat, VoIP scopes), and the token issuance endpoint is protected by your Entra auth exactly like the SignalR negotiate endpoint from last week, same pattern, same reasons, the communication identity never becoming an unauthenticated door. Teams interoperability lets ACS clients join Teams meetings, the pattern behind virtual appointments where staff live in Teams and customers click a browser link. Wire call and message diagnostics into Log Analytics, alert on delivery failure rates per channel, tag the resource into the FinOps allocation like everything else, and communications become what they should have been all along: a governed, observable capability of the platform, not a drawer full of vendor dashboards.
Cheers
Osama
Leave a Reply