- Up next on this special edition of Microsoft Mechanics
we're joined once again by Microsoft CVP Scott Van Vliet
to take a look at the latest updates
to Azure Communication Services.
From core capabilities generally available this month
for your production workloads
and new capabilities available in preview,
such as interoperability with Microsoft Teams,
integration with the Azure Bot Framework
for intelligent voice response,
and new UI controls and much more.
So Scott, welcome back to the show.
- Great to be back Jeremy, thanks for having me.
- And thanks so much for joining us from home today.
So last time you were on the show about six months ago,
we introduced Azure Communication Services.
In fact, to catch everyone up if you're new to the service,
it's a new platform
for building rich custom communication experiences
that leverage the same enterprise-grade services
that back Microsoft Teams all through Azure.
Now these are exposed via a selection of APIs and SDKs,
and this allows you to hook in the capabilities like voice
and video calling over IP, one-to-one and group chat,
text messages for SMS, telephony calling with PSTN
and deliver authenticated experiences
over your identity service of choice
to any app, browser, PC and mobile platform,
as well as IoT devices on the Edge via Azure,
one of the fastest real-time communication networks
in the world.
So Scott, how have things evolved
since the last time you were on Mechanics?
- Well, We have been busy and I'm happy to tell you
that the foundational capabilities you mentioned
with voice, video, chat, SMS
and PSTN calling are generally available this month.
As part of this,
while you can access ACS anywhere in the world,
we are expanding our global telephony coverage
beyond toll-free numbers in the US,
starting with phone numbers available in the UK
and Ireland next month, with dozens more countries
coming by the end of the year.
You'll also be able to bring your own existing phone numbers
via direct routing with your own SIP trunks.
- That's really great news,
especially given the interest that we've seen in the service
from our last show.
But how are you seeing this then being leveraged?
- There's been an amazing response
to Azure Communication Services across various industries.
And this translates to millions of voice and video minutes
and tens of millions of chat and SMS messages
as many of you experiment
with custom app communication experiences.
And one of my favorite use cases
is from Norwegian company Laerdal Medical,
who provide training and education products
for life-saving and emergency medical care.
They developed a TCPR link app
that uses Azure Communication Services
to connect their volunteers administering CPR
with medical dispatchers via video streaming.
So they can get in-the-moment, just-in-time expert feedback
as they perform CPR to improve the quality of treatment
and patient survival rates.
Now they estimate the app will reduce CPR error
and save thousands of lives every year.
- And that's really a great example
of real-time communications.
And I'm sure we'll see even more examples now
with the general availability of core services coming soon.
But there's more for everyone to look forward to
that you've just launched today
as part of the public preview.
- We have, and this is actually
what I'm going to be demonstrating today
in the next few minutes.
This includes Azure Communication Services interoperability
with Microsoft Teams
and integration with Azure Bot Framework
to connect chat bots to traditional telephone numbers
so that the bot can speak responses
via natural language processing
from Azure Cognitive Services
for interactive voice response or IVR scenarios.
And lastly,
an overwhelming number of you have requested UI controls.
So we've started with react controls for video calls
and we'll be expanding to controls available on GitHub
over the next few months.
- Can we see how this would work in action?
- Well, of course. So Jeremy, last time we talked
I was having trouble with my refrigerator
and I showed you how we could build
a simple customer support video chat application
using Azure Communication Services.
I thought we could revisit that customer support scenario,
but this time
take a look at some of the awesome integrations
we made into Office and Azure
with a Microsoft Teams meeting, Microsoft Graph,
and the Bot Framework.
So I'm having trouble with my car
and I couldn't resist visiting the Microsoft Mechanics.
- That's why we're here.
- So I'm going to contact the Microsoft Mechanics
by dialing the 1800 number on their website.
And I'll be greeted by a bot.
As we go through this you'll be able to see
the logic behind the bot with the decision tree,
for its responses on the side.
So I'll dial the number and wait for the bot to pick up.
- [Bot] Hello and welcome to the Microsoft Mechanics
customer support bot.
Am I speaking with Scott?
- Yes.
- [Bot] Hi Scott.
I see you recently purchased a vehicle from us.
How can I help you today?
- Well, I'm having a mechanical issue.
- [Bot] Okay. Can you tell me more about the issue?
- My car is making a rattling noise coming from inside.
- [Bot] Let me transfer you to someone.
Would you like to continue on a voice call
or a video call.
- Lets do a video call.
- [Bot] I've set up an appointment with a technician.
Look out for an SMS message at this number
with a direct link to the video call.
Is there anything else I can help you with today?
- No, that's it.
Thank you so much.
So at this stage, once I receive and tap into the SMS
I'll be in a video call with the technician who is on Teams.
In this case, that's you Jeremy.
So I'm going to tap in on my phone
and be on hold on while I'm waiting for you.
- Okay Scott.
So why don't you head over to your car
and we're going to take the call from there.
Okay. So now if we switch over to my screen,
I'm in the support channel in Microsoft Teams
and I can see a message from the bot.
Now it's already checked my calendar.
It knows that I'm free and it's letting me know
that Scott is waiting for a technician.
And it's even provided a description of the issue
that he's facing.
So I've got now all the contexts I need.
And from here I can join the video call.
So I'll go ahead and admit Scott into the meeting.
Okay, so I can see you now Scott.
And I understand that you've got a noise coming
from the interior of your car.
So why don't we troubleshoot this a bit further?
Can you tell me about the noise, when you hear it,
What it sounds?
- Sure, let me flip the camera here
so you can see what I'm looking at.
So the noise is kind of this plasticky rattling sound
coming from the center of car.
And it kind of happens when I go over bumps.
And so I've checked the vents.
I've also checked the center console here.
I've also checked the cup holders
and even I've checked the glove box
and I can't find out what's going on.
- Are you sure you've checked all the compartments?
- I think so.
- what about the overhead console there?
- Oh, here yeah. I usually keep my sunglasses in here.
Let me take a look.
- All right so I think I just saw the problem.
There's a little man that's in your sunglass holder.
- This guy?
Oh man, my kids keep coming into my truck
and they've got to stop doing this.
- So I have a feeling this is going to take care
of your rattle.
Is there anything else I can help you with?
- No, I think you've solved the problem.
Thank you so much.
- Perfect. No problem.
So while Scott heads back, just a quick recap.
So we just saw IVR integration
with escalation to Microsoft Teams,
adding a video feed for the caller.
And the UI controls that were on Scott's phone:
those are also part of the new public preview.
So I'll go ahead and admit Scott.
- Yeah, this is the next chapter
in building rich real-time communication experiences
with Azure Communication Services.
- And the great thing is
it feels like a super high-touch experience
from the conversational, intelligent virtual assistant
all the way up to the various escalations
that we saw to a human expert,
in this case it was me.
So how did you get all of this working?
- Well, let me show you the code.
First, I can use the Bot Framer Composer
to quickly visualize the flow of my interactive voice bot.
And here's the decision tree that the bot goes through
with each interaction.
I can test and debug this flow
as a text-based chat bot that uses LUIS
and Azure Cognitive Services
for natural language understanding.
And I can also publish to Azure, right from the composer.
You can see here on the flow, where the bot made a decision:
when I asked it to talk to an agent.
It could have connected directly via PST into a phone number
and I would have started talking immediately
to a live person.
Or it can follow the path I've demoed here
where it used Microsoft Graph
and Azure Communication Services
to set up a Microsoft Teams meeting with the technician
and send a join link to the customer via SMS message.
- So what did you use then to navigate the logic
and flow that was needed to automate all those steps?
- Well, I could write this in native code
using the Azure Communication Services STKs
for .net or JavaScript, for example.
But there is a much easier, no code path using a logic app.
So here I am in the logic app designer.
First, I'm going to create an HTTP request.
This is the HTTP endpoint that my IVR bot will call
to send the SMS message.
I'm going to paste in an example JSON payload
that I would send.
The designer automatically parses that data
and builds a schema for me with the customer's name,
the meeting join link and the phone number.
Now I can add an Azure Communication Service step
to send an SMS message.
The phone number I have for my Azure Communication Services
resource is available from the dropdown,
and the parameters from the HTTP request
are already available for me to use as inputs
to the send SMS connector.
So I'll put in a phone number here,
and I'll create a custom message with the customer's name
and a link to join that Microsoft Teams meeting.
Now I can take this URL
and paste it back into the Bot Composer.
- Okay, so now we have the bot connected to the service.
We're creating Teams meetings and sending SMS text messages.
But what did you have to do then to get this all working
with the phone number?
- So from the Azure Portal,
I can connect the bot to a PSTN phone number.
I've already connected this bot to the direct line speech
and web chat channels.
I can now also connect the bot to the PSTN phone number
using Azure Communication Services.
I'll click on the Telephony channel down here
and add in the phone number, the end point information
and the access key
from my Azure Communication Services resource.
- With those pieces in place,
how did you then set up the inter-op
between Microsoft Teams and your app?
- Well, that's the next step.
My service backend can call Microsoft Graph APIs
and set up the meeting.
Here from Microsoft Graph Explorer,
I can test out the query I want to use.
I'll post to the online meetings
create or get API with the meeting information.
This returns a boatload of metadata about the meeting.
For my Azure Communication Services app
to connect to the Teams call,
I'll need the tenant ID and the thread ID.
I just pass this information
into the Communication Services APIs
when I join a group meeting.
The Microsoft Mechanics mobile web app
uses all the same APIs that are available
to all Azure Communication Services apps
to join and connect and interact with the video call.
- Awesome. So this looked pretty straight forward
to recreate all those different steps.
And it's really great
to see the latest round of functionality,
but I know you and the team are never done.
So what are you working on next?
- We really appreciate getting all the feedback from you.
In fact,
we're working on connecting several cool capabilities,
such as call recording and live transcription
to Azure Cognitive Services
so that you can do things like sentiment analysis.
And there's a lot more coming
that I'll share with you next time.
- Okay. So if you want to get started
building out some of this stuff, what do you recommend?
- Well, you can start kicking the tires now
with the core features of voice, video, chat, SMS
and PSTN calling generally available this month.
And you can find out more at aka.ms/GetStartedWithACS.
For the public preview of the next features
for Azure Communication Services,
you can find more information at aka.ms/ACSPreview
and that includes the interoperability with Microsoft Teams.
- Awesome stuff.
Thanks again so much for joining us today, Scott.
And hopefully we answered all of your questions
about Azure Communication Services
and let us know what you think.
And also keep watching Microsoft Mechanics
for the latest tech updates.
Subscribe if you haven't already
and we'll see you next time.
(logo whooshing)
(Upbeat music)