Updates from: 01/13/2021 04:11:23
Service Microsoft Docs article Related commit history on GitHub Change details
platform https://docs.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/create-apps-for-teams-meetings https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/apps-in-teams-meetings/create-apps-for-teams-meetings.md
@@ -10,17 +10,17 @@ keywords: teams apps meetings user participant role api
## Prerequisites and considerations
-1. Apps in meetings require some basic knowledge of [Teams app development](../overview.md). An app in a meeting can comprise of [tabs](../tabs/what-are-tabs.md), [bots](../bots/what-are-bots.md), and [messaging extensions](../messaging-extensions/what-are-messaging-extensions.md) features and will require updates to the Teams [app manifest](#update-your-app-manifest) to indicate that the app is available for meetings
+* Apps in meetings require some basic knowledge of [Teams app development](../overview.md). An app in a meeting can comprise of [tabs](../tabs/what-are-tabs.md), [bots](../bots/what-are-bots.md), and [messaging extensions](../messaging-extensions/what-are-messaging-extensions.md) features and will require updates to the Teams [app manifest](#update-your-app-manifest) to indicate that the app is available for meetings
-1. For your app to function in the meeting lifecycle as a tab, it must support configurable tabs in the [groupchat scope](../resources/schema/manifest-schema.md#configurabletabs). *See* [Extend your Teams app with a custom tab](../tabs/how-to/add-tab.md). Supporting the `groupchat` scope will enable your app in [pre-meeting](teams-apps-in-meetings.md#pre-meeting-app-experience) and [post-meeting](teams-apps-in-meetings.md#post-meeting-app-experience) chats.
+* For your app to function in the meeting lifecycle as a tab, it must support configurable tabs in the [groupchat scope](../resources/schema/manifest-schema.md#configurabletabs) (see how to [build a group tab](../build-your-first-app/build-channel-tab.md)). Supporting the `groupchat` scope will enable your app in [pre-meeting](teams-apps-in-meetings.md#pre-meeting-app-experience) and [post-meeting](teams-apps-in-meetings.md#post-meeting-app-experience) chats.
-1. Meeting API URL parameters may require `meetingId`, `userId`, and the [tenantId](/onedrive/find-your-office-365-tenant-id) These are available as part of the Teams Client SDK and bot activity. Additionally, reliable information for user ID and tenant ID can be retrieved using [Tab SSO authentication](../tabs/how-to/authentication/auth-aad-sso.md).
+* Meeting API URL parameters may require `meetingId`, `userId`, and the [tenantId](/onedrive/find-your-office-365-tenant-id) These are available as part of the Teams Client SDK and bot activity. Additionally, reliable information for user ID and tenant ID can be retrieved using [Tab SSO authentication](../tabs/how-to/authentication/auth-aad-sso.md).
-1. Some meeting APIs, such as `GetParticipant` will require a [bot registration and bot app ID](../bots/how-to/create-a-bot-for-teams.md#with-an-azure-subscription) to generate auth tokens.
+* Some meeting APIs, such as `GetParticipant`, require a [bot registration and ID](../build-your-first-app/build-bot.md) to generate auth tokens.
-1. As a developer, you must adhere to general [Teams tab design guidelines](../tabs/design/tabs.md) for pre- and post-meeting scenarios as well as the [in-meeting dialog guidelines](design/designing-apps-in-meetings.md#use-an-in-meeting-dialog) for in-meeting dialog triggered during a Teams meeting.
+* You must adhere to general [Teams tab design guidelines](../tabs/design/tabs.md) for pre- and post-meeting scenarios. For experiences during meetings, refer to the [in-meeting tab](../apps-in-teams-meetings/design/designing-apps-in-meetings.md#use-an-in-meeting-tab) and [in-meeting dialog](../apps-in-teams-meetings/design/designing-apps-in-meetings.md#use-an-in-meeting-dialog) design guidelines.
-1. Please note that in order for your app to be updated in real-time, it must be up-to-date based on event activities in the meeting. These events can be within the in-meeting dialog (refer to completion `bot Id` parameter in `Notification Signal API`) and other surfaces across the meeting lifecycle
+* For your app to update in real time, it must be up-to-date based on event activities in the meeting. These events can be within the in-meeting dialog (refer to completion `bot Id` parameter in `Notification Signal API`) and other surfaces across the meeting lifecycle
## Meeting apps API reference
platform https://docs.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/teams-apps-in-meetings https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/apps-in-teams-meetings/teams-apps-in-meetings.md
@@ -1,5 +1,5 @@
---
-title: Apps in teams meetings
+title: Apps in Teams meetings
author: laujan description: overview of apps in Teams meetings based on participant and user role ms.topic: overview
@@ -128,7 +128,9 @@ You can access the **Meeting options** page as follows:
1. **Federated/External**. A federated user is an external Teams user in another organization who has been invited to join a meeting. Since these users have valid credentials with federated partners, they are treated as authenticated by Teams but do not have access to your teams or other shared resources from your organization. If you want external users to have access to teams and channels, guest access might be a better option. _See_ [Manage external access in Microsoft Teams](/microsoftteams/manage-external-access) 1. **Anonymous**. Anonymous users do not have an Active Directory identity and are not federated with a tenant. The anonymous participant is like an external user, but their identity is not projected into the meeting. Anonymous users will not be able to access apps in a meeting window.
-## Next Steps
+## Next steps
> [!div class="nextstepaction"]
-> [Create apps for Teams meetings](create-apps-for-teams-meetings.md)
+> [Design your app](create-apps-for-teams-meetings.md)
+> [!div class="nextstepaction"]
+> [Build your app](create-apps-for-teams-meetings.md)
platform https://docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/channel-and-group-conversations https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/how-to/conversations/channel-and-group-conversations.md
@@ -1,25 +1,24 @@
---
-title: Channel and group conversations
+title: Channel and group conversations with a bot
author: clearab description: How to send, receive, and handle messages for a bot in a channel or group chat. ms.topic: overview ms.author: anclear ----
-# Channel and Group chat conversations with a Microsoft Teams bot
+# Channel and group chat conversations with a Microsoft Teams bot
[!INCLUDE [pre-release-label](~/includes/v4-to-v3-pointer-bots.md)] By adding the `teams` or `groupchat` scope to your bot, it can be available to be installed in a team or group chat. This allows all members of the conversation to interact with your bot. Once installed, it will also have access to metadata about the conversation like the list of conversation members, and when installed in a team details about that team and the full list of channels.
-Bots in a group or channel only receive messages when they are mentioned ("@botname"), they do not receive any other messages sent to the conversation.
+Bots in a group or channel only receive messages when they are mentioned (@botname), they do not receive any other messages sent to the conversation.
> [!NOTE] > The bot must be @mentioned directly. Your bot will not receive a message when the team or channel is mentioned, or when someone replies to a message from your bot without @mentioning it.
-## Design considerations
+## Design guidelines
-A bot should provide information that is both appropriate and relevant to all members in a group or channel. Conversations with it are visible to everyone that is a part of the group or channel. A well designed bot can add value to all users while not inadvertently sharing information that is more appropriate in a one-to-one conversation. Multi-turn conversations like dialogs should be avoided - use cards and/or task modules to collect information instead.
+See how to [design bot conversations in channels and chats](~/bots/design/bots.md).
## Creating new conversation threads
platform https://docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/create-a-bot-for-teams https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/how-to/create-a-bot-for-teams.md deleted file mode 100644
@@ -1,184 +0,0 @@
-title: Create a bot using App Studio
-author: clearab
-description: Learn how to create a Microsoft Teams bot using App Studio.
-ms.topic: conceptual
-localization_priority: Priority
-ms.author: anclear
-# Create a bot using App Studio
-
-> [!TIP]
-> Looking for a faster way to get started? Create a [bot](../../build-your-first-app/build-bot.md) using the Microsoft Teams Toolkit.
-
-You'll need to complete the following steps to create a conversational bot:
-
-1. Prepare your development environment.
-1. Create your web service.
-1. Register your web service as a bot with Microsoft Bot Framework.
-1. Create your app manifest and your app package.
-1. Upload your package to Microsoft Teams.
-
-Creating your web service, registering your web service, and creating your app package, with the Bot Framework can be done in any order; however, because the three pieces are so intertwined, no matter in which order you do them, you'll need to return to update the others. Your registration needs the messaging endpoint from your deployed web service and your web service needs the ID and password created from your registration. Your app manifest also needs the registration ID to connect Teams to your web service.
-
-As you're building your bot, you'll regularly move between changing your app manifest and deploying code to your web service. When working with the app manifest, keep in mind you can either manually manipulate the JSON file, or make changes through App Studio. Either way, you'll need to re-deploy (upload) your app in Teams when you make a change to the manifest; however, there's no need to do so when you deploy changes to your web service.
-
-See the [Bot Framework Documentation](/azure/bot-service/) for additional information on the Bot Framework.
-
-[!include[prepare environment](~/includes/prepare-environment.md)]
-
-## Create your web service
-
-The heart of your bot is your web service. It will define a single route, typically `/api/messages`, on which to receive all requests. To get started, you have a few options to choose from:
-
-* Start with the Teams conversation bot sample in either [C#/dotnet](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/57.teams-conversation-bot) or [JavaScript](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/57.teams-conversation-bot).
-* If you're using JavaScript, use the [Yeoman Generator for Microsoft Teams](https://github.com/OfficeDev/generator-teams) to scaffold your Teams app, including your web service. This is particularly helpful when building a Teams app that contains more than just a conversational bot.
-* Create your web service from scratch. You can choose to add the Bot Framework SDK for your language, or you can work directly with the JSON payloads.
-
-## Register your web service with the Bot Framework
-
-> [!IMPORTANT]
-> When registering your web service, be sure to set the **Display name** to the same name you used for your **Short name** in your app manifest. When your app is distributed by either direct uploading or through an organization's app catalog, messages sent to a conversation by your bot will use the registration's **Display name** rather than the app's **Short name**.
-
-Registering your web service with the Bot Framework provides a secure communication channel between the Teams client and your web service. The Teams client and your web service never communicate directly. Instead, messages are routed through the Bot Framework Service (Microsoft Teams uses a separate instance of this service that is compliant with Office 365 standards).
-
-You have two options when registering your web service with the Bot Framework. You can use either [App Studio](#using-app-studio) or the [legacy portal](#in-the-legacy-portal) to register your bot without using an Azure subscription. Or, if you already have an Azure subscription (or don't mind creating one), you can use [the Azure portal](#with-an-azure-subscription) to register your web service.
-
-### Without an Azure subscription
-
-If you do not wish to create your bot registration in Azure, you **must** use either this link - https://dev.botframework.com/bots/new, or App Studio. If you click on the *Create a bot* button in the Bot Framework portal, you will create your bot registration in Microsoft Azure, and will need to provide an Azure subscription. To manage your registration or migrate it to an Azure subscription after creation go to: https://dev.botframework.com/bots.
-
-When you edit the properties of an existing Bot Framework registration not registered in Azure, you'll see A "Migration status" column and a blue "Migrate" button that will take you to the Microsoft Azure portal. Don't select the "Migrate" button unless that's what you want to do. Instead, select the **name** of the bot and you can edit its properties:
-
- ![Edit Bot Properties](~/assets/images/bots/bf-migrate-bot-to-azure.png)
-
-Scenarios when you **must** have your bot registration in Azure (either by creating it in the Azure portal or via migration):
-
-* You want to use the Bot Framework's [OAuthPrompt](./authentication/auth-flow-bot.md) for authentication.
-* You want to enable additional channels like Web Chat, Direct Line, or Skype.
-
-#### Using App Studio
-
-*App Studio* is a Teams application that helps you build Teams apps, including registering your web service as a bot, creating an app manifest and your app package, and updating settings and configurations. It also contains a React control library and configurable samples for cards. See [Getting started with Teams App Studio](../../concepts/build-and-test/app-studio-overview.md).
-
-Remember, if you use App Studio to register your web service you'll need to go to https://dev.botframework.com/bots to manage your registration.
-
-#### In the legacy portal
-
-Create your bot registration using this link: https://dev.botframework.com/bots/new. **Be sure to add Microsoft Teams as a channel from the featured channels list after creating your bot.** Feel free to re-use any Microsoft App ID you generated if you've already created your app package/manifest.
-
- ![Bot Framework registration page](~/assets/images/bots/bfregister.png)
-
-### With an Azure subscription
-
-You can also register your web service by creating a Bot Channels Registration resource in the Azure portal.
-
-[!INCLUDE [bot channels registration steps](~/includes/bots/azure-bot-channels-registration.md)]
-
-The [Bot Framework portal](https://dev.botframework.com) is optimized for registering bots in Microsoft Azure. Here are some things to know:
-
-* Be sure to add Microsoft Teams as a channel from the featured channels list after creating your bot.
-* The Microsoft Teams channel for bots registered on Azure is **free**. Messages sent over the Teams channel will NOT count towards the consumed messages for the bot.
-* If you register your bot using Microsoft Azure, your bot code doesn't need to be *hosted* on Microsoft Azure.
-* If you do register a bot using Microsoft Azure portal, you must have a Microsoft Azure account. You can [create one for free](https://azure.microsoft.com/free/). To verify your identity when you create an Azure account, you must provide a credit card, but it won't be charged; it's always free to create and use bots with Microsoft Teams.
-
-## Create your app manifest and package
-
-Your [app manifest](~/resources/schema/manifest-schema.md) defines the metadata for your app, the extension points your app is using, and pointers to the web services those extension points connect to. You can either use App Studio to help you create your app manifest, or create it manually.
-
-### Add using App Studio
-
-1. In the Teams client, open App Studio from the **...** overflow menu on the left navigation rail. If App Studio isn't already installed, you can do so by searching for it.
-2. On the **Manifest editor** tab select **Create a new app** (or if you're adding a bot to an existing app, you can import your app package)
-3. Add your app details (see [manifest schema definition](~/resources/schema/manifest-schema.md) for full descriptions of each field).
-4. On the **Bots** tab select the **Setup** button.
-5. You can either create a new web service registration (**New bot**), or if you've already registered one, select **Existing bot**.
-6. Select the capabilities and scopes your bot will need.
-7. If necessary, update your bot endpoint address to point to your bot. It should look something like `https://someplace.com/api/messages`.
-8. Optionally, add [bot commands](~/bots/how-to/create-a-bot-commands-menu.md).
-9. Optionally, you can download your completed app package from the **Test and distribute** tab.
-
-### Create it manually
-
-As with messaging extensions and tabs, you update the [app-manifest](~/resources/schema/manifest-schema.md) to define your bot. Add new top-level JSON structure in your app manifest with the `bots` property.
-
-|Name| Type| Maximum size | Required | Description|
-|---|---|---|---|---|
-|`botId`|String|64 characters|Γ£ö|The unique Microsoft app ID for the bot as registered with the Bot Framework. This may well be the same as the overall app ID.|
-|`needsChannelSelector`|Boolean|||Describes whether or not the bot utilizes a user hint to add the bot to a specific channel. Default: `false`.|
-|`isNotificationOnly`|Boolean|||Indicates whether a bot is a one-way, notification-only bot, as opposed to a conversational bot. Default: `false`.|
-|`supportsFiles`|Boolean|||Indicates whether the bot supports the ability to upload/download files in personal chat. Default: `false`.|
-|`scopes`|Array of enum|3|Γ£ö|Specifies whether the bot offers an experience in the context of a channel in a `team`, in a group chat (`groupchat`), or an experience scoped to an individual user alone (`personal`). These options are non-exclusive.|
-
-Optionally, you can define one or more lists of commands that your bot can recommend to users. The object is an array (maximum of 2 elements) with all elements of type `object`. You must define a separate command list for each scope that your bot supports. *See* [Bot menus](./create-a-bot-commands-menu.md), for more information.
-
-|Name| Type| Maximum size | Required | Description|
-|---|---|---|---|---|
-|`items.scopes`|array of enum|3|Γ£ö|Specifies the scope for which the command list is valid. Options are `team`, `personal`, and `groupchat`.|
-|`items.commands`|array of objects|10|Γ£ö|An array of commands the bot supports:<br>`title`: the bot command name (string, 32)<br>`description`: a simple description or example of the command syntax and its argument (string, 128)|
-
-#### Simple manifest example
-
-The example below is a simple bot object, with two command lists defined. This is not the entire app manifest file, just the part specific to messaging extensions.
-
-```json
-...
- "bots": [
- {
- "botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
- "needsChannelSelector": false,
- "isNotificationOnly": false,
- "scopes": [ "team", "personal", "groupchat" ],
- "supportsFiles": true,
- "commandLists": [
- {
- "scopes": [ "team", "groupchat" ],
- "commands": [
- {
- "title": "Command 1",
- "description": "Description of Command 1"
- },
- {
- "title": "Command N",
- "description": "Description of Command N"
- }
- ]
- },
- {
- "scopes": [ "personal", "groupchat" ],
- "commands": [
- {
- "title": "Personal command 1",
- "description": "Description of Personal command 1"
- },
- {
- "title": "Personal command N",
- "description": "Description of Personal command N"
- }
- ]
- }
- ]
- }
- ],
-...
-```
-
-#### Create your app package manually
-
-To create an app package, you need to add your app manifest and (optionally) your app icons to a .zip archive file. See [Create your app package](~/concepts/build-and-test/apps-package.md) for complete details. Make sure your .zip archive contains only the necessary files, and has no additional folder structure inside of it.
-
-## Upload your package to Microsoft Teams
-
-> [!NOTE]
-> To successfully upload your bot, your tenant admin must first [allow uploading](/microsoftteams/manage-apps#manage-org-wide-app-settings) third-party or custom apps in Teams.
-
-If you've been using App Studio, you can install your app from the **Test and distribute** tab of the **Manifest editor**. Alternatively, you can install your app package by clicking the `...` overflow menu from the left navigation rail, clicking **More apps**, then the **Upload a custom app** link. You can also import an app manifest or app package into App Studio to make additional updates before uploading.
-
-## Bots in Teams meetings
-
-Teams supports bot invocation during meetings. When your bot receives the invoke message, it can identify the user and tenant from `userId` and `tenantId`. The `meetingId` can be found as part of the `channelData` object. Your bot can use the `userId` and `meetingId` for the `GetParticipant` API request to retrieve user roles.
-
-## Next steps
-
-* [Bot conversation basics](./conversations/conversation-basics.md)
-* [Subscribe to conversation events](./conversations/subscribe-to-conversation-events.md)
platform https://docs.microsoft.com/en-us/microsoftteams/platform/bots/what-are-bots https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/what-are-bots.md
@@ -5,7 +5,7 @@ description: An overview of conversational bots in Microsoft Teams.
ms.topic: overview ms.author: anclear ---
-# What are conversational bots?
+# What are conversational bots in Microsoft Teams?
Conversational bots allow users to interact with your web service through text, interactive cards, and task modules. They're incredibly flexible ΓÇö conversational bots can be scoped to handling a few simple commands or complex, artificial-intelligence-powered and natural-language-processing virtual assistants. They can be one aspect of a larger application, or completely stand-alone.
platform https://docs.microsoft.com/en-us/microsoftteams/platform/build-your-first-app/build-channel-tab https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/build-your-first-app/build-channel-tab.md
@@ -178,8 +178,8 @@ Congratulations! You have a Teams app with a tab for displaying useful content i
* [Embed content from an existing web app or webpage](../tabs/how-to/add-tab.md#tab-requirements): We showed you how to create new content for a tab, but you can also load content from an external URL. * [Create a seamless tab experience](../tabs/design/tabs.md): See the recommended guidelines for designing Teams tabs. * [Build tabs for mobile](../tabs/design/tabs-mobile.md): Understand how to develop tabs for phones and tablets.
-* [Utilize Teams data with the Microsoft Graph API](https://docs.microsoft.com/graph/teams-concept-overview)
-* [Create a tab without the toolkit](../tabs/how-to/add-tab.md)
+* [Create a tab without the toolkit](../tabs/quickstarts/create-channel-group-tab-node-yeoman.md)
+* [Utilize Teams data with Microsoft Graph](https://docs.microsoft.com/graph/teams-concept-overview)
## Next lesson
platform https://docs.microsoft.com/en-us/microsoftteams/platform/build-your-first-app/build-first-app-overview https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/build-your-first-app/build-first-app-overview.md
@@ -8,7 +8,7 @@ ms.topic: quickstart
--- # Build your first Microsoft Teams app overview
-In the **build your first app** lessons, you create basic Teams apps. Each tutorial walks through how to build a simple, real-world Teams app while introducing you to common tools, fundamental concepts, and more advanced features.
+In the **get started** lessons, you learn how to create basic Teams apps. Each tutorial walks through how to build a simple, real-world Teams app while introducing you to common tools, fundamental concepts, and more advanced features.
## What you'll learn
@@ -28,7 +28,7 @@ Before you begin the tutorials, you should know the following about building app
### Apps can have multiple capabilities and entry points
-A Teams app is made up of one or more [platform capabilities](../concepts/capabilities-overview.md) (how people use the app) and [entry points](../concepts/extensibility-points.md) (where people discover the app).
+A Teams app is made up of one or more [platform capabilities](../concepts/capabilities-overview.md) (how people use the app) and [entry points](../concepts/extensibility-points.md) (where people use the app).
### Teams doesn't host your app
@@ -87,9 +87,9 @@ Teams displays app content only through HTTPS connections. To debug certain type
## About the tutorials
-You can start with any of the Teams **build your first app** lessons. If you're not sure where to go first, follow our beginner friendly path and build a "Hello, World!" app.
+You can start with any of the Teams **get started** lessons. If you're not sure where to go first, follow our beginner friendly path and build a "Hello, World!" app.
-:::image type="content" source="../assets/images/build-your-first-app/skill-tree-overview.png" alt-text="Skill tree showing learning paths for the Teams 'build your first app' tutorials." border="false":::
+:::image type="content" source="../assets/images/build-your-first-app/skill-tree-overview.png" alt-text="Skill tree showing learning paths for the Teams 'get started' lessons." border="false":::
## Next step
platform https://docs.microsoft.com/en-us/microsoftteams/platform/build-your-first-app/build-personal-tab https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/build-your-first-app/build-personal-tab.md
@@ -171,11 +171,11 @@ Congratulations! You have a Teams app with a personal tab that makes it easier t
## Learn more * [Authenticate tab users with SSO](../tabs/how-to/authentication/auth-aad-sso.md): If you only want authorized users viewing your tab, set up single sign-on (SSO) through Azure Active Directory (AD).
-* [Embed content from an existing web app or webpage](../tabs/how-to/add-tab.md#tab-requirements): We showed you how to create new content for a personal tab, but you can also load content from an external URL.
+* [Embed content from an existing web app or webpage](../tabs/how-to/tab-requirements.md): We showed you how to create new content for a personal tab, but you can also load content from an external URL.
* [Create a seamless experience for your tab](../tabs/design/tabs.md): See the recommended guidelines for designing Teams tabs. * [Build tabs for mobile](../tabs/design/tabs-mobile.md): Understand how to develop tabs for phones and tablets.
-* [Utilize Teams data with the Microsoft Graph API](https://docs.microsoft.com/graph/teams-concept-overview)
-* [Create a tab without the toolkit](../tabs/how-to/add-tab.md)
+* [Utilize Teams data with Microsoft Graph](https://docs.microsoft.com/graph/teams-concept-overview)
+* [Create a tab without the toolkit](../tabs/quickstarts/create-channel-group-tab-node-yeoman.md)
## Next lesson
platform https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/app-fundamentals-overview https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/app-fundamentals-overview.md new file mode 100644
@@ -0,0 +1,10 @@
+---
+title: Teams platform development fundamentals
+author: heath-hamilton
+description: Describe the foundational concepts of Teams platform development.
+ms.topic: conceptual
+ms.author: lajanuar
+---
+# Teams platform development fundamentals
+
+Coming soon ...
platform https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/build-app-overview https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/build-and-test/build-app-overview.md new file mode 100644
@@ -0,0 +1,10 @@
+---
+title: Build options for Microsoft Teams app development
+author: heath-hamilton
+description: Describe the SDKs, tools, and APIs you can use to build all types of Teams apps.
+ms.topic: conceptual
+ms.author: lajanuar
+---
+# Build options for Microsoft Teams app development
+
+Coming soon ...
platform https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/debug https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/build-and-test/debug.md
@@ -1,11 +1,11 @@
---
-title: Run and debug your app
-description: Describes the steps to be taken to run and debug Microsoft Teams apps
+title: Choosing a setup to test and debug your app
+description: Describes options for testing and debugging Microsoft Teams apps
keywords: teams run debug apps ms.topic: conceptual ---
-# Run and debug your Microsoft Teams app
+# Choosing a setup to test and debug your Microsoft Teams app
Microsoft Teams apps can contain one or more capabilities, and the ways to run or even host them may be different. When it comes to debugging, in general, we have the following ways to run your Microsoft Teams app:
platform https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/deep-links https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/build-and-test/deep-links.md
@@ -1,12 +1,12 @@
---
-title: Create deep links
+title: Create deep links to content
description: Describes deep links and how to use them in your apps keywords: teams deep link deeplink --- # Create deep links to content and features in Microsoft Teams
-You can create links to information and features within the Teams client. Examples of where this may be useful:
+You can create links to information and features within Teams. Examples of where this may be useful:
* Navigating the user to content within one of your app's tabs. For instance, your app may have a bot that sends messages notifying the user of an important activity. When the user taps on the notification, the deep link navigates to the tab so the user can view more details about the activity. * Your app automates or simplifies certain user tasks, such as creating a chat or scheduling a meeting, by pre-populating the deep links with required parameters. This avoids the need for users to manually enter information.
@@ -31,7 +31,7 @@ You can create links to information and features within the Teams client. Exampl
You can create deep links to entities in Teams. Typically, this is used to create links that navigate to content and information within your tab. For example, if your tab contains a task list team members may create and share links to individual tasks. When clicked, the link navigates to your tab which focuses on the specific item. To implement this, you add a "copy link" action to each item, in whatever way best suits your UI. When the user takes this action, you call `shareDeepLink()` to display a dialog box containing a link that the user can copy to the clipboard. When you make this call, you also pass an ID for your item, which you get back in the [context](~/tabs/how-to/access-teams-context.md) when the link is followed and your tab is reloaded.
-Alternatively, you can also generate deep links programmatically, using the format specified later in this topic. You might want to use these in [bot](~/bots/what-are-bots.md) and [Connector](~/webhooks-and-connectors/what-are-webhooks-and-connectors.md) messages that inform users about changes to your tab, or to items within it.
+Alternatively, you can also generate deep links programmatically, using the format specified later in this topic. You might want to use these in [bot](~/bots/what-are-bots.md) and [connector](~/webhooks-and-connectors/what-are-webhooks-and-connectors.md) messages that inform users about changes to your tab, or to items within it.
> [!NOTE] > This is different from the links provided by the **Copy link to tab** menu item, which just generates a deep link that points to this tab.
@@ -52,11 +52,12 @@ Provide these fields:
### Generating a deep link to your tab > [!NOTE]
-> Static tabs have a scope of "personal" and configurable tabs have a scope of "team". The two tab types have a slightly different syntax since only the configurable tab has a `channel` property associated with its context object. See the [Manifest](~/resources/schema/manifest-schema.md) reference for more information on personal and team scopes.
+> Personal tabs have a `personal` scope, while channel and group tabs use `team` or `group` scopes. The two tab types have a slightly different syntax since only the configurable tab has a `channel` property associated with its context object. See the [manifest](~/resources/schema/manifest-schema.md) reference for more information on tab scopes.
+ > [!NOTE] > Deep links work properly only if the tab was configured using the v0.4 or later library and because of that has an entity ID. Deep links to tabs without entity IDs still navigate to the tab but can't provide the sub-entity ID to the tab.
-Use this format for a deep link that you can use in a bot, Connector, or messaging extension card:
+Use this format for a deep link that you can use in a bot, connector, or messaging extension card:
`https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>`
@@ -121,7 +122,7 @@ As an example use case, if you are returning an Office 365 user profile from you
### Generating a deep link to a chat
-Use this format for a deep link that you can use in a bot, Connector, or messaging extension card:
+Use this format for a deep link that you can use in a bot, connector, or messaging extension card:
`https://teams.microsoft.com/l/chat/0/0?users=<user1>,<user2>,...&topicName=<chat name>&message=<precanned text>`
@@ -129,9 +130,9 @@ Example: `https://teams.microsoft.com/l/chat/0/0?users=joe@contoso.com,bob@conto
The query parameters are:
-* `users`&emsp;The comma-separated list of user IDs representing the participants of the chat. The user performing the action is always included as a participant. The User ID field currently only supports the Azure AD UserPrincipalName (typically an email address).
-* `topicName`&emsp;An optional field for chat's display name, in the case of a chat with 3 or more users. If this field is not specified, the chat's display name will be based on the names of the participants.
-* `message`&emsp;An optional field for the message text that you want to insert into the current user's compose box while the chat is in a draft state.
+* `users`: The comma-separated list of user IDs representing the participants of the chat. The user performing the action is always included as a participant. The User ID field currently only supports the Azure AD UserPrincipalName (typically an email address).
+* `topicName`: An optional field for chat's display name, in the case of a chat with 3 or more users. If this field is not specified, the chat's display name will be based on the names of the participants.
+* `message`: An optional field for the message text that you want to insert into the current user's compose box while the chat is in a draft state.
To use this deep link with your bot, you can specify this as the URL target in your card's button or tap action through the `openUrl` action type.
@@ -140,7 +141,7 @@ To use this deep link with your bot, you can specify this as the URL target in y
> [!Note] > This feature is currently in developer preview.
-You can create deep links to the Teams client's built-in scheduling dialog. This is especially useful if your app helps the user complete calendar or scheduling-related tasks.
+You can create deep links to the Teams built-in scheduling dialog. This is especially useful if your app helps the user complete calendar or scheduling-related tasks.
### Generating a deep link to the scheduling dialog
@@ -151,11 +152,11 @@ Example: `https://teams.microsoft.com/l/meeting/new?subject=test%20subject&atten
The query parameters are:
-* `attendees`&emsp;The optional comma-separated list of user IDs representing the attendees of the meeting. The user performing the action is the meeting organizer. The User ID field currently only supports the Azure AD UserPrincipalName (typically an email address).
-* `startTime`&emsp;The optional start time of the event. This should be in [long ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601), for example ΓÇ£2018-03-12T23:55:25+02:00ΓÇ¥.
-* `endTime`&emsp;The optional end time of the event, also in ISO 8601 format.
-* `subject`&emsp;An optional field for the meeting subject.
-* `content`&emsp;An optional field for the meeting details field.
+* `attendees`: The optional comma-separated list of user IDs representing the attendees of the meeting. The user performing the action is the meeting organizer. The User ID field currently only supports the Azure AD UserPrincipalName (typically an email address).
+* `startTime`: The optional start time of the event. This should be in [long ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601), for example ΓÇ£2018-03-12T23:55:25+02:00ΓÇ¥.
+* `endTime`: The optional end time of the event, also in ISO 8601 format.
+* `subject`: An optional field for the meeting subject.
+* `content`: An optional field for the meeting details field.
Currently, specifying the location is not supported. When generating your start and end times be sure to specify the UTC offset (time zones).
platform https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/appsource/prepare/frequently-failed-cases https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/deploy-and-publish/appsource/prepare/frequently-failed-cases.md
@@ -1,12 +1,11 @@
---
-title: Tips and frequently failed cases
-description: Describes tips for submission and most failed policies
+title: App submission tips and frequently failed cases
+description: Describes tips for a successful Teams store submission and common reasons submissions fail.
author: laujan ms.author: lajanuar
-ms.topic: how to
-keywords: Teams apps validation most failed test cases rapid approval appsource publish
+ms.topic: reference
---
-# Tips for a successful app submission
+# Tips for a successful Microsoft Teams app submission
This article addresses common reasons submitted apps fail validation. While it's not intended to be an exhaustive list of all potential issues with your app, following this guide will increase the likelihood that your app submission will pass the first time. *See* [Commercial marketplace certification policies](/legal/marketplace/certification-policies) for an extensive list of validation policies.
platform https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/appsource/prepare/submission-checklist https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/deploy-and-publish/appsource/prepare/submission-checklist.md
@@ -8,8 +8,11 @@ keywords: teams publish store office publishing checklist submission Teams apps
To be listed on AppSource, your app must go through an approval process. This is a free service provided by the Microsoft Teams group that verifies that your app works as described, contains all appropriate metadata, and provides content that would be valuable to an end user. To help you achieve rapid approval, ensure your app meets the following requirements and guidelines: * **Distribution method:** Make sure your app is meant for publication on a store platform. There are [other options](../../overview.md) to distribute your app without publishing to AppSource.
-* **Validation policies:** Your app must pass all current [AppSource validation policies](https://docs.microsoft.com/legal/marketplace/certification-policies#1140-teams) before submission. Please note that these policies are subject to change.
-* **Self test your app with the [Manifest validation tool](#teams-app-validation-tool) .
+* **Validation policies:** Your app must pass all current [AppSource validation policies](https://docs.microsoft.com/legal/marketplace/certification-policies#1140-teams) before submission.
+ > [!NOTE]
+ > The Appsource validation policies are subject to change.
+* **Mobile readiness:** Your app must be mobile responsive. If your app contains tabs, they must follow the [mobile design guidelines](~/tabs/design/tabs-mobile.md) and your app must comply with [no upsell requirements](~/concepts/deploy-and-publish/appsource/prepare/frequently-failed-cases.md#-mobile-responsiveness-no-direct-upsell-or-payment) on mobile OS (iOS and Android).
+* **Self test your app:** Test your app using the [Manifest validation tool](#teams-app-validation-tool).
* **App detail page:** Your app must align with the [App detail page checklist](detail-page-checklist.md). * **Tips and frequently failed cases:** Pay extra attention to the listed [Tips and frequently failed cases](frequently-failed-cases.md) to improve your app submission and approval time. * **App manifest:** Check your app manifest against the [App manifest checklist](app-manifest-checklist.md).
platform https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/appsource/publish https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/deploy-and-publish/appsource/publish.md
@@ -10,7 +10,7 @@ keywords: teams publish store office publishing publish AppSource partner center
Publishing your app to [AppSource](https://appsource.microsoft.com) makes it available in the Teams app catalog and on the web. At a high level, the process for submitting your app to AppSource is:
-1. Develop your app following our [design guidelines](~/concepts/design/understand-use-cases.md). Tabs should follow our [tab design guidelines](~/tabs/design/tabs.md). Bots should follow the [bot design guidelines](~/bots/design/bots.md).
+1. Develop your app by following the [design guidelines](~/concepts/design/understand-use-cases.md). Tabs must follow the tab design guidelines for both, [desktop and web](~/tabs/design/tabs.md) and [mobile](~/tabs/design/tabs-mobile.md). Bots must follow the [bot design guidelines](~/bots/design/bots.md).
1. Ensure your app meets the app [validation policies](/legal/marketplace/certification-policies) for Microsoft Teams. 1. Self test your app with the [Manifest validation tool](prepare/submission-checklist.md#teams-app-validation-tool) . 1. [Set up a developer account](/office/dev/store/open-a-developer-account) in [Partner Center](https://support.microsoft.com/help/4499930/partner-center-overview). *See also* [How do I create a Partner Center account](#how-do-i-create-a-partner-center-account) in the FAQ section, below.
@@ -22,6 +22,7 @@ Publishing your app to [AppSource](https://appsource.microsoft.com) makes it av
>[!NOTE] >
+>- Your Teams app must be mobile responsive and comply with [no upsell requirements](~/concepts/deploy-and-publish/appsource/prepare/frequently-failed-cases.md#-mobile-responsiveness-no-direct-upsell-or-payment) on mobile OS (iOS and Android).
>- If your Teams app contains a bot, you must comply with the Bot Developer Framework [Code of Conduct](https://aka.ms/bf-conduct). >- If your app contains an Office 365 Connector, additional terms may apply. *See* [Connectors Developer Dashboard](https://aka.ms/connectorsdashboard) and [App Developer Agreement](https://sellerdashboard.microsoft.com/Assets/Content/Agreements/Office_Store_Seller_Agreement_20120927.htm). >- To make your app available for GCC users and avoid duplicate app listings in the store, the auth process/flow should identify and route the user to the specified/expected content URL for GCC users.
platform https://docs.microsoft.com/en-us/microsoftteams/platform/messaging-extensions/how-to/create-messaging-extension https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/messaging-extensions/how-to/create-messaging-extension.md deleted file mode 100644
@@ -1,157 +0,0 @@
-title: Create a messaging extension using App Studio
-author: clearab
-description: Learn how to create a Microsoft Teams messaging extension using App Studio.
-ms.topic: conceptual
-ms.author: anclear
-# Create a messaging extension using App Studio
-
-> [!TIP]
-> Looking for a faster way to get started? Create a [messaging extension](../../build-your-first-app/build-messaging-extension.md) using the Microsoft Teams Toolkit.
-
-At a high level, you'll need to complete the following steps to create a messaging extension.
-
-1. Prepare your development environment
-2. Create and deploy your web service (while developing use a tunneling service like ngrok to run it locally)
-3. Register your web service with the Bot Framework
-4. Create your app package
-5. Upload your package to Microsoft Teams
-
-Creating your web service, creating your app package, and registering your web service with the Bot Framework can be done in any order. Because those three pieces are so intertwined, no matter which order you do them in you'll need return to update the others. Your registration needs the messaging endpoint from your deployed web service, and your web service needs the Id and password created from your registration. Your app manifest also needs that Id to connect Teams to your web service.
-
-As you're building your messaging extension, you'll regularly be moving between changing your app manifest, and deploying code to your web service. When working with the app manifest, keep in mind that you can either manually manipulate the JSON file, or make changes through App Studio. Either way, you'll need to re-deploy (upload) your app in Teams when you make a change to the manifest, but there's no need to do so when you deploy changes to your web service.
-
-[!include[prepare environment](~/includes/prepare-environment.md)]
-
-## Create your web service
-
-The heart of your messaging extension is your web service. It will define a single route, typically `/api/messages`, to receive all requests on. If you're getting started from scratch, you have a few options to choose from.
-
-* Use one of our [quickstarts](#learn-more) tutorials that will guide you through the creation of your web service.
-* Choose one of the messaging extension samples available in the [Bot Framework sample repository](https://github.com/Microsoft/BotBuilder-Samples) to start from.
-* If you're using JavaScript, use the [Yeoman generator for Microsoft Teams](https://github.com/OfficeDev/generator-teams) to scaffold your Teams app, including your web service.
-* Create your web service from scratch. You can choose to add the Bot Framework SDK for your language, or you can work directly with the JSON payloads.
-
-## Register your web service with the Bot Framework
-
-Messaging extensions take advantage of the Bot Framework's messaging schema and secure communication protocol; if you don't already have one you'll need to register your web service on the Bot Framework. The Microsoft App Id (we'll refer to this as your Bot Id from inside of Teams, to identify it from other App Id's you might be working with) and the messaging endpoint your register with the Bot Framework will be used in your messaging extension to receive and respond to requests. If you're using an existing registration, make sure you [enable the Microsoft Teams channel](/azure/bot-service/bot-service-manage-channels.md?view=azure-bot-service-4.0&preserve-view=true).
-
-If you follow one of the quickstarts or start from one of the available samples you'll be guided through registering your web service. If you want to manually register your service you have three options to do so. If you choose to register without using an Azure subscription you will not be able to take advantage of the simplified OAuth authentication flow provided by the Bot Framework. You will be able to migrate your registration to Azure after creation.
-
-* If you have an Azure subscription (or want to create a new one), you can register your web service manually using the Azure Portal. Create a "Bot Channels Registration" resource. You can choose the free pricing tier, as messages from Microsoft Teams do not count towards your total allowable messages per month.
-* If you do not wish to use an Azure subscription, you can use the [legacy registration portal](https://dev.botframework.com/bots/new).
-* App Studio can also help you register your web service (bot). Web services registered through App Studio are not registered in Azure. You can use the [legacy portal](https://dev.botframework.com/bots) to view, manage, and migrate your registrations.
-
-## Create your app manifest
-
-You can either use App Studio to help you create your app manifest, or create it manually.
-
-### Create your app manifest using App Studio
-
-You can use the App Studio app from within the Microsoft Teams client to help create your app manifest.
-
-1. In the Teams client, open App Studio from the **...** overflow menu on the left navigation rail. If it isn't already installed, you can do so by searching for it.
-2. On the **Manifest editor** tab select **Create a new app** (or if you're adding a messaging extension to an existing app, you can import your app package)
-3. Add your app details (see [manifest schema definition](~/resources/schema/manifest-schema.md) for full descriptions of each field).
-4. On the **Messaging extensions** tab click the **Setup** button.
-5. You can either create a new web service (bot) for your messaging extension to use, or if you've already registered one select/add it here.
-6. If necessary, update your bot endpoint address to point to your bot. It should look something like `https://someplace.com/api/messages`.
-7. The **Add** button in the **Command** section will guide you through adding commands to your messaging extension. See the [Learn more](#learn-more) section for links to more information on adding commands. Remember you can define up to 10 commands for your messaging extension.
-8. The **Message Handlers** section allows you to add a domain that your messaging will trigger on. See [link unfurling](~/messaging-extensions/how-to/link-unfurling.md) for more information.
-
-From the **Finish => Test and distribute** tab you can **Download** your app package (which includes your app manifest as well as your app icons), or **Install** the package.
-
-### Create your app manifest manually
-
-As with bots and tabs, you update the [app manifest](~/resources/schema/manifest-schema.md#composeextensions) of your app to include the messaging extension properties. These properties govern how your messaging extension appears and behaves in the Microsoft Teams client. Messaging extensions are supported beginning with v1.0 of the manifest.
-
-#### Declare your messaging extension
-
-To add a messaging extension, include a new top-level JSON structure in your app manifest with the `composeExtensions` property. You create a single messaging extension for your app, with up to 10 commands.
-
-> [!NOTE]
-> The manifest refers to messaging extensions as `composeExtensions`. This is to maintain backward compatibility.
-
-The extension definition is an object that has the following structure:
-
-| Property name | Purpose | Required? |
-|---|---|---|
-| `botId` | The unique Microsoft app ID for the bot as registered with the Bot Framework. This should typically be the same as the ID for your overall Teams app. | Yes |
-| `canUpdateConfiguration` | Enables **Settings** menu item. | No |
-| `commands` | Array of commands that this messaging extension supports. You are limited to 10 commands. | Yes |
-
-#### Define your commands
-
-Your messaging extension should declare one or more commands, which define where your users can trigger your messaging extension, and the type of interaction. See [learn more](#learn-more) for more information on messaging extension commands.
-
-#### Simple manifest example
-
-The example below is a simple messaging extension object in the app manifest with a search command. This is not the entire app manifest file, just the part specific to messaging extensions. See [app manifest schema](~/resources/schema/manifest-schema.md) for a complete example.
-
-```json
-...
-"composeExtensions": [
- {
- "botId": "abcd1234-1fc5-4d97-a142-35bb662b7b23",
- "canUpdateConfiguration": true,
- "commands": [
- {
- "id": "searchCmd",
- "description": "Search you ToDo's",
- "title": "Search",
- "initialRun": true,
- "parameters": [
- {
- "name": "searchKeyword",
- "description": "Enter your search keywords",
- "title": "Keywords"
- }
- ]
- }
- ]
- }
-]
-...
-```
-
-## Add your invoke message handlers
-
-When your users trigger your messaging extension you'll need to handle the initial invoke message, collect some information from the user, then process that information and respond appropriately. To do that, you'll first need to decide what kind of commands you want to add to your messaging extension and either [add an action commands](~/messaging-extensions/how-to/action-commands/define-action-command.md) or [add a search commands](~/messaging-extensions/how-to/search-commands/define-search-command.md).
-
-## Messaging extensions in Teams meetings
-
-> [!NOTE]
-> If a meeting or group chat has federated users in the roster, Teams suppresses access to messaging extensions for all users, including the organizer.
-
-Once a meeting begins, Teams participants can interact directly with your messaging extension during a live call. Consider the following when building your in-meeting messaging extension:
-
-1. **Location**. Your messaging extension can be invoked from the compose message area, the command box, or @mentioned in the meeting chat.
-
-1. **Metadata**. When your messaging extension is invoked it can identify the user and tenant from `userId` and `tenantId`. The `meetingId` can be found as part of the `channelData` object. Your app can use the `userId` and `meetingId` for the `GetParticipant` API request to retrieve user roles.
-
-1. **Command type**. If your message extension uses [action-based commands](../../messaging-extensions/what-are-messaging-extensions.md#action-commands), it should follow tabs [single sign-on](../../tabs/how-to/authentication/auth-aad-sso.md) authentication.
-
-1. **User experience**. You messaging extension should look and behave the same as it would outside a meeting.
-
-## Next steps
-
-* [Create action commands](~/messaging-extensions/how-to/action-commands/define-action-command.md)
-* [Create search commands](~/messaging-extensions/how-to/search-commands/define-search-command.md)
-* [Link unfurling](~/messaging-extensions/how-to/link-unfurling.md)
-
-## Learn more
-
-Try it out in a quickstart:
-
-* Quickstarts for C#
- * [Messaging extension with action-based commands](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/51.teams-messaging-extensions-action)
- * [Messaging extension with search-based commands](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/50.teams-messaging-extensions-search)
-* Quickstarts for JavaScript
- * [Messaging extension with action-based commands](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/51.teams-messaging-extensions-action)
- * [Messaging extension with search-based commands](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/50.teams-messaging-extensions-search)
-
-Learn more about Teams development concepts:
-
-* [Understand Teams app capabilities](../../concepts/capabilities-overview.md)
-* [What are messaging extensions?](~/messaging-extensions/what-are-messaging-extensions.md)
platform https://docs.microsoft.com/en-us/microsoftteams/platform/overview https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/overview.md
@@ -1,11 +1,10 @@
--- title: Build apps for the Microsoft Teams platform author: heath-hamilton
-description: Overview of how developers can extend and customize Microsoft Teams features with custom apps.
+description: Get an overview of how developers can extend Microsoft Teams features with custom apps.
ms.topic: overview ms.author: lajanuar ms.date: 09/22/2020
-#Customer intent: As a developer, I want to understand why I would want to build a Teams app so that I can solve business problems.
--- # Build apps for Microsoft Teams
@@ -32,27 +31,31 @@ Some apps are simple (send notifications), while others are complex (manage pati
:::image type="content" source="assets/images/overview-tabs.png" alt-text="Conceptual representation of what tabs look like in the Teams client." border="false"::: :::column-end:::+ :::column span="":::
-### Messaging extensions
+### Bots
-**Make it easier to multitask**: With [messaging extensions](messaging-extensions/what-are-messaging-extensions.md), you can quickly insert external content in a conversation. You also can act on a message, such as creating a help ticket based on the content of a channel post.
+**Turn words into actions**: Conversations often result in the need to do something (generate an order, review my code, check ticket status, etc.). A [bot](bots/what-are-bots.md) can kick off these kinds of workflows right inside Teams.
-:::image type="content" source="assets\images\overview-messaging.png" alt-text="Conceptual representation of what messaging extensions look like in the Teams client." border="false":::
+:::image type="content" source="assets/images/overview-bots.png" alt-text="Conceptual representation of what bots look like in the Teams client." border="false":::
:::column-end:::+ :::row-end::: :::row:::+ :::column span="":::
-### Bots
+### Messaging extensions
-**Turn words into actions**: Conversations often result in the need to do something (generate an order, review my code, check ticket status, etc.). A [bot](bots/what-are-bots.md) can kick off these kinds of workflows right inside Teams.
+**Make it easier to multitask**: With [messaging extensions](messaging-extensions/what-are-messaging-extensions.md), you can quickly share external information in a conversation. You also can act on a message, such as creating a help ticket based on the content of a channel post.
-:::image type="content" source="assets/images/overview-bots.png" alt-text="Conceptual representation of what bots look like in the Teams client." border="false":::
+:::image type="content" source="assets\images\overview-messaging.png" alt-text="Conceptual representation of what messaging extensions look like in the Teams client." border="false":::
:::column-end:::+ :::column span=""::: ### Webhooks
@@ -79,14 +82,10 @@ Some apps are simple (send notifications), while others are complex (manage pati
:::column-end::: :::row-end:::
-## Get started
-
-Jump right in with our first app tutorials or find out how to integrate and import existing apps.
- :::row::: :::column span="2":::
-### Start building
+## Start building
Quickly familiarize yourself with building for Teams by creating a simple app and adding some commonly used capabilities.
@@ -102,7 +101,7 @@ Jump right in with our first app tutorials or find out how to integrate and impo
:::row::: :::column span="2":::
-### Integrate with Teams
+## Integrate with Teams
Blend the features users love about an existing web app, service, or system with the collaborative features of Teams.
@@ -118,7 +117,7 @@ Jump right in with our first app tutorials or find out how to integrate and impo
:::row::: :::column span="2":::
-### A little code goes a long way
+## A little code goes a long way
You don't need to be an expert programmer to build a great Teams app. Try one of several low-code solutions.
@@ -133,7 +132,7 @@ Jump right in with our first app tutorials or find out how to integrate and impo
## Resources
-* [Add a Share to Teams button to your website](concepts/build-and-test/share-to-teams.md)
+* [Add a Share-to-Teams button to your website](concepts/build-and-test/share-to-teams.md)
* <a href="https://fluentsite.z22.web.core.windows.net/" target="_blank">Fluent UI</a> * [Microsoft Teams JavaScript client SDK](https://docs.microsoft.com/javascript/api/@microsoft/teams-js/?view=msteams-client-js-latest&preserve-view=true) * [Bot Framework SDK for JavaScript](https://github.com/Microsoft/botbuilder-js) and [Bot Framework SDK for .NET](https://github.com/Microsoft/botbuilder-dotnet/)
platform https://docs.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/add-tab https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/add-tab.md deleted file mode 100644
@@ -1,150 +0,0 @@
-title: Create a tab using App Studio
-author: laujan
-description: Learn how to create a Microsoft Teams tab using App Studio.
-keywords: teams tabs group channel configurable
-ms.topic: conceptual
-ms.author: lajanuar
-# Create a tab using App Studio
-
-> [!TIP]
-> Looking for a faster way to get started? Create a [personal](../../build-your-first-app/build-personal-tab.md) or [channel and group](../../build-your-first-app/build-channel-tab.md) tab using the Microsoft Teams Toolkit.
-
-Tabs allow you to serve web content that you host to your channel, group chat, and personal users. At a high level, you'll need to complete the following steps to create a tab:
-
-1. Prepare your development environment.
-1. Create your page(s).
-1. Host your app service.
-1. Create your app package and upload to Microsoft Teams.
-
-[!include[prepare environment](~/includes/prepare-environment.md)]
-
-## Create your page(s)
-
-Whether you present your tab within the personal or channel/group scope, it will consist of one or more HTML pages that you host. Tabs with a personal scope consist of a single content page, while tabs with a channel or group scope will require a configuration page that sets the URL of the content page based on user input at the time of installation.
-
-There are three types of tab pages. See the corresponding documentation page for full details on creating them.
-
-1. [Content page](~/tabs/how-to/create-tab-pages/content-page.md), the page displayed in a tab.
-1. [Configuration page](~/tabs/how-to/create-tab-pages/configuration-page.md), the page used to set or update the content page URL, and add it to a channel/group tab.
-1. [Removal page](~/tabs/how-to/create-tab-pages/removal-page.md), an optional page that is displayed when a channel/group tab is removed.
-
-### Tab requirements
-
-Regardless of the type of page, you're tab will need to adhere to the following requirements:
-
-* You must allow your pages to be served in an IFrame, via X-Frame-Options and/or Content-Security-Policy HTTP response headers.
- * Set header: `Content-Security-Policy: frame-ancestors teams.microsoft.com *.teams.microsoft.com *.skype.com`
- * For Internet Explorer 11 compatibility, set `X-Content-Security-Policy` as well.
- * Alternatively, set header `X-Frame-Options: ALLOW-FROM https://teams.microsoft.com/`. This header is deprecated but still respected by most browsers.
-* Typically, as a safeguard against click-jacking, login pages don't render in IFrames. Therefore, your authentication logic needs to use a method other than redirect (e.g., use token-based or cookie-based authentication).
-
-> [!NOTE]
-> Chrome 80, scheduled for release in early 2020, introduces new cookie values and imposes cookie policies by default. It's recommended that you set the intended use for your cookies rather than rely on default browser behavior. *See* [SameSite cookie attribute (2020 update)](../../resources/samesite-cookie-update.md).
-
-* Browsers adhere to a same-origin policy restriction that prevents a webpage from making requests to a different domain than the one that served a web page. However, you may need to redirect the configuration or content page to a another domain or subdomain. Your cross-domain navigation logic should allow the Teams client to validate the origin against a static validDomains list in the app manifest when loading or communicating with the tab.
-
-* To create a seamless experience, you should style your tabs based on the Teams client's theme, design, and intent. Typically, tabs work best when they're built to address a specific need and focus on a small set of tasks or a subset of data that is relevant to the tab's channel location.
-
-* Within your content page, add a reference to [Microsoft Teams JavaScript client SDK](/javascript/api/overview/msteams-client) using script tags. Following your page load, make a call to `microsoftTeams.initialize()`. Your page will not be displayed if you do not.
-
-## Host your app service
-
-Your content needs to be hosted on a publicly available URL available using HTTPS. For testing, you can use a reverse proxy, such as [ngrok](https://ngrok.com/), to expose your local port to an internet-facing URL.
-
-## Create your app package with App Studio
-
-You can use the App Studio app from within the Microsoft Teams client to help create your app manifest. If you do not have App studio installed in Teams, select **Apps** ![Store App](/microsoftteams/platform/assets/images/tab-images/storeApp.png) at the bottom-left corner of the Teams app, and search for App Studio. Once you find the tile, select it and choose install in the pop-up window dialog box.
-
-1. Open the Microsoft Teams clientΓÇöusing the [web based version](https://teams.microsoft.com) will enable you to inspect your front-end code using your browser's [developer tools](~/tabs/how-to/developer-tools.md).
-1. Open App Studio and select the **Manifest editor** tab.
-1. Choose the **Create a new app** tile.
-1. Add your app details (see the [manifest schema definition](~/resources/schema/manifest-schema.md) for full description of each field).
-1. In the capabilities section select **Tabs**.
- * For a personal tab, choose *Add a personal tab* and select **Add**. You will be presented with a pop-up dialogue window where you can add your tab details.
- * For a channel/group tab, under *Team Tab* select **Add** and complete the tab details fields in the Team tab pop-up window. Make sure the *can update configuration? Team* and *Group chat* boxes are checked and select **Save**.
-1. In the *Domains and permissions* section, the *Domains from your tabs* field should contain your host or reverse proxy URL without the HTTPS prefix.
-1. From the **Finish** => **Test and distribute** tab you can **Download** your app package, **Install** the package into a team, or **Submit** to the Teams app store for approval. *If you are using a reverse proxy you will get a warning in the **Description** field on the right. The warning can be ignored while testing your tab*.
-
-## Create your app package manually
-
-As with bots and messaging extensions, you update the [app manifest](~/resources/schema/manifest-schema.md) of your app to include the tab properties. These properties govern the scopes your tab is available in, the URLs to be used, and various other properties.
-
-### Personal Tabs
-
-The displayed content for personal tabs is the same for all users and is configured in the `staticTabs` array. You may declare up to sixteen (16) personal tabs in an app.
-
-|Name| Type| Maximum size | Required | Description|
-|---|---|---|---|---|
-|`entityId`|String|64 characters|Γ£ö|A unique identifier for the entity that the tab displays.|
-|`name`|String|128 characters|Γ£ö|The display name of the tab in the channel interface.|
-|`contentUrl`|String|2048 characters|Γ£ö|The https:// URL that points to the entity UI to be displayed in the Teams canvas.|
-|`websiteUrl`|String|2048 characters||The https:// URL to point at if a user opts to view in a browser.|
-|`scopes`|Array of enum|1|Γ£ö|Static tabs support only the `personal` scope, which means it can be provisioned only as part of a personal app.|
-
-#### Simple personal tab manifest example
-
-The example below shows just the `staticTabs` array from an app manifest.
-
-```json
-...
-"staticTabs": [
- {
- "entityId": "idForPage",
- "name": "Display name for tab",
- "contentUrl": "https:// yourURL.com/content ",
- "websiteUrl": "https://yourURL.com/website",
- "scopes": [ "personal" ]
- }
-...
-```
-
-### Channel/group tabs
-
-Channel/group tabs are added in the `configurableTabs` array. You may declare only one channel/group tab in the `configurableTabs` array.
-
-|Name| Type| Maximum size | Required | Description|
-|---|---|---|---|---|
-|`configurationUrl`|String|2048 characters|Γ£ö|The https:// URL to configuration page.|
-|`canUpdateConfiguration`|Boolean|||A value indicating whether an instance of the tab's configuration can be updated by the user after creation. Default: `true`|
-|`scopes`|Array of enum|1|Γ£ö|Configurable tabs support only the `team` and `groupchat` scopes. |
-
-#### Simple channel/group tab manifest example
-
-The example below shows just the `configurableTabs` array from an app manifest.
-
-```json
-...
-"configurableTabs": [
- {
- "configurationUrl": "https://yourURL.com/configure",
- "canUpdateConfiguration": true,
- "scopes": [ "team", "groupchat" ]
- }
-...
-```
-
-Once you have completed your `manifest.json` bundle it in a zip folder along with your two required icons.
-
-### Upload app package directly to a team
-
-1. Open the Microsoft Teams client. If you use the [web based version](https://teams.microsoft.com) you can inspect your front-end code using your browser's [developer tools](~/tabs/how-to/developer-tools.md).
-1. In the *YourTeams* panel on the left, select the `...` menu next to the team that you're using to test your tab and choose **Manage team**.
-1. In the main panel select **Apps** from the tab bar and choose **Upload a custom app** located in the lower right-hand corner of the page.
-1. Open your project directory, browse to the **./package** folder, select the app package zip folder and choose **Open**. Your tab will upload into Teams.
-
-### View your tab in Teams
-
-1. View your personal tab:
- * In the navbar located at the far-left of the Teams client, select the `...` menu and choose your app from the list.
-
-1. View your channel/group tab:
- * Return to your team, choose the channel where you would like to display the tab, select Γ₧ò from the tab bar, and choose your tab from the gallery.
- * Follow the directions for adding a tab. Note that there's a custom configuration dialog for your channel/group tab. Select **Save** and your tab will be added to the channel's tab bar.
-
-## Learn more
-
-* [Create a content page for your tab](~/tabs/how-to/create-tab-pages/content-page.md)
-* [Create a configuration page for your tab](~/tabs/how-to/create-tab-pages/configuration-page.md)
-* [Update or remove a tab](~/tabs/how-to/create-tab-pages/removal-page.md)
platform https://docs.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/create-tab-pages/removal-page https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/create-tab-pages/removal-page.md
@@ -29,7 +29,7 @@ When your tab is uploaded to a channel or group chat, Teams will add a right-cli
## Create a tab removal page for your application
-The optional removal page is an HTML page that you host and is displayed when the tab is removed. The removal page URL is designated by the `setSettings()` method within your configuration page. As with all pages in your app, the removal page must comply with [Teams tab requirements](~/tabs/how-to/add-tab.md).
+The optional removal page is an HTML page that you host and is displayed when the tab is removed. The removal page URL is designated by the `setSettings()` method within your configuration page. As with all pages in your app, the removal page must comply with [Teams tab requirements](../../../tabs/how-to/tab-requirements.md).
### Register a remove handler
platform https://docs.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/tab-requirements https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/tab-requirements.md new file mode 100644
@@ -0,0 +1,26 @@
+---
+title: Understanding tab requirements
+author: laujan
+description: Every tab in Microsoft Teams must adhere to these requirements.
+keywords: teams tabs group channel configurable
+ms.topic: conceptual
+ms.author: lajanuar
+---
+# Tab requirements
+
+Teams tabs must adhere to the following requirements:
+
+* You must allow your tab pages to be served in an iFrame, via X-Frame-Options and/or Content-Security-Policy HTTP response headers.
+ * Set header: `Content-Security-Policy: frame-ancestors teams.microsoft.com *.teams.microsoft.com *.skype.com`
+ * For Internet Explorer 11 compatibility, set `X-Content-Security-Policy` as well.
+ * Alternatively, set header `X-Frame-Options: ALLOW-FROM https://teams.microsoft.com/`. This header is deprecated but still respected by most browsers.
+* Typically, as a safeguard against click-jacking, login pages don't render in iFrames. Therefore, your authentication logic needs to use a method other than redirect (e.g., use token-based or cookie-based authentication).
+
+> [!NOTE]
+> Chrome 80, scheduled for release in early 2020, introduces new cookie values and imposes cookie policies by default. It's recommended that you set the intended use for your cookies rather than rely on default browser behavior. *See* [SameSite cookie attribute (2020 update)](../../resources/samesite-cookie-update.md).
+
+* Browsers adhere to a same-origin policy restriction that prevents a webpage from making requests to a different domain than the one that served a web page. However, you may need to redirect the configuration or content page to a another domain or subdomain. Your cross-domain navigation logic should allow the Teams client to validate the origin against a static validDomains list in the app manifest when loading or communicating with the tab.
+
+* To create a seamless experience, you should style your tabs based on the Teams client's theme, design, and intent. Typically, tabs work best when they're built to address a specific need and focus on a small set of tasks or a subset of data that is relevant to the tab's channel location.
+
+* Within your content page, add a reference to [Microsoft Teams JavaScript client SDK](/javascript/api/overview/msteams-client) using script tags. Following your page load, make a call to `microsoftTeams.initialize()`. Your page will not be displayed if you do not.
platform https://docs.microsoft.com/en-us/microsoftteams/platform/tabs/what-are-tabs https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/what-are-tabs.md
@@ -5,7 +5,7 @@ description: An overview of custom tabs on the Teams platform
ms.topic: overview ms.author: lajanuar ---
-# What are Microsoft Teams custom tabs?
+# What are Microsoft Teams tabs?
Tabs are Teams-aware webpages embedded in Microsoft Teams. They are simple HTML <iframe\> tags that point to domains declared in the app manifest and can be added as part of a channel inside a team, group chat, or personal app for an individual user. You can include custom tabs with your app to embed your own web content in Teams or add Teams-specific functionality to your web content. *See* [Teams JavaScript client SDK](/javascript/api/overview/msteams-client).
@@ -49,10 +49,23 @@ You can have a maximum of one (1) channel/group tab and up to sixteen (16) perso
## Mobile clients
-If you choose to have your channel/group tab appear on Teams mobile clients, the `setSettings()` configuration must have a value for the `websiteUrl` property. To ensure optimal user experience, you should follow the [guidance for tabs on mobile](~/tabs/design/tabs-mobile.md) when creating your tabs.
+If you choose to have your channel or group tab appear on Teams mobile clients, the `setSettings()` configuration must have a value for the `websiteUrl` property. To ensure optimal user experience, you must follow the [guidance for tabs on mobile](~/tabs/design/tabs-mobile.md) when creating your tabs.
+Apps that are [distributed through Appsource](~/concepts/deploy-and-publish/appsource/publish.md) have a separate approval process for mobile clients. The default behavior of such apps is as follows:
+
+| **App Capability** | **Behavior if app is approved** | **Behavior if app is not approved** |
+| --- | --- | --- |
+| **Static Tabs** | App appears in the bottom bar of the mobile clients. Tabs open in the Teams client. | App does not appear in the bottom bar of the mobile clients. |
+| **Configurable Tabs** | The tab opens in the Teams client using `contentUrl`. | The tab opens in a browser outside the Teams client using `websiteUrl`. |
++
+>[!NOTE]
+>
+>- The default behavior of the apps is only applicable if they are distributed through AppSource. There is no approval process for apps distributed through other [distribution methods](~/concepts/deploy-and-publish/overview.md). By default, all tabs open in the Teams client.
+>- To initiate an evaluation of your app for mobile-friendliness, reach out to teamsubm@microsoft.com with your app details.
+ > [!div class="nextstepaction"] > [Learn more: Request device permissions](/concepts/device-capabilities/native-device-permissions.md) > [!div class="nextstepaction"]
->[Learn more: Camera and image gallery permissions](/concepts/device-capabilities/mobile-camera-image-permissions.md)
\ No newline at end of file
+>[Learn more: Camera and image gallery permissions](/concepts/device-capabilities/mobile-camera-image-permissions.md)
platform https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/design/design-webhooks-connectors https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/webhooks-and-connectors/design/design-webhooks-connectors.md new file mode 100644
@@ -0,0 +1,10 @@
+---
+title: Design Microsoft Teams webhooks and connectors
+author: heath-hamilton
+description: Guidance and best practices for designing webhooks and connectors for Microsoft Teams.
+ms.topic: conceptual
+ms.author: lajanuar
+---
+# Design webhooks and connectors
+
+Coming soon ...
platform https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/webhooks-and-connectors/how-to/connectors-using.md
@@ -246,7 +246,7 @@ The following manifest.json file contains the basic elements needed to test and
"body":[ { "type": "TextBlock",
- "text": "For Samples and Templates, see https://adaptivecards.io/samples](https://adaptivecards.io/samples)",
+ "text": "For Samples and Templates, see [https://adaptivecards.io/samples](https://adaptivecards.io/samples)",
} ] }