Updates from: 03/25/2023 02:24:27
Service Microsoft Docs article Related commit history on GitHub Change details
platform App Caching For Your Tab App https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/app-caching-for-your-tab-app.md
To enable app caching for your app, follow the steps:
* Dispose resources and perform any cleanup needed in the `beforeUnload` handler. * Invoke the `readyToUnload` callback to notify Teams client that the app unload flow is complete.
-After you configure your app code for app caching, your code must be as shown in the following example:
+The following code snippet is an example of the `teamsCore.registerBeforeUnloadHandler` and `teamsCore.registerOnLoadHandler` handlers:
```javascript
-/// </summary>
-/// In beforeUnloadHandler using setItems and readyToUnload callback function
-/// </summary>
-const beforeUnloadHandler = (
- setItems: React.Dispatch<React.SetStateAction<string[]>>,
- readyToUnload: () => void) => {
- setItems((Items) => [...Items, logItem("OnBeforeUnload", "purple", "Started")]);
-
- // Dispose resources and cleanup
- // Write your custom code to perform resource cleanup.
- setItems((Items) => [...Items, logItem("OnBeforeUnload", "purple", "Dispose resources and cleanup")]);
- setItems((Items) => [...Items, logItem("OnBeforeUnload", "purple", "Completed")]);
- console.log("sending readyToUnload to TEAMS");
- readyToUnload();
-
- return true;
-};
-
-/// </summary>
-/// loadHandler using setItems to set values
-/// </summary>
-const loadHandler = (
- setItems: React.Dispatch<React.SetStateAction<string[]>>,
- data: microsoftTeams.LoadContext) => {
- setItems((Items) => [...Items, logItem("OnLoad", "blue", "Started for " + data.entityId)]);
-
- // Use the entityId, contentUrl to route to the correct page within your App and then invoke notifySuccess
- setItems((Items) => [...Items, logItem("OnLoad", "blue", "Route to specific page")]);
- setItems((Items) => [...Items, logItem("OnLoad", "blue", "Completed for " + data.entityId)]);
- microsoftTeams.app.notifySuccess();
-};
-
-const AppCacheTab = () => {
- const [items, setItems] = useState<string[]>([]);
- const [title, setTitle] = useState("App Caching Sample");
-
- React.useEffect(() => {
- let app = microsoftTeams.app;
- app.initialize().then(app.getContext).then((context: any) => {
- app.notifySuccess();
-
- // Check if the framecontext is set to sidepanel
- if (context.page.frameContext === "sidePanel") {
- const loadContext = logItem("Success", "green", "Loaded Teams context");
- setItems((Items) => [...Items, loadContext]);
-
- const newLogItem = logItem("FrameContext", "orange", "Frame context is " + context.page.frameContext);
- setItems((Items) => [...Items, newLogItem]);
-
- microsoftTeams.teamsCore.registerBeforeUnloadHandler((readyToUnload: any) => {
- const result = beforeUnloadHandler(setItems, readyToUnload);
-
- return result;
- });
-
- microsoftTeams.teamsCore.registerOnLoadHandler((data: any) => {
- loadHandler(setItems, data);
- setTitle("Entity Id : " + data.entityId);
- console.log(data.contentUrl, data.entityId);
- });
-
- const newItem = logItem("Handlers", "orange", "Registered load and before unload handlers. Ready for app caching.");
- setItems((Items) => [...Items, newItem]);
- }
-
- }).catch(function (error: any) {
- console.log(error, "Could not register handlers.");
- });
-
- return () => {
- console.log("useEffect cleanup - Tab");
- };
-
- }, []);
-
- return (
- <div>
- <h3>{title}</h3>
- {items.map((item) => {
- return <div dangerouslySetInnerHTML={{ __html: item }} />;
- })}
- </div>
- );
-};
-
-export default AppCacheTab;
+microsoftTeams.teamsCore.registerBeforeUnloadHandler((readyToUnload: any) => {
+ const result = beforeUnloadHandler(setItems, readyToUnload);
+ return result;
+ });
+
+microsoftTeams.teamsCore.registerOnLoadHandler((data: any) => {
+ loadHandler(setItems, data);
+ setTitle("Entity Id : " + data.entityId);
+ console.log(data.contentUrl, data.entityId);
+ });
+ ```
+To view the complete code sample, see [app caching in meeting](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/app-cache-meetings/nodejs/src/components/app-cache-tab.tsx#L73).
+ ## Best practices * Single-page apps that use client-side routing for page navigation can benefit from app caching. It's recommended that you use the same domain across all contexts of your app launch.
platform Teams Together Mode https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/teams-together-mode.md
To build a scene using the Scene studio, follow these steps:
1. In **View in Teams**, select **Preview in Teams**. 1. In the dialog box that appears, select **Add**.
- The scene is tested or accessed by creating a test meeting and launching custom Together Mode scenes. For more information, see [activate custom Together Mode scenes](#activate-custom-together-mode-scenes):
+ The scene is tested or accessed by creating a test meeting and launching custom Together Mode scenes. For more information, see [Use custom Together Mode scenes](#use-custom-together-mode-scenes):
:::image type="content" source="../assets/images/apps-in-meetings/launchtogethermode.png" alt-text="Screenshot shows the custom scene launched in a Teams meeting.":::
Each scene has a unique ID and name. The scene JSON also contains information on
The `zOrder` represents the order of placing images and seats along the Z-axis. It gives a sense of depth or partition if necessary. See the step-by-step getting started sample. The sample uses the `zOrder`.
-Now that you've gone through the sample scene.json, you can activate the custom Together Mode scenes to engage in scenes.
+Now that you've gone through the sample scene.json, you can use the custom Together Mode scenes to engage in scenes.
-## Activate custom Together Mode scenes
+## Use custom Together Mode scenes
> [!NOTE] > You can apply a custom Together Mode scene that is deployed by your tenant admin only if you have a [Teams Premium license](/MicrosoftTeams/enhanced-teams-experience?branch=danismith-t-pre-licensing). Get more information of how a user engages with scenes in custom Together Mode scenes.
-To select scenes and activate custom Together Mode scenes, follow these steps:
+To select scenes and use custom Together Mode scenes, follow these steps:
1. Create a new test meeting. > [!NOTE]
- > On selecting **Preview** in the Scene studio, the scene is installed as an app in Teams. This is the model for a developer to test and try out scenes from the Scene studio. After a scene is shipped as an app, users see these scenes in the scene gallery.
+ > On selecting **Preview** in the Scene studio, the scene is installed as an app in Teams. This is the model for a developer to test and try out scenes from the Scene studio. After a scene is exported and sideloaded as a custom app, users can view the scenes in the scene gallery.
1. From the **Gallery** drop-down in the upper-left corner, select **Together Mode**. The **Picker** dialog box appears and the scene that is added is available.
platform What Are Bots https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/what-are-bots.md
It's recommended to start with [build your first bot app using JavaScript](../sb
> * Bots are available in [Government Community Cloud (GCC), GCC-High, and Department of Defense (DOD)](~/concepts/app-fundamentals-overview.md#government-community-cloud) environments. Bot applications within Microsoft Teams for GCC-High and DOD are available through [Azure bot Service](/azure/bot-service/how-to-deploy-gov-cloud-high) and bot channel registration must be done in Azure Government portal. > > * Image URLs in Adaptive Cards aren't supported in GCC-High and DOD environments. You can replace an image URL with Base64 encoded DataUri.
+>
+> * When a user changes the Teams theme in a bot, the theme doesnΓÇÖt apply to the content shared using an Adaptive Card.
Conversational bots allow users to interact with your web service using text, interactive cards, and task modules.
platform Apps Upload https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/apps-upload.md
You can sideload Microsoft Teams apps without having to publish to your organiza
> [!IMPORTANT] > > * Currently, sideloading of apps is possible only in Government Community Cloud (GCC) and is not possible in GCC-High and Department of Defense (DOD).
-> * App installation is supported only on Teams desktop app.
+> * App installation is supported only on Teams desktop client.
## Prerequisites
platform Create Partner Center Dev Account https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/create-partner-center-dev-account.md
ms.localizationpriority: high
# Create a Partner Center developer account
-To publish your app to the Microsoft Teams store, you must [set up your Partner Center developer account](/office/dev/store/open-a-developer-account). Depending on your scenario, you might be able to use an existing account.
+To publish your app to the Microsoft Teams store, you must [create your Partner Center developer account](/office/dev/store/open-a-developer-account). Depending on your scenario, you might be able to use an existing account.
## FAQ
platform In App Purchase Flow https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/in-app-purchase-flow.md
Following code snippet is an example of calling the API from the Teams app built
-## End-user in-app purchasing experience
-
-The following example shows the users to purchase subscription plans for a fictional Teams app called *Contoso Tasks for Teams*:
-
-1. In the Teams **Store**, find and select the app.
-
-1. In the app details dialog, select **Buy a subscription** or **Add for me**.
-
- :::image type="content" source="~/assets/images/saas-offer/buysubscriptionplancontoso.png" alt-text="Buying the subscription for the selected app.":::
-
-1. **Add for me** offers a free trial version of the app and later **Upgrade** it to a paid version.
-
- :::image type="content" source="~/assets/images/saas-offer/upgradeapp.png" alt-text="Upgrading to the subscription for the selected app." lightbox="../../../../assets/images/saas-offer/upgradeapp.png":::
-
-1. In the **Choose a subscription plan** dialog, choose the plan and select **Checkout**.
-
- :::image type="content" source="~/assets/images/saas-offer/choosingsubscriptionplancontoso.png" alt-text="Selecting the appropriate subscription plan." lightbox="../../../../assets/images/saas-offer/choosingsubscriptionplancontoso.png":::
-
-1. Complete the transaction and select **Configure now** to set up your subscription.
-
- :::image type="content" source="~/assets/images/saas-offer/saas-offer-configure-now.png" alt-text="Setting up the subscription." lightbox="../../../../assets/images/saas-offer/saas-offer-configure-now.png":::
-
- :::image type="content" source="~/assets/images/saas-offer/getstarted.png" alt-text="Landing page of the subscription." lightbox="../../../../assets/images/saas-offer/getstarted.png":::
- ## Next step > [!div class="nextstepaction"]
platform Include Saas Offer https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
Once published, users will see a **Buy a subscription** option in the app detail
## End-user purchasing experience
-The following example shows how users can purchase subscription plans for a fictional Teams app called *Recloud*.
+The following example shows how users can purchase subscription plans for a fictional Teams app called *Contoso Tasks for Teams*.
-1. In the Teams store, find and select the *Recloud* app.
+1. In the Teams store, find and select the *Contoso Tasks for Teams* app.
1. In the app details dialog, select **Buy a subscription**.
- :::image type="content" source="~/assets/images/saas-offer/buysubscriptionplan.png" alt-text="Buying the subscription for the selected app.":::
+ :::image type="content" source="~/assets/images/saas-offer/buysubscriptionplancontoso.png" alt-text="Buying the subscription for the selected app.":::
1. Select your country to see subscription plans for your location.
-1. In the **Choose a subscription plan** dialog, choose the plan you want and select **Checkout**. (Note: Private plans are visible only to users in orgs you're providing the offer to. These plans are indicated with a **Special offer** :::image type="icon" source="~/assets/icons/special-icon.png"::: icon.)
+1. In the **Choose a subscription plan** dialog, choose the plan you want and select **Checkout**.
- :::image type="content" source="~/assets/images/saas-offer/choosingsubscriptionplan.png" alt-text="Selecting the appropriate subscription plan.":::
+ > [!NOTE]
+ > Private plans are visible only to users in orgs you're providing the offer to. These plans are indicated with a **Special offer** :::image type="icon" source="~/assets/icons/special-icon.png"::: icon.
+
+ :::image type="content" source="~/assets/images/saas-offer/choosingsubscriptionplancontoso.png" alt-text="Selecting the appropriate subscription plan." lightbox="../../../../assets/images/saas-offer/choosingsubscriptionplancontoso.png":::
1. In the **Checkout** dialog, provide any required information and select **Place order**.
The following example shows how users can purchase subscription plans for a fict
1. Manage your subscription plan through the *Recloud* website (also known as a [landing page](#build-a-landing-page-for-subscription-management)).
- :::image type="content" source="~/assets/images/saas-offer/subscriptionlicenses.png" alt-text="Configuring user licenses.":::
- ## Admin purchasing experience Admins can purchase app subscription plans in the [Teams admin center](/microsoftteams/purchase-third-party-apps).
platform Map Use Cases https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/map-use-cases.md
For example:
* Use the **tab** capability to display task modules, request device permissions, display <`iframe`> content, or using deep links. * Use the **message extension** capability to send cards, unfurl links, or take action on messages.
+> [!NOTE]
+> You can also explore the capability to add meeting app extensibility to your Teams app. For more information, see [apps for Teams meetings and calls](../../apps-in-teams-meetings/teams-apps-in-meetings.md).
+ ## See also * [Plan your app with Teams features](../app-fundamentals-overview.md)
platform Understand Use Cases https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/understand-use-cases.md
# Understand your use cases
-In the collaborative social framework of Teams, there's a wide variety of user needs that you can solve with a Teams app. For example, an app that bridges gap in achieving effective collaboration is a great fit.
+In the collaborative social framework of Teams, there's a wide variety of user needs that you can solve with a Teams app. For example, an app that bridges the gap in achieving effective collaboration is a great fit.
The app user and their app's requirements are the basic guidelines that determine all app choices you'll make. Building app design, selecting capabilities, determining build and test environment, and app distribution follow the user's requirement from the app.
platform Publish https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/publish.md
Use the [Teams Developer Portal](https://dev.teams.microsoft.com/) to upload and
### Microsoft Teams Admin Center
-As a Teams admin, you can upload and pre-install the app package for your organization's tenant from [Teams admin center](https://admin.teams.microsoft.com/). For more information, see [upload your custom apps in the Microsoft Teams admin center](/microsoftteams/upload-custom-apps).
+Teams admin can upload and pre-install the app package for your organization's tenant from [Teams admin center](https://admin.teams.microsoft.com/). For more information, see [upload your custom apps in the Microsoft Teams admin center](/microsoftteams/upload-custom-apps).
### Microsoft Admin Center
-As a global admin, you can upload and pre-install the app package from [Microsoft admin](https://admin.microsoft.com/). For more information, see [test and deploy Microsoft 365 Apps by partners in the Integrated apps portal](/microsoft-365/admin/manage/test-and-deploy-microsoft-365-apps).
+Global admin can upload and pre-install the app package from [Microsoft admin](https://admin.microsoft.com/). For more information, see [test and deploy Microsoft 365 Apps by partners in the Integrated apps portal](/microsoft-365/admin/manage/test-and-deploy-microsoft-365-apps).
## Multitenant distribution
platform Manifest Schema Dev Preview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema-dev-preview.md
For information on how to enable developer preview, see [public developer previe
The Microsoft Teams manifest describes how the app integrates into the Microsoft Teams platform. Your manifest must conform to the schema hosted at [`https://raw.githubusercontent.com/OfficeDev/microsoft-teams-app-schema/preview/DevPreview/MicrosoftTeams.schema.json`](https://raw.githubusercontent.com/OfficeDev/microsoft-teams-app-schema/preview/DevPreview/MicrosoftTeams.schema.json).
-## Sample full manifest
+## Sample manifest
```json {
platform Manifest Schema https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema.md
The following table lists TeamsJS version and app manifest versions as per diffe
[!INCLUDE [pre-release-label](~/includes/teamjs-version-details.md)]
-The following schema sample shows all extensibility options:
+The following is the sample manifest schema:
-## Sample full manifest
+## Sample manifest
```json {
The following schema sample shows all extensibility options:
}, "developer": { "name": "Publisher Name",
- "websiteUrl": "https://website.com/",
- "privacyUrl": "https://website.com/privacy",
- "termsOfUseUrl": "https://website.com/app-tos",
+ "websiteUrl": "https://example.com/",
+ "privacyUrl": "https://example.com/privacy",
+ "termsOfUseUrl": "https://example.com/app-tos",
"mpnId": "1234567890" }, "name": {
Provide your Azure Active Directory App ID and Microsoft Graph information to he
|Name| Type| Maximum size | Required | Description| |||||| |`id`|string|36 characters|✔️|Azure AD application ID of the app. This ID must be a GUID.|
-|`resource`|string|2048 characters|✔️|Resource URL of app for acquiring auth token for SSO. </br> **NOTE:** If you aren't using SSO, ensure that you enter a dummy string value in this field to your app manifest, for example, `https://notapplicable` to avoid an error response. |
+|`resource`|string|2048 characters|✔️|Resource URL of app for acquiring auth token for SSO. </br> **NOTE:** If you aren't using SSO, ensure that you enter a dummy string value in this field to your app manifest, for example, `https://example` to avoid an error response. |
## graphConnector
If your app doesn't have a Teams app manifest file, you'll need to create it.
To create a Teams app manifest file:
-1. Use the [sample manifest schema](#sample-full-manifest) to create a .json file.
+1. Use the [sample manifest schema](#sample-manifest) to create a .json file.
1. Save it in the root of your project folder as `manifest.json`. <br>
To create a Teams app manifest file:
<br> > [!NOTE]
-> The manifest example content shown here is only for a tab app. It uses example values for subdomain URI. For more information, see [sample manifest schema](#sample-full-manifest).
+> The manifest example content shown here is only for a tab app. It uses example values for subdomain URI. For more information, see [sample manifest schema](#sample-manifest).
```json {
platform Team Chat Member Api Changes https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/team-chat-member-api-changes.md
Following are the upcoming API changes:
* A new API is created [`TeamsInfo.GetPagedMembersAsync`](/microsoftteams/platform/bots/how-to/get-teams-context?tabs=dotnet#fetch-the-roster-or-user-profile) for retrieving profile information for members of a chat or team. This API is now available with the Bot Framework version 4.8 or later SDK. For development in all other versions, use the [`GetConversationPagedMembers`](/dotnet/api/microsoft.bot.connector.conversationsextensions.getconversationpagedmembersasync?view=botbuilder-dotnet-stable&preserve-view=true) method.
- > [!NOTE]
- > In either v3 or v4, the best action is to upgrade to the latest point release that is 3.30.2 or 4.8 or later respectively.
+> [!NOTE]
+>
+> Upgrade to the latest version of the Microsoft Bot Framework SDK as follows:
+>
+> * Bot Framework SDK v3: Upgrade to version 3.30.2 or later.
+> * Bot Framework SDK v4: Upgrade to version 4.8 or later.
* A new API is created [`TeamsInfo.GetMemberAsync`](/microsoftteams/platform/bots/how-to/get-teams-context?tabs=dotnet#get-single-member-details) for retrieving the profile information for a single user. It takes the ID of the team or chat and a [UPN](/windows/win32/ad/naming-properties#userprincipalname) that is `userPrincipalName`, Microsoft Azure Active Directory (Azure AD) Object ID `objectId`, or the Teams user ID `id` as parameters and returns the profile information for that user.
platform What Are Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/what-are-tabs.md
You can have multiple channels or group tabs, and up to 16 personal tabs per app
* [Tabs on mobile](design/tabs-mobile.md#tabs-on-mobile) * [App capabilities mapped to features](../concepts/design/map-use-cases.md#app-capabilities-mapped-to-features) * [Instrumenting for Teams app specific analytics](../concepts/design/overview-analytics.md#instrumenting-for-teams-app-specific-analytics)
+* [Extend tab app with Microsoft Graph permissions and scopes](how-to/authentication/tab-sso-graph-api.md)
platform Cards Format https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-format.md
The following card types support Markdown formatting in Teams:
* Adaptive Cards: Markdown is supported in Adaptive Card `Textblock` field, and `Fact.Title` and `Fact.Value`. HTML isn't supported in Adaptive Cards. * Connector cards for Microsoft 365 Groups: Markdown and limited HTML is supported in connector cards for Microsoft 365 Groups in the text fields.
+> [!NOTE]
+> Markdown isn't supported for OAuth sign in cards in bots.
+ You can use newlines for Adaptive Cards using `\r` or `\n` escape sequences for newlines in lists. Formatting is different between the desktop and the mobile versions of Teams for Adaptive Cards. Card-based mentions are supported in web, desktop, and mobile clients. You can use the information masking property to mask specific information, such as password or sensitive information from users within the Adaptive Card `Input.Text` input element. You can expand the width of an Adaptive Card using the `width` object. You can enable typeahead support within Adaptive Cards and filter the set of input choices as the user types the input. You can use the `msteams` property to add the ability to display images in stage view selectively. Formatting is different between the desktop and the mobile versions of Teams for Adaptive Cards and connector cards. In this section, you can go through the Markdown format example for Adaptive Cards and connector cards.
platform Publish https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/publish.md
You can add a custom app to Teams by uploading an [app package](../concepts/buil
You can build an app for internal use and share it with your team without submitting it to the Microsoft Teams app catalog in the Teams app store. For more information, see [how to upload your app in Teams](../concepts/deploy-and-publish/apps-upload.md).
-### To build your app to zip app package file
+### Build app package
You need to run **Provision in the cloud** before you build the app package. The following step helps you to build the app package: * Select **Zip Teams metadata package** under **DEPLOYMENT**.<br> The generated app package is located in `{your project folder}\build\appPackage\appPackage.{env}.zip`.
-### To upload app package
+### Upload app package
Perform the following steps to upload app package: