With Microsoft Ignite leaving a trail of announcements and superb sessions recordings that I intend getting through over the coming days/weeks, there was one announcement that perked my interest. Mainly because of my day job and where my own personal specialism has developed over the years. Namely Voice services.
Azure Communications Services was announced into Public Preview at Microsoft Ignite 2020 by Scott Van Vliet who is the Corporate Vice President of Intelligent Communications. So I thought I would spend an hour or so reading through the literature released to learn a bit more about these services.
What is Azure Communication Services (ACS)?
To put it briefly, ACS is a set of rich communication API’s, it can be utilised to provide communications in various scenarios such as; Browser-to-browser, browser-to-app or app-to-app communications. Integration with bots and other Azure services such as cognitive services or Natural language processing services. also, interestingly the extension into the PSTN network via a direct routing type scenario with integration of Microsoft Teams.
This opens up the world of implementing a rich communications stack into bespoke applications or services ranging from simple chat, sms, audio and full video integration, using native teams client or WebRTC SDK for integration into Web apps or even native Windows, iOS or Android mobile apps. These calls and interactions can be 1:1 or span to Group calls for up to 50 users which is amazing!
Jeremy of Microsoft Mechanics walked through a simple example with Scott on Microsoft Mechanics which I have taken the pertinent elements from
Built on the same underlying platform as Teams, ACS offers the full rich fidelity of communications modalities offered by Teams which of course is also hosted on Azure (the world’s computer!),
The ACS SDK can enable integration of Chat, Voice, Video and more into your existing applications, or be consumed in conjunction with Azure hosted solutions or app development.
Full information about the Azure Communications Service Public preview SDK can be found by visiting: aka.ms/ACSSDK
Integrated options with:
- Voice and Video from 1 to 50 users
- Chat Functionality from 1:1 to group chat with the ability to save chat history and incorporate file sharing
- Text services with SMS messaging
- PSTN Connectivity for true full enterprise voice dialin/out services (Direct routing options coming in October!)
- WebRTC Client and Network Comms. No need to worry about traversing complex networking infrastructure.
Authentication via an application can utilise Azure AD or a multitude of 3rd party Identity management platforms for huge Auth integraiton options, including applying Multi-Factor authenticaiton.
Applications developed for Windows, Mobile IoT or Web clients can take advantage of the integration of the feature sets offered by ACS.
Microsoft Mechanics Demo
Jeremy and Scott showcased a demo of a Company offering support services to customers to repair appliances. With an interaction from the customer via the company website. A request was made for support via the inbuild chat option where the customer shared their mobile number.
Using ACS an SMS was sent to the customer with a link to a video chat which called an available agent in the company service team.
Acting as the service agent, Jeremy can see the customer (Scott) in a bespoke application where notes and other information about the product could be displayed and shown to the agent in order to help the customer:
Scott acting as the customer was able to explain to Jeremy that he had an issue with his Ice maker on his fridge:
At which point, the customer services agent was quickly able to identify the problem with a child’s toy being present in the ice maker device and causing the issue!
Obviously this is a very simple use case, but to me it highlights the power of being able to integrate a range of communications modalities into bespoke applications to make your customer experience a better one is huge!
So what is going on behind the scenes?
Scott described the interaction and the simplicity of set up of the service ACS in Azure, Create new service:
View service in Azure and get a phone number:
Get your Primary keys together with your number, these will be used in your applicaiton code:
The main code of the application does 3 fundamental things:
- Send an SMS to a customer from a web service
- Creation of a User access token for a group call
- Connection of web clients to a video chat
Your code will include reference to the ACS SDK: Microsoft.Net.Sdk.Web
Insert the connection string to ACS with the previously generated phone number:
This is the API controller that is utilised to send the initial SMS message that fundmentally contains a link to the video call with the user access token:
New SMS message is created:
This is an example of the HTTP post method that passes the SMS message to the User, using the Phone number specified in the ACS config:
The web access token generated can be distributed to each client to access the services at the back end. In this case a token is issued to grant ‘unauthenticated’ and ‘anonymous’ access to ‘VOIP services.
These services can be authenticated and secured if required via Azure AD and MFA if needed.
Hook the two way video call together in the web client:
From the main code, the token is requested then utilised and vido settings configured to merge the calls into a group call:
Further event handlers have been defined to ensure local camera hook up and to enable other users to join the call:
I hope this brief overview of the new Azure Communications Services in Public Preview has been interesting and informative. This is a basic over view, but remember that ACS can be set up and scaled to a number of different resources, wit lots of different options available to be programmatically controlled; muting, switching cameras, adding up to 50 participants and much more.
Further extensibility and innovation using Bot services, Cognitive Services such as Natural Language Processing to offer real time translation services, or image recognition. Or maybe tie it in with AI services and ML models to offer rich applications base don real time media flows, the possibilities are endless!
Get started now: https://azure.microsoft.com/en-gb/services/communication-services/
My Main ReadMe Page is all set up with a bit about me!
The guys at 100DaysofCloud have set up the GitHub repo to be cloned and also have a great repo containing ideas and areas to collaborate on: https://github.com/100DaysOfCloud/100DaysOfCloudIdeas
My Github Journey tracker can be found here: https://github.com/jonnychipz/100DaysOfCloud
Please Watch/Star my repo and feel free to comment of contribute to anything I push! I really look forward to hearing from anyone who is going to jump on the journey around the same time as me! Lets see where I get to in 100 days!
I would encourage others to jump on this journey, I’m not sure that I will be able to commit every day for 100 days, but as long as I can complete 100 days that will be great!