TITLE: [MUSIC]
MANPRATAP SURI: Hello. Thanks for joining us
at Build Today.
I'm Manpratap Suri, Principal Product Manager
with Microsoft Teams.
MANASI SHARMA: I'm Manasi Sharma,
Senior Engineering Manager with Microsoft Teams.
We're going to share
some exciting enhancements to
the Microsoft Teams platform
and learn how to create
interactive and powerful Teams applications in minutes.
MANPRATAP SURI: That's right, Manasi.
With the shift to
hybrid work,
we are seeing more users than ever join Teams meetings.
We realize it is even more important
to make it easy for you, the developer,
to build collaborative experiences for
end users and enable them
to work together in more productive ways.
Last year, we introduced
new features in the meetings platform.
These enable you to plug even more deeply
into the meetings lifecycle of a scheduled meeting.
We also showed some powerful updates to tabs
and adaptive cards that let you
build engaging apps for our customers.
We've now extended these capabilities to include one-on-
one and group calls which are just as popular,
if not more, as schedule meetings.
Your existing Teams meeting applications
will now also work across one-on-one and group calls,
and you have to make no changes to
applications or to the app manifest.
With hybrid work here to stay,
we are on an exciting journey to see how new tools and
technologies are supporting this new model of working.
Like us, many are planning to balance working
from the office and or remotely throughout the week.
This gives everyone a chance
to participate and collaborate
while avoiding flexibility in
planning their work and personal life.
Hybrid meetings in Microsoft Teams will play
a big role in creating this space for collaboration,
and apps will light up the experiences that build
Team connections and productivity in this new world.
Only at Build, we talk about how users
collaborate in Teams today with screen sharing sessions.
But sometimes we want to do more than
share a static image of your work.
You want to be able to work together
directly regardless of a physical location,
and our teams can help with that.
Today, we're going to show you
how to create applications that allow you to
share a Team's meeting app content onto
the meeting stage for everyone to
see and also interact with it in real time.
Imagine all the collaboration
scenarios this opens for you,
such as doctor sharing patient system of record with
the patients during telehealth visit
and virtual examinations.
We do see scenarios like following up on sales lead,
reviewing and e-signing contracts and many more.
But it is not all about synchronous collaboration.
We will also create applications that enable
asynchronous collaboration scenarios
such as task assignment,
which requires picking people from chat only
alphabetically and
associating actions or items with them.
All of this right from within
the adaptive card boosting conversation productivity.
Let me hand it over to Manasi,
who will show you how to create
these applications and explain how this work.
MANASI SHARMA: Thanks Manpratap.
Hybrid work is
upon all of us.
Keeping that in mind,
I created the simple app for office admins and
space planners as they begin to
assess how many employees will come back to work.
Let me show you the app.
I'll begin by sideloading
this app to an already scheduled meeting.
By the way, this same application will work for one on
one and group call scenarios
without additional work on app developers.
Now that I've configured the tab
as an office admin at the recent Team meeting,
Adele was able to share the
Hybrid Hub app with the team.
This was made possible using the shared the stage
APIs via team client
sticky that we launched late last year.
However, since then we've
made significant improvements to them.
What if rather than sharing the
entire app with everyone,
I only want to share
the hybrid preferences section with everyone.
With programmatic shared two stage APIs,
I can share specific segments
of the app to meeting stage.
MANPRATAP SURI: That is wonderful.
Now this app
is already building on participant rules,
meeting site panel, and all the
other meetings of app goodness?
MANASI SHARMA: That is correct. Let me
show you the code behind this app.
To enable an app for Teams meeting,
you need to update your app manifest and use
the context properties to
determine where your optimistic view.
The meetings app capabilities are declared in
your app manifest using the configurable tabs,
scopes, context arrays and permissions.
The scope defines who can access and
the context defines where your app is available.
The context study determines what
must be shown when a user
invokes an app in a meeting
depending on where the user invokes the app.
For example, if your contacts
are a support meeting side panel,
then the app will be rendered as an in meeting tab,
which is 320 pixel width.
Meeting APIs are guided by RSC permissions so
that the user consent is
restricted to a given meeting instance.
To use the carded meeting APIs,
you must obtain the corresponding RSC permissions.
In the app manifest,
configure the authorization property and
the name and the type in the resource specific field.
For example, there's
a delegated resource specific permission
called meetingstage.write.chat,
which you must declare in the manifest in order to
interact with shared app content to stage API.
Speaking of shared the stage APIs.
Remember how I shared
the entire app with the meeting stage that was made
possible by using the context properly
meeting stage as well as the RSC permission.
Now let me show you how I was able
to share specific components to the meeting stage.
We've made some powerful enhancements in this space.
In order to share specific segments
of the application to the stage,
you need to call share up content to
stage client SDK API in the meeting namespace.
This API requires two query parameters;
the app content URL that will be shared on the stage and
should be part of the app's valid domain
err in the manifest,
and the other parameter is a callback.
Now that you're sharing the app content to state,
you can check the state of the sharing at
any point using getAppContentStageSharingState API.
In addition to this,
we've also provided a pre-check API
called getAppContentStageSharingCapabilities.
This API returns if the app has
the permissions to be shared on
the stage based on user role,
attendee or presenter and user type;
anonymous, guest, or federated.
But these aren't the only APIs
you can leverage for your app.
We have getMeetingDetails API
that provides you with critical meeting
detailed information such as meeting start
and end time along with organizing conversation details.
We also provide attendee,
organizer and presenter role
information via get participant robot API.
This API also indicates if
the user is present in the meeting or not.
But keep in mind that
the user rules can change during the meeting lifecycle.
So please factor that in your design choices.
Not only that, apps can now subscribe to
changes in participant speaking
versus not speaking events.
Why the Team's client SDK by
subscribing to registerSpeakingStateChangeHandler,
and respond with an experience such as volume control.
A new app Manifest Permission was introduced
for users to consent to their audio being detected.
Here is a list of meeting
extensibility APIs which combine together
can help unlock
rich and collaborative meeting app scenarios
for your end users.
Another powerful one to emphasize
here is the real time meeting events API.
You can receive these real time meeting events through
an activity async handler via bot framework.
Your app must have
relevant permissions to receive these events as well.
MANPRATAP SURI: That seems super
helpful, Manasi.
I can imagine some pretty powerful scenarios with
these APIs such as running your daily scrum standups,
brainstorming session with whiteboarding,
with everyone collaborating together.
This is a great example of
synchronous collaboration in
a call or a scheduled meeting,
Manasi, but collaboration often
happens asynchronously in a chat or channel.
What have you to offer there?
MANASI SHARMA: That's right. Let me show you
a productivity experience working
in an asynchronous scenario.
As it often happens,
not everyone participates or is present in a meeting.
Coming back to the Hybrid Preferences app.
The office admin noticed that
some Team members were not present in the meeting.
In order to complete the back to work planning,
she can now assign using tasks
for specific team members.
She's able to search and select
the right task for a specified user.
The sender and the receiver get
their own customized view of the assigned task.
This has been enabled by leveraging
user specific views for adaptive cards,
type ahead search,
and people picker, which we've recently released.
This is really powerful as
the admin was able to perform all of
this from chat and
that too from within the adaptive card itself.
Let me show you how I build this.
There are three parts to achieving this experience.
First is the type of head search in adaptive card.
Type ahead search functionality in adaptive cards gives
an enhanced search experience
on input choice head component.
It provides the list of
choices to enter text in the search field.
You can incorporate Type ahead search with
adaptive cards to search as well as select data.
Keep in mind the enter text
becomes part of the JSON payload,
which can get bulky if you have a lot of entries.
You can also make this
dynamic to search and select data from
large datasets by specifying
data query in the JSON payload.
Second is the people picker in adaptive cards.
People picker helps uses to
search and select uses in adaptive cards.
You can add people picker as input control,
which works across chats,
channels, task modules and tabs.
This can light up scenarios
like approval based applications,
incident management, project management and user lookup.
The last is the user specific view
of the universal adaptive card.
Earlier, if adaptive cards
were sent in a Team's conversation,
all users will see the same exact card content.
With the introduction of
universal actions model and
the refresh for adaptive cards,
bot developers can now
provide user specific views of cards to users.
The same card can now
refresh to use a specific adaptive card.
A maximum of 60 different users can see
a different version of the card with
additional information or actions.
The adaptive card provides
powerful scenarios like approvals,
poll creative controls, ticketing,
incident management, and project management cards.
MANPRATAP SURI: Thank you so much, Manasi.
I learned a lot today about building
collaborative apps in Teams.
To recap, we showed
how your meeting apps now extend beyond
scheduled meetings into one-on-one and group
called reaching users where they are in a collaboration.
We show you new ways to collaborate in meetings
synchronously via our shared to stage APIs,
making any hybrid scenario collaborative, and lastly,
you can take advantage of enhancements
to adaptive cards to
enable asynchronous collaboration in chat and channels.
Well, this brings us to the end of the session.
I hope you gained some knowledge about building
collaborative apps for Teams.
Hope you enjoy it as a Build, thank you.