(machine whirring)
- Hello, and welcome to a special edition
of Microsoft Mechanics.
Coming up on the show, we catch up with CVP Scott Van Vliet,
responsible for Azure Communication Services,
a brand new platform
that leverages the same enterprise-grade services
behind Microsoft Teams through Azure to deliver video,
voice and chat experiences, and much more,
anywhere our users are across your apps,
websites, and mobile platforms.
So Scott, welcome to the show.
- Jeremy, thanks for having me.
- So congrats today on your announcement of public preview
of Azure Communication Services as I mentioned.
But what's the significance now
of delivering these capabilities
as part of Azure Communication Services?
- Yeah, we're really excited.
You know, this opens up a whole realm of opportunities.
You know, imagine taking the same chat,
voice and video experiences,
and capabilities of Microsoft Teams
and making them available
to any digital experience you wanna build,
tailored to your specific scenarios.
You can now integrate the proven communications capabilities
of Microsoft Teams across your apps, websites,
mobile and IoT platforms via Azure Communication Services.
And it has the same secure,
compliant enterprise-scale foundation of Microsoft Teams,
which itself is built on Azure, the world's computer.
And has over 75 million daily active users
leveraging the platform.
- So can you give us an example of what types of scenarios
where this would really light up with?
- Yeah sure, you know, this is built for the enterprise.
You can now build secure connected experiences
on your website that will incorporate a variety
of communications modalities.
You know, think of a Telemedicine experience
where you can shift from a bot assistant,
to a live video call from a doctor.
Now the added benefit is that these experiences
can be architected to use encryption
to meet specific regulatory requirements like HIPAA
to preserve patient privacy.
Also you can enrich those applications
and those experiences further with intelligence,
like real-time translation
by tapping into other Azure services.
- So all this then
makes rich communication capabilities accessible,
really wherever your users might be engaging,
and you don't need to be a networking
or voice engineer expertise to use it.
- That's right, you know,
all of this can now be achieved
by adding just a few lines of code
and using your favorite developer tools.
In fact, we've just gone live with the public preview
of our software development kit today.
- So there's a pretty broad application then
and it's accessible,
but can you break down the core communication services
that are part of this platform?
- So there are five main communication services exposed
via a selection of APIs and SDKs
that allow you to hook into the capabilities.
These include voice and video calling over IP,
where you can do one-on-one calling
or meet with groups of up to 50 people
and do things like content sharing, message chat,
whether that's one-on-one or with a group of users,
you can keep their chat history,
using formal communications with emojis
and even share files.
You can also integrate with text messaging, sending via SMS,
and you can actually place real telephone calls
in your apps, using a connection
to the public switch telephone network, or PSTN,
using normal phone numbers for inbound and outbound calls.
And we've added Network Communication Services
for videos with WebRTC, that allows for capabilities
that take a standards-based approach
to removing the complexity
of running the global edge-based deployment.
Now you don't need to worry about any of the complexity
of network traversal and traffic
between you and your customers.
Once your solution connects to Azure, anywhere in the world,
we'll take care of that connectivity for you,
with one of the fastest real-time communication networks
in the world.
You can also enable authenticated experiences
using Azure Active Directory
or other common identity services.
And of course,
bring your Azure Communication Services product to any app,
browser, PC and mobile platform
as well as IoT devices on the edge.
- Okay, So it's pretty modular
and you can pick the communication services you wanna use,
architect those within your new or existing apps
and services, and only pay for what you use,
but this is Mechanics,
so why don't we make this real for everyone?
- Now I'm gonna show you an Azure Communication Services
enriched website experience, and show you how I built it.
Now let's imagine a scenario here.
I'll be the consumer
and you be the customer service technician.
Now, I'm having an issue with my refrigerator,
the ice cubes are not coming out,
and I know it's gonna be hard
to get someone out to my house right now
during everything that's going on.
So, here I'm on the Contoso Appliance website,
and I can see that there is a virtual assistant bot,
which you see a lot on websites
to help answer common questions.
But what's different is once I select Can I help you?
I have a way to connect directly with a representative,
using their appointment service that I can take on my phone.
Now I'll type in my phone number.
In the background,
it will check the availability of a technician
and send me a confirmation message over SMS with a link
that I can tap on at the start of my appointment.
So now let's switch over to my phone.
So when I see a link,
I don't have to download an app or authenticate.
By tapping on that link,
it will take me directly to the mobile web experience,
where I can join the call.
So Jeremy, why don't you play the part of the technician
and show us your view within the customer services app.
- Look's like the call started and I can see you just fine,
but so let's investigate then
and take a look at what's going on with your fridge.
- Yeah, thanks Jeremy, I really appreciate the help,
you know, I'm trying to get some ice on these hot days
and it's just not coming out.
So I'm gonna walk over here to my fridge,
and when I get here, I'm just gonna flip the camera
and here's the ice maker
or at least the dispenser on the front.
And when I push the ice button,
push the lever, nothing's coming out.
- All right, so what I want you to do then
is open the freezer side of the refrigerator.
- [Scott] You got it.
- And we're gonna take a look at the ice maker.
- [Scott] All right, so here's the ice service machine.
I'm gonna open up the flap and check it out,
there's no ice.
- Okay, so I think I know what the issue is,
but since this is Mechanics, we'll explain what's going on.
So there's a flap or usually an armature
that kind of says whether or not the ice tray's full,
and it looks like it's stuck in the full position
by a little man that's hanging upside down.
- [Scott] Huh? What are you talking about?
I'm gonna take a look, what the?
Oh, man, it looks like my kids must've been playing
in the icebox again.
Alright, well check it out, after I took him out,
that thing popped out.
Is that what you were talking about?
- Yeah, that's the flap,
so it's gonna think that the ice tray is empty,
So now you should be good to go.
- [Scott] Oh cool, I hear something happening,
looks like a motor go.
And look. Check this out.
Looks like there's a light on.
I think it's working.
- [Jeremy] So glad I could help
and please fill out the survey when it comes
and give me five stars if you wouldn't mind.
- You got it.
- So while Scott's walking back,
that was a rich real-time communication experience
to an everyday scenario that really benefits
from having that two-way video communication.
- Right, and if you wanted to add all of this
to an existing website,
It might require you needing to know a thing or two
about SMS message handling
and video call integration among other things.
But with Azure Communication Services, it's pretty turn-key.
- Okay, but the devil's in the details,
so why don't you show everyone how you built it.
- So let's start at the beginning.
The first things I'll need to do
are to create an Azure Communication Services resource,
get a phone number, and a connection string.
So here from the Azure portal,
I'll search for communication,
now as I type you'll see Azure Communication Services.
I'll select it and I can create a new resource,
but in my case, I'll click View.
Now I've already created and provisioned
an Azure communication service resource with a name.
It's just like provisioning any other Azure resource.
I'll click into Contoso Ignite
and we can see all the different capabilities
here on the left.
In our case, we need to be able to send SMS messages
like we just saw, so I need to have a phone number.
So, I'll select phone numbers,
and this shows me the phone number that I got earlier.
I can see that it's a US toll-free number
and we'll be using this later in our code.
But before I do that,
I'm gonna click on the Keys tab over here
and take the connection string from the primary key.
We will use this next in our actual code
to authorize the API calls
in the communication services SDK.
- Okay with a config done,
can we see then what's behind the app?
- Sure, let's look at the underlying code
in Visual Studio Code.
Now there are three things that we need to do.
First, send an SMS message from my web service.
Second, create a user access token for the group call.
And finally, connect my web clients to a group video chat.
So, here's a code for my asp.net website.
It's an asp.net core web API site
and I've also added the Azure Communication Services SDK,
and my project file that you can see here.
Next, I'll use the connection string we just copied
and add it to my config file
along with the phone number I just got,
so I can reference them in the code later.
I have an API controller here
that I will use to send the SMS message.
The first thing I do is create a new SMS client
with the Azure Communication Services SDK.
When the HTTP post method is called in this API,
the message we want to send will be passed along
to the destination phone number.
In this case, the message contains the link
that accesses the video call.
- Okay, so this gets through that and the initial handshake
and the connection back to the customer,
but what do I need to do then
to wire up all the AV components and get those to work?
- Well, let me show you.
We're gonna use WebRTC within the web browser,
but by the way, we could have built this
into a mobile app using the Azure Communication Services SDK
for Windows, iOS, and for Android.
This will allow us to integrate the video directly
into the company's mobile website,
and the approach we're using with WebRTC.
So, let's get back to the code.
Now before I do that,
the first thing I need to do is create an access token
on my website's backend that can be handed out
to each of the participating clients.
Let me do that in Code now.
I have another API controller here
that gets created with a user token client
using the same configuration string as before.
Now when the HTTP post method is called on this API,
I'll issue a token with the VoIP or voiceover IP capability.
In this case, we're using an anonymous
and authenticated connection.
- Okay so, but for those folks that are watching
that might have a little bit higher security bar
than unauthenticated connections,
what options do we have to secure that link?
- There are a few things that we can do here.
Instead of leaving this experience unauthenticated,
we can require authentication
with your chosen identity provider
like Azure Active Directory.
Additionally, you can require two-factor authentication
using SMS, using that same SMS client we sent before
to validate the phone number
of the customer trying to connect to the call.
- Great, so we can implement then the security measures
that suit our needs, but, back to our code,
now we just need to include our two-way video stream
into the customer care web client that we saw.
- Right, so first off,
our web client will need an authentication token
from my web service.
Now I have some simple HTML setup to display the video.
From my JavaScript code,
I'm gonna call into the web service
and get the authentication token,
then use it to create a call client.
Once I've created that call client,
I can create some call parameters,
like which camera I want to use, the idea of my group,
and use those to join a group call.
When the call is joined,
I'll set up a couple of event handlers:
one when participants join,
and one when the video streams are added.
In the video stream handler,
I'll render the new video stream
into the HTML element I had before,
and finally, I'll hook up the local camera
to the preview HTML element,
so I can render it on top of the incoming call.
Now when the call is finished,
I'll call hang up on the call object.
- Okay, now beyond this
so you can extend this up even further, right?
- Absolutely, that was just basic SMS and video chat,
but of course, from here you can do much more.
You can add features like muting, switching cameras,
screen-sharing and handling up to 50 participants
in that group call.
- And to take that kind of to the next level,
I guess we could probably use some of the services
within Azure to extend that even further
than the things that you just mentioned.
- Yeah, and that's an area we're really excited about.
You know, as you build these communication-rich experiences,
our cloud integration model makes it easier than ever
to extend them further.
And we are making an SDK available for the preview,
so you can connect with Azure services
like Azure Cognitive Services
to add AI-driven capabilities like live transcriptions,
or Azure Bot Framework, for intelligent
and interactive chatbot experiences
like you saw on the demo.
Azure Media Services,
where you can do things like take a meeting recording
and broadcast it beyond your company walls.
And of course, you can tap into the power
and capabilities of Microsoft 365 by using Microsoft Graph.
- Okay, so the sky's the limit then
with these types of apps, but one more question
I think a lot of people are wondering is,
how does Azure Communication Services then integrate
with Microsoft Teams?
- Well that's something we're gonna light up soon
in the public preview.
You know, imagine the same scenario that I just showed you.
The customer would be on a lightweight mobile experience
that was custom-built for Contoso Appliances.
And the technician could be on that same
familiar Teams experience they use every day
to join that same call.
- This is really exciting and so important right now,
especially where delivering these types of responsive
and high-touch communication experiences
can help people feel a lot more connected through video,
but what's the best way to learn more?
- Jeremy, I'm a firm believer
that the best way to learn is to try,
and so you can start kicking the tires right now.
The public preview of the Azure Communication Services SDK
is available today at aka.ms/ACSPreview.
And for extra inspiration, you'll find tons of quick starts
and samples to get you started.
- So thank you, Scott for the great overview
of Azure Communication Services.
And we really hope that we answered all of your questions
and let us know what you think.
Also keep watching Microsoft Mechanics
for the latest tech updates.
Subscribe if you haven't already, and thanks for watching.
(upbeat music) (electronics beeping)