Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview...

58
Microsoft Teams Developer Overview Tom Jebo

Transcript of Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview...

Page 1: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Microsoft Teams Developer Overview

Tom Jebo

Page 2: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Agenda

What is Microsoft Teams?

Tab Overview

Design & Config

API

Bot Overview

Design

Build

Conversation

Events

Actionable Messages

Activity Feed

Compose Extensions

Apps and Side Load

Office Store

Resources

Page 3: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Chat-based workspace in Office 365

Build apps with a rich set of capabilities to enable these higher-performing teams

Page 4: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Extension Points in Teams

Reach your users in their chats, channels, notifications, and personal workspace

Available now

Bots

Help users get

tasks done in

conversations

Connectors

Post rich updates to

channels

Tabs

Surface rich

content within

Teams

Office

Store

Drive engagement

by submitting

your app to the

Office Store

Actionable

Messages

Add rich

interaction to your

connector cards

Activity

Feed

Engage users

via feed

notifications

Compose

Extensions

Allow users to query

and share rich cards

in conversations

Available in Developer Preview

Page 5: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Microsoft Teams Extension Points

Reach your users in their chats, channels, notifications, and personal workspace

Available now

Bots

Help users get

tasks done in

conversations

Connectors

Post rich updates

to channels

Tabs

Surface rich

content within

Teams

Page 6: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Tab code/feature walkthrough

Page 7: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Tab Design

Relevance – channels are specific

Static – personal experience

Scope – provide boundaries that make sense

Access – Office Groups, streamlined access

Bots – reaching out, being helpful

Page 8: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Tab Considerations

Configurable vs Static

Configuration(required), reconfiguration, removal

Content – HTML based, hosted

Manifest – JSON based

Package – manifest.json + 2 icons

Page 9: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Tab Content

Requirements:

- Secure https endpoint

- Allow iframe

- https://statics.teams.microsoft.com/sdk/v1.0/js/MicrosoftTeams.min.js

- call microsoftTeams.initialize();

Page 10: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Tab code/feature walkthrough

Page 11: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Configuration

<html><body> <form>

<input> type=…

configUrl

Save

microsoftTeams.settings.setSettings({entityId, contentUrl, suggestedTabName, websiteUrl, removeUrl})

microsoftTeams.settings.setValidityState(true)

Page 12: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Tab Auth Considerations

Authentication

1. Silent – existing Azure AD token

2. Pop-up – non-AAD - microsoftTeams.authentication.Authenticate()

- microsoftTeams.authentication.Success/Failure()

Page 13: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Deep Linking

• Get and Copy link

• Generation

microsoftTeams.shareDeepLink()

https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>

• Share

Page 14: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

https://teams.microsoft.com/l/entity/

fe4a8eba-2a31-4737-8e33-e5fae6fee194/

tasklist123?webUrl=https://tasklist.example.com/123

&label=Task List 123

&context={"canvasUrl": "https://tab.tasklist.example.com/123","channelId": "19:[email protected]"}

Example Deep LinkappId

entityWebUrl

context

Page 15: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Teams js API

getContextinitializenavigateCrossDomainregisterOnThemeChangeHandlershareDeepLink

microsoftTeams

https://msdn.microsoft.com/en-us/microsoft-teams/jslibraryauthenticatenotifyFailurenotifySuccess

microsoftTeams.authentication

getSettingsregisterOnRemoveHandlerregisterOnSaveHandlersetSettingssetValidityState

microsoftTeams.settings

https://statics.teams.microsoft.com/sdk/v1.0/js/MicrosoftTeams.min.js

Page 16: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Bots

Interact in both Team conversations or 1:1

Built using Microsoft Bot Framework

Complete tasks via basic commands, menu or natural language

Rich Microsoft Teams features, e.g.

✓ Input menus

✓ Dynamic message updates

✓ Integrate with tabs

Page 17: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Bot Demo

Page 18: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Bot Design

Intelligent vs CLI

Be responsive – respond to every message

Say hello – use bot events.

Drive users as much as possible

Narrow scope

Use regular expressions

Still can be intelligent (i.e. LUIS)

Page 19: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Bot Framework

Build the code: https://aka.ms/bf-createsdkbot

Register at https://dev.botframework.com/

Provide information about the bot

Icon, name, handle, description, msg URL,

admin account.

Get Microsoft App ID and secret/password

Highly recommend Azure Bot Service!

https://docs.microsoft.com/en-us/bot-framework/azure/azure-bot-service-quickstart

Page 20: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Build a Bot

Build the code using Teams extension for BotBuilder

C#: Install-Package Microsoft.Bot.Connector.Teams

using Microsoft.Bot.Connector.Teams.SampleBot.Shared;

javascript: npm i botbuilder-teams

var builder = require("botbuilder");

REST APIs: https://docs.botframework.com/en-us/restapi/connector/#navtitle

Develop your way

Page 21: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Scopes: team vs personalHow your bot is added counts

Page 22: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Bot Demo

Page 23: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Microsoft Teams

Page 24: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Bot Conversations Basics

Activity object (type message)

text = “hello”

channelId (always “msteams”)

from.id – unique to user

channelData.tenant.id – AAD

channelData.channel.id & name*

conversationData.id and isGroup*

entities*

Receiving:

TeamsChannelData channelData = activity.GetChannelData<TeamsChannelData>(); stringtenantId = channelData.Tenant.Id;

Page 25: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Bot Conversation Creation

Add vs @mention – provides id’s for creating conversations and other operations

Channel – enumerate team roster.

Conversations created with unique user/tenant ID

bot.beginDialog() / CreateConversation()

/conversations/ (1:1) /conversations/{conversationId}/activities/ (channel)

Page 26: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Example 1:1 Conversation Starter

Id of the target User

Id of the Channel

Id of the Conversation

Page 27: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Bot Conversations Basics

Sending/Reply:

Activity reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters");

await connector.Conversations.ReplyToActivityAsync(reply);

await connector.Conversations.SendToConversationAsync((Activity)newMessage);

/v3/conversations/<conversationId>/activities/<activityId>/

Page 28: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Example reply with @mention

Page 29: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Bot Conversations Basics

NEW! Message Update:

/v3/conversations/<conversationId>/activities/<activityId>/

origAttachment.content.subtitle = 'Assigned to Tom Jebo’; var updatedMsg = new builder.Message()

.address(address)

.textFormat(builder.TextFormat.markdown)

.addAttachment(origAttachment)

.toMessage(); session.connector.update(updatedMsg, function(err, addresses)

{ if (err) { console.log(`Could not update the message`); }

Update method or REST endpoint

Page 30: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Events for Bots

Team member or Bot addition/removed

- to a team

- for personal context

Channel updates

Team name updates

Page 31: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Example: Bot added for personal context

- conversationUpdate- membersAdded- no channelData.team property

Possible action:Welcome message for uservs. team…

Page 32: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Send Cards

Property Type Description

title Rich text Title of the card. Maximum 2 lines

subtitle Rich text Subtitle of the card. Maximum 2 lines

text Rich text Text appears just below the subtitle

images: [] Array of imagesImage displayed at top of card. Aspectratio 1:1 (square)

buttons: []Array of action objects

Set of actions applicable to the current card. Maximum 6.

tap Action objectThis action will be activated when the user taps on the card itself

Page 33: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Bot code/feature walkthrough

Page 34: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Newer Features in Teams Extensions

Reach your users in their chats, channels, notifications, and personal workspace

Office

Store

Drive engagement

by submitting

your app to the

Office Store

Actionable

Messages

Add rich

interaction to your

connector cards

Activity

Feed

Engage users

via feed

notifications

Compose

Extensions

Allow users to query

and share rich cards

in conversations

Available in Developer Preview

Page 35: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Connectors with Actionable Messages

Push rich interactive cards into channels

Users can take quick actions like comment, select options, set a date

Uses incoming webhook API

Fully supported in both Teams and Outlook

Page 36: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Office365 Connectors in Teams

Page 37: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Office365 Connectors with Actions!

No need to leave Teams channel conversations

Stay focused and take quick actions

Page 38: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Messages with Actions

Page 39: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Microsoft Teams

Connector Service

Connector or Bot

Connector/Actionable Message Architecture

Data, Service,

Etc…

message

1 message

1 event

send card

2 response

Page 40: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Microsoft Teams

Connector Service

Connector or Bot

Connector/Actionable Message Architecture

Data, Service,

Etc…

http post

1

send update card

2

Page 41: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Messages with Actions

Page 42: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Activity feed

Notify users personally via the activity feed

Same API as sending bot messages

Deep link straight into tabs

Page 43: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Notifications in the Activity Feed

Page 44: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Compose Extensions

Personalize Teams Compose box with your App & Services content

Users can query and insert your app content into conversations

You can reuse services you built for Bots or Tabs

Page 45: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Compose extension in action

Page 46: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Microsoft Teams

Connector ServiceYour Bot Code

Bot Builder SDK

Compose Extension Architecture

Data, Service,

invoke/searchCmd

1 send request

composeExtension.attachments[…]

3 response

2 Query

Page 47: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Compose Extension Design

Optimize search results – keep it responsive!

Optimize cards – useful, attractive and shareable.

Page 48: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Compose Request Activity

• message type “invoke”

• name composeExtension/query

• value.commandId (e.g. “searchCmd”)

• value.parameters (name, value, skip, count)

• other properties same for @ and message

Page 49: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Compose Response

• composeExtension object

• composeExtension.type (“result”)

• composeExtension.attachmentLayout (“list” or “grid”)

• composeExtension.attachments

Cards:

Thumbnail

Hero

O365 connector

Page 50: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Authentication

1. Query secure resource

2. Check Teams userid

3. Needs auth, return login action

4. notifySuccess ( security code)

Page 51: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Compose extension in code

Page 52: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Microsoft Teams is open!

Register and submit your app today to the Office Store

Microsoft Teams App = Tabs, Connector, Actionable Messages, Activity Feed, Bots & Compose Extensions

Your app will be ready in the Developer Preview once approved

Page 53: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Demo

Apps in Teams

Page 54: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Office Store

Create a developer account

Register in the Seller Dashboard

Submit zip package to the Office Store

https://msdn.microsoft.com/en-us/microsoft-teams/submission

Page 55: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

New Features Summary

Actionable Messages on Connector cards

User Notifications (Activity Feed)

Compose Extensions

Office Store

App Platform

Page 56: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Wrap-up

All these features and more in Developer Preview

Submit your app: aka.ms/SubmitTeamsApp

Page 57: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Resources

https://dev.office.com/microsoft-teams/explore-microsoft-teams

https://dev.office.com/microsoft-teams/ + tabs | bots | composeextenstions | activityfeed | connectors

https://msdn.microsoft.com/en-us/microsoft-teams/samples https://aka.ms/bf-createsdkbot

https://dev.botframework.com/

https://docs.microsoft.com/en-us/bot-framework/azure/azure-bot-service-quickstart

Suggestions:

mailto://[email protected]

Problems:

StackOverflow "microsoft-teams“

https://aka.ms/microsoftteamsplatformsuggestions

Page 58: Microsoft Teams Developer Overview · 2020-02-04 · Agenda What is Microsoft Teams? Tab Overview Design & Config API Bot Overview Design Build Conversation Events Actionable Messages

Thank You!Questions?