Deep Dive into advanced Teams Development - DQC van... · to non-messaging APIs, such as team...

Post on 22-May-2020

3 views 0 download

transcript

Deep Dive into advanced Teams Development

Rick Van Rousselt

DQC DEV SUMMIT

Getting started with Teams development

How to setup your development environment

Setup your development environment

http://bfy.tw/Mx6e

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 : rick.van.rousselt@advantive.be

rickvanrousselt

https://www.rickvanrousselt.com

jobs@advantive.be