deep dive into advanced teams development - dqc van... · to non-messaging apis, such as team...

53
Deep Dive into advanced Teams Development Rick Van Rousselt DQC DEV SUMMIT

Upload: others

Post on 22-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Deep Dive into advanced Teams Development

Rick Van Rousselt

DQC DEV SUMMIT

Page 2: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Getting started with Teams development

How to setup your development environment

Page 3: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Setup your development environment

http://bfy.tw/Mx6e

Page 4: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Lets dive in

Page 5: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although
Page 6: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Manifest

Page 7: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Manifest

Describes functionality of your Teams app

Part of the definition you upload

Page 8: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Manifest

• Describes how the app integrates with Teams• Name• Description• Icons• Permissions• Valid DomainsTabsStatic TabsBotsConnectorsCompose Extensions

Page 9: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Website to host your code

The actual functionality of your app

Page 10: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

App Studio

• Simplifies the process of creating Teams apps

Page 11: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

ngrok

Page 12: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although
Page 13: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Teams

Page 14: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

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

Page 15: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although
Page 16: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Tabs

Page 17: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Tab scopes

Teams

Personal

Group

Page 18: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

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

Page 19: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Personal tabs

1:1 conversation or chats

Static tabs: content that is

relevant to individual users

Page 20: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although
Page 21: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Demo

Page 22: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Bots

Page 23: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Bot scopes

Teams

Personal

Group: dev preview

Page 24: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Appears like any other team member except a hexagonal avatar icon and is always online

Page 25: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Team bot

visible in channel

requires the user to @mention the

bot

Page 26: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Personal bots

User can just start typing

Page 27: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although
Page 28: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Connectors

Page 29: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Connectors

Post activity to a channel• Text• Card• Actionable messages

Incoming webhookPosting a JSON to an HTTP endpoint

Page 30: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

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/

Page 31: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Demo

Page 32: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Message extensions

Compose extensions

Page 33: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Message extensions

• Integrate your app directly in a chat

• Get information from your app and post that information

• Uses the bot framework

Page 34: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

• 5 seconds to respond• Default query possible (initialrun = true)

• Recently viewed items• Favorites

• Every request has information about the user

Page 35: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although
Page 36: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

First there was search

Page 37: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Now Actions

• Static• Teams will render a form for you

• Dynamic• You can do whatever you want

Page 38: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Demo

Page 39: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Activity Feed integrations

Page 40: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

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

Page 41: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Demo

Page 42: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Outgoing webhooks

Custom bots

Page 43: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Outgoing Webhooks (custom bots)

• Easy way to extend teams without the need of building a full bot

• Listens to @mentions• First authenticate the caller

Page 44: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

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.

Page 45: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Calling

Page 46: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Call types

Page 47: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

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,…

Page 48: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

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

Page 49: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Demo

Page 50: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Authentication

Page 51: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Tips

Page 52: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Create an afterbuild

task

Page 53: Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team roster membership. • Outgoing webhooks cannot post into channels proactively. • Although

Rick Van Rousselt

CTO Advantive BelgiumOffice Apps and Services MVP

BIWUG Board Member

Email : [email protected]

rickvanrousselt

https://www.rickvanrousselt.com

[email protected]