deep dive into advanced teams development - dqc van... · to non-messaging apis, such as team...
TRANSCRIPT
Deep Dive into advanced Teams Development
Rick Van Rousselt
DQC DEV SUMMIT
Getting started with Teams development
How to setup your development environment
Lets dive in
Manifest
Manifest
Describes functionality of your Teams app
Part of the definition you upload
Manifest
• Describes how the app integrates with Teams• Name• Description• Icons• Permissions• Valid DomainsTabsStatic TabsBotsConnectorsCompose Extensions
Website to host your code
The actual functionality of your app
App Studio
• Simplifies the process of creating Teams apps
ngrok
Teams
ngrok
• Setup an account and get an auth token• Run ngrok authtoken <yourtoken>• Update file with
• tunnels: • signaling: addr: 12345 • proto: http • host-header: localhost:3979
• media: • addr: 8445 • proto: tcp
!!Python style
Tabs
Tab scopes
Teams
Personal
Group
Teams tabs
For a channel and allows for a
shared experience
Always a configurable tab
User configures the tab experience
the first time it’s added
Personal tabs
1:1 conversation or chats
Static tabs: content that is
relevant to individual users
Demo
Bots
Bot scopes
Teams
Personal
Group: dev preview
Appears like any other team member except a hexagonal avatar icon and is always online
Team bot
visible in channel
requires the user to @mention the
bot
Personal bots
User can just start typing
Connectors
Connectors
Post activity to a channel• Text• Card• Actionable messages
Incoming webhookPosting a JSON to an HTTP endpoint
Actionable messages
• Get notified of activity but also act on this activity
• Removes the need of extra steps like switching application
Create an actionable message:http://messagecardplayground.azurewebsites.net/
Demo
Message extensions
Compose extensions
Message extensions
• Integrate your app directly in a chat
• Get information from your app and post that information
• Uses the bot framework
• 5 seconds to respond• Default query possible (initialrun = true)
• Recently viewed items• Favorites
• Every request has information about the user
First there was search
Now Actions
• Static• Teams will render a form for you
• Dynamic• You can do whatever you want
Demo
Activity Feed integrations
Activity feed integrations
• Uses the bot framework api• Flag specific messages to appear in the activity
feed• Use deep linking to navigate the user to content• You can create a notification only bot
Demo
Outgoing webhooks
Custom bots
Outgoing Webhooks (custom bots)
• Easy way to extend teams without the need of building a full bot
• Listens to @mentions• First authenticate the caller
Outgoing webhooks limitations
• Outgoing webhooks do not have access to non-messaging APIs, such as team roster membership.
• Outgoing webhooks cannot post into channels proactively.
• Although outgoing webhooks can use cards, they cannot use button actions like imBack or invoke.
Calling
Call types
Calls and meetings
• 2 types of meetings:• Ad-hoc• Scheduled
For a bot this is not true: A meeting is just a (multiparty) call with additional metadata such as: chatId, joinUrl, startTime, endTime,…
Add additional permissions for the AAD app
Permission Display String Description Admin Consent Required
Calls.Initiate.All Initiate outgoing 1:1 calls from the app (preview)
Allows the app to place outbound calls to a single user and transfer calls to users in your organization’s directory, without a signed-in user.
Yes
Calls.InitiateGroupCall.All Initiate outgoing group calls from the app (preview)
Allows the app to place outbound calls to multiple users and add participants to meetings in your organization, without a signed-in user.
Yes
Calls.JoinGroupCall.All Join Group Calls and Meetings as an app (preview)
Allows the app to join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined with the privileges of a directory user to meetings in your tenant.
Yes
Calls.JoinGroupCallasGuest.All Join Group Calls and Meetings as a guest (preview)
Allows the app to anonymously join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined as a guest to meetings in your tenant.
Yes
Calls.AccessMedia.All Access media streams in a call as an app (preview)
Allows the app to get direct access to media streams in a call, without a signed-in user.
Yes
Demo
Authentication
Tips
Create an afterbuild
task
Rick Van Rousselt
CTO Advantive BelgiumOffice Apps and Services MVP
BIWUG Board Member
Email : [email protected]
rickvanrousselt
https://www.rickvanrousselt.com