Fully Managed Communication Platform — Azure Communication Service
By: Manish Saluja
Tags: Microsoft, Communication Service, Microsoft Teams, Azure Services, Azure

Is there any platform, which enables you to deliver video, voice and chat experience across your apps, websites and Mobile devices by leveraging enterprise grade services? Imagine taking advantage of those same services in your code, using them to add global, stress-tested, reliable communications experience without spending time learning how to construct calls in WebRTC and leverage services behind Microsoft Teams Platform? Yes, you got it right, its Azure Communication Services, which brings rich communication APIs to all your applications across any device, on any platform, using the same reliable and secure infrastructure that powers Microsoft Teams.

Azure Communication Service (ACS) is designed to support many different communication scenarios: one-to-one, one-to-many, many-to-many, browser, apps, bots, and even the public switched telephony network. We can also mix different options in the same app, much like Teams where we can change our communications mode as our interactions deepen or become more focused. When it comes to security and compliance, all the communications between ACS Platform and solutions are encrypted to meet privacy and compliance guidelines such as HIPAA and GDPR.

The main communication service exposed via APIs and SDK that allows to leverage capabilities such as

Voice calling, Public switched telephone network. Voice and Video calling over IP (and ability to shift between them) for making one to one call or meet with group of 50 people for content sharing, group meeting. Text messages — SMS. Chat, users can keep chat history share Emoji and files.

While we shall deep dive on some of these concepts in coming post. In this post, let us look at provisioning ACS resource.

We shall explore two ways to deploy the ACS:

· Azure Portal

· Azure CLI

Azure Portal

Creating the ACS is similar to how we provision any other Azure Services, to start provisioning the ACS, Log in to the Azure Portal and search for the “Communication Services”

Azure Portal — Communication Services

Choose your Azure Subscription, Resource Group, and Provide the Azure Communication Service Name under Resource Name. Once all the information is provided, go ahead, and create the service.

Create Communication Service

After success completion of ACS deployment, you will get link “Go to resource” to start using ACS service, like give below.

Communication Service — Successful Deployment

Note that Communication Services availability is restricted to the US geography during public preview. Also note that communication resources cannot be transferred to a different subscription during public preview.

Azure CLI

There is a feature in Azure that allows us to create templates for resources. They are called Azure Resource Manager Templates. They are also known as ARM Templates. At a bare minimum, those templates are a combination of a template file and a parameter file.

Let’s take a look at our ACS ARM template to identify how we are deploying them.

{ "$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "String" }, "name": { "type": "String" }, "properties": { "type": "Object", "metadata": { "description": "The map of key-value pairs used to dump properties onto the Communication Services resource" } }, "resourceTags": { "type": "Object", "metadata": { "description": "The map of key-value pairs used to tag the Communication Services resource" } } }, "resources": [ { "type": "Microsoft.Communication/CommunicationServices", "apiVersion": "2020-08-20-preview", "name": "[parameters('name')]", "location": "[parameters('location')]", "tags": "[parameters('resourceTags')]", "properties": "[parameters('properties')]" } ] }

This ARM Template needs few parameters

Location: where ACS shall get deployed.

Name: Name of ACS resource

Properties: data location of ACS

resourceTags: this is optional parameter for your resource tag

Let’s take a look at our parameter file

{ “$schema”: “https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", “contentVersion”: “1.0.0.0”, “parameters”: { “location”: { “value”: “global” }, “name”: { “value”: “TBF” }, “properties”: { “value”: { “dataLocation”: “United States” } }, “resourceTags”: { “value”: {} } } }

Value of name parameter to be updated which is currently shown as TBF

Deployment Steps

To run this deployment command, you must have the latest version of Azure CLI.

1. Set path of template file

templateFile=”{path-to-the-template-file}”

2. Set path of Parameter file

ParameterFile=”{path-to-azuredeploy.parameters.json}”

3. Create Resource Group which shall contain ACS resource

az group create \ — name myResourceGroup \ — location “East US”

4. Deployment of ACS resource

az deployment group create \ — name environment \ — resource-group myResourceGroup \ — template-file $templateFile \ — parameters $ParameterFile

Once ACS deployment is successfully completed you will get below details related to deployment.

Communication Service — Successful Deployment (Azure CLI)

Clean up resources

If you want to clean up and remove a Communication Services subscription, you can delete the resource or resource group. Deleting the resource group also deletes any other resources associated with it.

As of writing this article, Azure Communication Services is a preview service.

Summary

We see rich communication experiences — enabled by voice, video, chat, and SMS — continuing to be an integral part in how businesses connect with their customers across devices and platforms. Azure Communication Services (ACS) provides a managed platform and communication APIs to build real-time voice, video, SMS, and Chat functionality to your solution at scale. In this post, we have learned how to provision Azure Communication Services. Also look out for next blog in series where we shall design and implement a solution leveraging ACS APIs/SDK.

Would love to hear from you what type of solution you would like to develop using Azure Communication Service in the comment box.