OJASVI CHOUDHARY: [MUSIC]
Hey, folks. Today we're going to talk about how to
build engaging
conversational apps within Microsoft Teams.
I'm Ojasvi Choudhary and I'm
a Product Manager over here in
Microsoft Teams responsible for
a conversation app platform.
SID UPPAL: Hey, folks, my name is Sid
and I'm a
Group Engineering Manager
working in Team's platform.
We're going to be talking about a lot of
exciting updates today.
First off, we'll talk about the ability for
bots to receive messages without being mentioned.
We'll talk about some new features related to
adaptive cards that we are rolling out.
We'll talk about something
new around Suggested Actions as well,
which is really powerful.
We'll talk about updates related to
application lifecycle that bots can now receive.
We'll talk about Single Sign On as well.
First off, let's talk about the ability for
bots to receive messages without being mentioned.
Ever since we've announced
support for bots inside Microsoft Teams,
this has been one of
the most requested features
and we now have it available in GA.
This only works for bots who have been granted
a specific resource consent permission
and that permission is ChannelMessage.Read.Group.
If your bot has this permission,
it would be able to receive messages
in the channel without being mentioned.
Using this permission is really simple as well.
It's a couple line change inside
your app manifest and that's all it takes.
I'm going to get into scenarios
next, but before I get there,
I want to land
one important point of
why this is such an important feature.
Because your bot can now
receiving messages without being mentioned,
what this means is that you can now write
your bot code so that it responds only
when it has a very good answer
instead of having to answer just
because it was @mentioned by
a user and give a good enough answer.
That's key and let me try and give an example here.
We'll take an extreme example.
Let's say you had a bot,
and the only useful thing it does is that when it
detects specific phrase like ABC 1,
2, 3, it looks up that number
inside your ticketing system and replies with a link.
Now, if this bot was something users have to @mention,
it would have been a cumbersome
experience for users to use.
As a result, what you would find is people are
not going to use that bot that much.
But now that your bot can
receive messages without being mentioned,
it can look for this phrase as
a simple regular expression check
and then it can reply with
information about this ticket inside
your ticketing system for the benefit of users.
Right away you would see a lot more happier engagement
that users would have with your bot.
This is the thing that makes us powerful.
With this, let's get into some scenarios here.
We'll talk through a bunch of scenarios.
We'll start off with FAQ.
The thing that FAQ is that we have had FAQ bots before.
Whenever a bunch of folks get
together to work on something, collaborate together.
It could be a project. It could be a startup.
It could be parents or
hikers or electric car enthusiasts, what have you.
There's always a scenario where
there's a set of questions that get asked frequently,
and people have tried to build bots to help with these.
But the challenge you have as a bot developer for
FAQ bot is you've got a bootstrapping problem.
Your bot will not know answers to
all the questions users can ask in the beginning.
As a result, when users
@mention your bot to ask it something,
because it won't have the answer,
they'll not try your bot ever again.
Now because of this feature,
you have a chance to actually
solve FAQ better than before.
Now because of this,
let's take the electric car enthusiast example.
You could have a channel in
your team where people are going to ask questions.
Let's say someone comes in and asks,
hey how do I get
electric car charger installed in my home?
Now your bot can look for
specific keywords in the messages posted,
and it could look for electric car charger installation
and then look for messages that were asked
before or posted in the channel before and then reply
with links to those messages under this message.
Right away the user that posted
this message would get value out of your bot.
This is one way how FAQ scenario is better.
The other way FAQ can be better now,
is you can have a mapping of
keywords to subject matter experts
and then your bot can then @mention
those people's auto reply to the message.
Here are two ways how FAQ scenario can now be much
better than before in your bots.
We'll talk about kudos next.
Kudos is another one of those scenarios
where it was possible earlier.
We had Braze available as an app in Teams.
We also have apps available in our store like
DISCO that you can use to give kudos to people.
But as a user,
they require you to take a bunch of extra steps to be
able to give kudos to
someone to get this app can track it.
But, I would argue it's more natural
to just thank people,
give kudos to people in just plain English.
That's how most people do it.
But up until now,
your bots couldn't listen for those things, and
update a leaderboard or anything like
that. Now that's possible.
Here's a screenshot where someone is thanking someone
for collaboration and teamwork,
and a bot can now look for these keywords
in an update a leaderboard in the back end,
or also just one with
the card that allows others to pile on as well.
Again, kudos scenario can
also be better now than before.
Up next, we'll talk about ChatOps which is
one of my favorite scenarios as a EM.
With ChatOps, one of the big scenarios we
usually have is there's an outage and there's
a discussion that happens related to
that outage and you want to make
that discussion archived into the outage itself,
so that it can be sourced and all good things there.
But that was also hard up until now.
But again, because bots can now
receive messages without being mentioned,
a bot can start a discussion
about an outage that just happened and
then look at the replies that happened under
the discussion and then
see if that in your ticketing system,
if that's what you want.
That's one way ChatOps can be better.
The other one is, again,
users can no more naturally ask
for information like who is the current on call?
Your bot can run some Azure cognitive services
and then detection and the reply
with the appropriate answer.
ChatOps can be better as well.
This is important because in ChatOps
things are moving so fast.
It's all the heat of the moment thing.
The more easier you can make it
for people during the outage, the better off you are.
This is the last thing
I'm going to cover.
This goes back to the example I had earlier.
The key here is, when you're asking people to add
mention bots and send things in specific syntax,
you're asking them to do something new.
Some people will do it, but it's always hard
to get people to do and learn
new things than modifying a bot
to deal with how people are used to doing things.
But now because of this feature,
here's one example where you
can have a simple keyword to link resolver,
and your bot can come in and
reply with the link
based on the keyword it detected in the message.
This is what I have for the future of bots being
able to get message without being mentioned.
Up next, I'm going to hand it to Ojasvi
to talk about the Adaptive Card updates.
OJASVI CHOUDHARY: Hi, Sid. Let's talk about
the latest features for the Adaptive Cards in Teams.
We think of Adaptive Cards as
basically the front end for your conversational apps,
and we will spend a lot of time making sure that
they're polished and simple to use for our users,
and for you developers,
we want to make sure that you have as many scenarios and
features and capabilities possible
that you can build on top of Adaptive Cards.
The first feature we've got about
how to support with Adaptive Cards.
On the left is the old Adaptive Card,
and then the right is the new one.
Essentially, you can see is that with
full weight Adaptive Cards you to got more space to play
with, and your application
ends up looking more sleeker and polished.
This is only one line of change, and we would
highly encourage you to make this change,
if you're dealing with too much text and
content within your app.
Next up, we've got Static Autocomplete.
Now what you can see over here is
that filling out a form,
in this case, an expense report.
Filling out a form ends up being
a pretty typical scenario within Microsoft Teams,
and sometimes users have to scroll through 50,
60, or hundreds of categories
in order to select what they want,
and rather than having them scroll,
you can just use this feature
that we're calling over here as Static Autocomplete,
which as it types it's going
to zero in on what the user want,
and then they can easily select it
from that and complete the workflow.
Next up, we've got Dynamic Autocomplete.
This is a little more nuanced
version of Static Autocomplete.
What this is basically is,
is it search for
your conversational apps within Microsoft Teams,
you will have an Adaptive Card, and you can
basically enable search to your applications back-end,
and linked the possibilities over here are
pretty much endless in terms of what you can build.
Next up, we've got People Picker.
People Picker is just one of those scenarios that
we've heard from many application developers that
comes across as vital for your workflows.
If you can think of like you want to create
a new ticket and assign that ticket to someone,
or if you want to ask for
an approval request from your manager,
pretty much Teams is a collaborative app.
So you would have a lot of
workflows where you would assign things to
people and people would come
together to work on a particular problem.
If you've got one of the scenarios,
we would highly recommend you leveraging the inbox
People Picker within Adaptive Cards for your apps.
For a last feature, we've got something very special,
which is User Specific views.
Again, as I said, Teams it's a collaboration platform,
and really the scenarios that
make the most sense and that shine the most is
where you have a bunch of people who
are working together on a singular workflow.
For example, what you can see over here,
there has been a boiler leakage incident,
and first person Megan has gone
ahead and created a report that says,
"There is a boiler leakage.
Could someone please take a look?"
Now, from her perspective,
the action that she has,
has the ability to edit
the incident and add more information to it.
Then for Alex,
who the incident gets assigned to,
they can go ahead and resolve it.
Ultimately there are other people within
the channel who should just be
only able to view the incident.
They shouldn't necessarily have the ability to edit
or resolve the incident.
If you have scenarios where
multiple people are collaborating
and working together on the same workflow,
User Specific views will solve many and many of them.
In terms of resources,
we've got blog posts,
we've got detailed documentation
on our developer website
that we've invested a lot in terms of
enabling you to use Adaptive Cards for.
So please do go ahead and check that out.
Next up, we've got a new feature.
It's called Bot suggested actions.
This was, again, highly requested developer feature.
It's available both on desktop and mobile.
Essentially what it does is,
it allows you,
the conversation application developer,
to suggest actions to
the user in the one-on-one bot chat stream.
This is going to be highly relevant and mobile,
where users typically don't like to type,
and they would much rather select
buttons to move the workflow along.
One thing to call out over help,
the difference between having
buttons inside the Adaptive Cards
versus suggested actions is
that the Adaptive Card is static,
so if the user scrolls up and down,
they might lose the workflow,
but these things are going to stick with the user,
and it's a better way
of keeping the user on rail for your app.
Next up, we've got Events and application lifecycle.
If you're building a bot and
a conversation app within Microsoft Teams,
it's very important to understand what's
happening in the context that you're
operating in, whether it's a Team.
Now if you're operating in
the context of Team you should know
when a channel was created or channel was restored,
if a Team was deleted or
effective Team has been archived,
so you can take the necessary action on your side,
as well as build more engaging scenarios.
One of the events that we released last year that we
think is going to be relevant to
a lot of world developers,
is going to be the installation update event.
Every time your application or your bot is
installed or uninstalled from a thread,
you will get this event.
Two critical scenarios you can
use this for is, number q,
you can use it to send an introductory message from
your bot on installation, and two,
on uninstall you can use it to clean
up and delete any user or thread specific data,
and meet your privacy requirements.
These are the resources for you over here.
We've got a blog post that
describes the full life cycle as well
as specifics
about the various conversational
and installation events in Teams.
Lastly, we've got single sign on.
If your application requires access to
any privileged data within Microsoft 365,
or let's say, for example,
if you want to access the user's calendar,
we would highly recommend you to use single sign on.
With single sign on, the user only needs to
give permissions once,
and after that, the experience of
using your app is going to be pretty much seamless.
In terms of resources, we've invested
a lot in terms of samples,
click-through guides, step by
step guides for both bots and message extensions,
as well as samples on GitHub.
So please do check those out.
Thank you so much for joining us for the session today.
We hope you have an amazing Build,
and please let us know what applications you build.