Updates from: 07/13/2023 04:15:05
Service Microsoft Docs article Related commit history on GitHub Change details
platform Build Apps For Teams Meeting Stage https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage.md
To invoke share to stage, users can select the **Share to Stage** icon on the up
## App manifest settings for apps in meeting stage
-To share an app to the meeting stage, you must configure the context and RSC permissions in the app manifest:
+To share an app to the meeting stage, you must configure the context and RSC permissions in the [app manifest](../resources/schem):
1. Update the `context` property in the app manifest as follows:
platform Meeting Apps Apis https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/meeting-apps-apis.md
The `targetedMeetingNotification` API allows apps to send targeted in-meeting no
### Prerequisite
-You must configure your app manifest with [RSC permissions](../graph-api/rsc/resource-specific-consent.md) under the `webApplicationInfo` property to send targeted in-meeting notifications and shows app icon badging to specific participants in a meeting. Use the following examples to configure your manifest:
+You must configure your [app manifest](../resources/schem) under the `webApplicationInfo` property to send targeted in-meeting notifications and shows app icon badging to specific participants in a meeting. Use the following examples to configure your manifest:
<br>
platform Bot Sso Register Aad https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/authentication/bot-sso-register-aad.md
You need:
> [!IMPORTANT] > > - **Standalone bot**: If you're building a standalone bot, enter the application ID URI as api://botid-{YourBotId}. Here, {YourBotId} is your Azure AD application ID.
- > - **Application ID URI for app with multiple capabilities**: If you're building an app with a bot, a messaging extension, and a tab, enter the application ID URI as `api://fully-qualified-domain-name.com/BotId-{YourClientId}`, where the BotId is your bot app ID.
+ > - **Application ID URI for app with multiple capabilities**: If you're building an app with a bot, a messaging extension, and a tab, enter the application ID URI as `api://fully-qualified-domain-name.com/botid-{YourClientId}`, where `{YourClientId}` is your bot app ID.
> > - **Format for domain name**: Use lowercase letters for domain name. Don't use upper case. >
To configure scope and authorize trusted client applications, you'll need:
> [!IMPORTANT] > > - **Standalone bot**: If you're building a standalone bot, enter the application ID URI as api://botid-{YourBotId}. Here, {YourBotId} is your Azure AD application ID.
- > - **Application ID URI for app with multiple capabilities**: If you're building an app with a bot, a messaging extension, and a tab, enter the application ID URI as `api://fully-qualified-domain-name.com/BotId-{YourClientId}`, where the BotID is your bot app ID.
+ > - **Application ID URI for app with multiple capabilities**: If you're building an app with a bot, a messaging extension, and a tab, enter the application ID URI as `api://fully-qualified-domain-name.com/botid-{YourClientId}`, where `{YourClientId}` is your bot app ID.
> > - **Format for domain name**: Use lowercase letters for domain name. Don't use upper case. >
platform Add Default Install Scope https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/add-default-install-scope.md
If your app's primary capability is a bot, you can also make the bot the default
## Configure your app's default install scope
-Configure the default install scope for your app. You can set only one scope at a time. For more information, see [app manifest schema](~/resources/schem).
+Configure the default install scope for your app. You can set only one scope at a time. For more information, see [app manifest](../../resources/schem#defaultinstallscope).
To configure the default install scope in your app manifest:
To configure the default install scope in your app manifest:
## Configure the default capability for shared scopes
-Configure the default capability when your app is installed for a team, meeting, or groupchat.
+Configure the default capability when your app is installed for a team, meeting, or groupchat. For more information, see [app manifest](../../resources/schem#defaultgroupcapability).
> [!NOTE] > `defaultGroupCapability` provides the default capability that will be added to the team, groupchat, or meeting. Select a tab, bot, or connector as the default capability for your app, but you must ensure that you have provided the selected capability in your app definition.
platform Test Preview For Monetized Apps https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/Test-preview-for-monetized-apps.md
After you've generated your Preview offer ID, link the offer ID to your Teams ap
:::image type="content" source="../../../../assets/images/apps-in-meetings/test-preview-add-offer-id.png" alt-text="Screenshot shows the Plan and pricing screen to add offer ID." :::
-The subscriptionOffer property is added to your app manifest.
+The `subscriptionOffer` property is added to your [app manifest](../../../../resources/schem#subscriptionoffer).
```json "subscriptionOffer": {
platform Publish https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/publish.md
If your app is production ready, you can begin the process of getting it listed
* **Deep functional and experience tests** Your app is thoroughly reviewed by a validator to ensure compliance with the [Microsoft Commercial Marketplace certification policies](/legal/marketplace/certification-policies).
- There will be a focus on deep functional and user experience testing, usability checks, and metadata checks. App validation is performed across desktop, web, and mobile clients. We work hard to provide you a detailed test report in 24 working hours post submission.
+ There will be a focus on deep functional and user experience testing, usability checks, and metadata checks. App validation is performed across desktop, web, and mobile clients. We work hard to provide you with a detailed test report in 24 working hours post submission.
* **Guided app publish through concierge service**
- If there are no issues observed with your app, then your app will be approved and published to the Teams store. On the other hand, if the issues are present, then you'll receive an automated validation report from Partner Center with the failure details. To help you successfully publish your app to the Teams store and guide you through this process, the validation team will send you a personalized email from our concierge service [teamsubm@microsoft.com](mailto:teamsubm@microsoft.com) that includes the following information:
+ If there are no issues observed with your app, then your app is approved and published to the Teams store. On the other hand, if the issues are present, then you receive an automated validation report from Partner Center with the failure details. To help you successfully publish your app to the Teams store and guide you through this process, the validation team sends you a personalized email from our concierge service [teamsubm@microsoft.com](mailto:teamsubm@microsoft.com) that includes the following information:
* Summary of all issues
If your app is production ready, you can begin the process of getting it listed
After you've reviewed the list of issues, fix all the reported issues and share the updated app package over email, for the validation team to revalidate your app thoroughly. If you've any queries related to the reported issues, contact the validation team at [teamsubm@microsoft.com](mailto:teamsubm@microsoft.com).
- If there are issues remaining or regression issues observed in your app, the validation team will share an updated validation report with you. If your app had blockers, you might see new issues reported when your app is validated after the blockers are resolved. Sometimes, the validation team has also noticed regression issues in apps post deployment of fixes. It takes a few resubmissions to close all the issues for an app that consists of bugs, and get it approved to publish to the Teams store.
+ If there are issues remaining or regression issues observed in your app, the validation team shares an updated validation report with you. If your app had blockers, you might see new issues reported when your app is validated after the blockers are resolved. Sometimes, the validation team has also noticed regression issues in apps post deployment of fixes. It takes a few resubmissions to close all the issues for an app that consists of bugs, and get it approved to publish to the Teams store.
After all reported issues are closed and final submission is made in the Partner Center, the validation team will approve and publish your app. Allow at least one business day for the app to be available in the Teams store.
If your app is production ready, you can begin the process of getting it listed
* **During design phase**
- Review the [store validation guidelines](~/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md) early in your app's life cycle (design phase) to ensure that you build your app in alignment with the store requirements. If you build your app in line with these guidelines, then it will prevent any rework due to non-adherence to store policies.
+ Review the [store validation guidelines](~/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md) early in your app's life cycle (design phase) to ensure that you build your app in alignment with the store requirements. If you build your app in line with these guidelines, then it prevents any rework due to non-adherence to store policies.
* **Prior to app submission**
If your app is production ready, you can begin the process of getting it listed
1. Setup instructions if your app requires more configuration to access app functionality. Alternately, if your app requires complex configuration, you can also provide a [provisioned demo tenant](/office/developer-program/microsoft-365-developer-program-get-started) with admin access so that our validators can skip the configuration steps.
- 1. Link to a demo video that demonstrates key user flow for your app. This is highly recommended.
+ 1. We recommend you to link a demo video that demonstrates key user flow for your app.
* **Post app submission**
If your app is production ready, you can begin the process of getting it listed
* **During design phase**
- Review the [store validation guidelines specific to apps published with linked SaaS offers](~/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md#apps-linked-to-saas-offer) early in your app's life cycle (design phase) to ensure that you build your app in alignment with the store requirements and [Microsoft Commercial Marketplace policies applicable to Teams apps linked to SaaS offers](/legal/marketplace/certification-policies#11405-teams-app-linked-to-software-as-a-service-saas-offers). If you build your app in line with these guidelines, then it will prevent any rework due to non-adherence to store policies.
+ Review the [store validation guidelines specific to apps published with linked SaaS offers](~/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md#apps-linked-to-saas-offer) early in your app's life cycle (design phase) to ensure that you build your app in alignment with the store requirements and [Microsoft Commercial Marketplace policies applicable to Teams apps linked to SaaS offers](/legal/marketplace/certification-policies#11405-teams-app-linked-to-software-as-a-service-saas-offers). If you build your app in line with these guidelines, then it prevents any rework due to non-adherence to store policies.
* **Prior to app submission**
- 1. As you prepare for app submission, ensure the following:
+ 1. As you prepare for app submission, ensure the following details:
1. Your app is linked to a live (already published) SaaS offer on AppSource with at least one plan with pricing information.
- 1. You've correctly mentioned the `subscriptionOffer` details in your app manifest in the format `publisherId.offerId`.
+ 1. You've correctly mentioned the `subscriptionOffer` details in your [app manifest](../../../resources/schem#subscriptionoffer) in the format `publisherId.offerId`.
1. You must ensure your linked SaaS offer is designed to support licenses assigned on a [SaaS pricing model](/azure/marketplace/create-new-saas-offer-plans). 1. Include test instructions or setup instructions or link to a demo video detailing app functionality and supported scenarios and any additional information to enable our testers to easily understand your SaaS portal workflows.
- 1. You must thoroughly [self-test](~/concepts/deploy-and-publish/appsource/prepare/test-preview-for-monetized-apps.md) the end to end purchase and license management workflows before you submit your app linked to a SaaS offer for validation, ensure the following:
+ 1. You must thoroughly [self-test](~/concepts/deploy-and-publish/appsource/prepare/test-preview-for-monetized-apps.md) the end to end purchase and license management workflows before you submit your app linked to a SaaS offer for validation, ensure the following details:
1. Both admin and non-admin users can place an order and confirm the purchase of your subscription. Purchasers can navigate to the SaaS application landing page by selecting **Setup Now** in the Microsoft Admin Center. Test and ensure that your purchasers can activate and configure their subscription on your SaaS application. Messaging on your SaaS application should provide enough and clear information on the way forward to a purchaser. 1. The **Manage Subscriptions** section in Microsoft Admin Center shows the correct details of the subscriptions brought by your test users. Subscription status, number of licenses, and other details must be accurate.
- 1. Buying and removal of license workflows are working as expected. Ensure purchasers can increase the number of licenses from Microsoft Admin Center. Ensure license count and assignment on your SaaS application reflects respective licenses and the right assignees. Also, ensure your SaaS application provides a way to take away a license from an user. Post removal of a license, ensure remaining assignments and count remain intact on your SaaS application and the correct details are reflected in the Microsoft Admin Center.
+ 1. Buying and removal of license workflows are working as expected. Ensure purchasers can increase the number of licenses from Microsoft Admin Center. Ensure license count and assignment on your SaaS application reflects respective licenses and the right assignees. Also, ensure your SaaS application provides a way to take away a license from a user. Post removal of a license, ensure remaining assignments and count remain intact on your SaaS application and the correct details are reflected in the Microsoft Admin Center.
- 1. Subscription cancellation is working as expected. Purchasers can cancel a subscription. Post cancellation, check if the correct subscription status is reflected in the Microsoft Admin Center and your SaaS application. Verify that the purchaser has lost access to the subscription after successful cancellation.
+ 1. Subscription cancellation is working as expected. Purchasers can cancel a subscription. Check if the correct subscription status is reflected in the Microsoft Admin Center and your SaaS application post cancellation. Verify that the purchaser has lost access to the subscription after successful cancellation.
1. Repurchasing a subscription is seamless. After cancellation of an active subscription, thoroughly test to ensure purchasers can repurchase the subscription.
platform Enable App Customization https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/enable-app-customization.md
You can allow customers to customize some aspects of your Microsoft Teams app in
Some possible uses of this feature are: * Changing the app's accent color to match an org's brand.
-* Updating the app name from *Contoso* to *Contoso Agent*, which is the name users in the org will see.
-(Note: Users adding a connector to a chat or a channel will still see the original app name, *Contoso*.)
+* Updating the app name from *Contoso* to *Contoso Agent*, which is the name users in the org can see.
+(Note: Users adding a connector to a chat or a channel can still see the original app name, *Contoso*.)
* Changing the description to include language and guidance that is better understood by your organization's end-users. * Changing logo and logo outline to inspire confidence to the end-users to use the app since it seems provided by their organization.
Provide guidelines for customers (specifically Teams admins) who want to customi
## See also
-* [App manifest schema](/microsoftteams/platform/resources/schema/manifest-schema)
* [Customize apps in the Teams admin center](/microsoftteams/customize-apps) * [Distribute your Microsoft Teams app](../deploy-and-publish/apps-publish-overview.md)
platform Native Device Permissions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/device-capabilities/native-device-permissions.md
Each property allows you to prompt the users to ask for their consent:
| midi | Permission to send and receive Musical Instrument Digital Interface (MIDI) information from a digital musical instrument. | | openExternal | Permission to open links in external applications. |
+For more information, see [app manifest](../../resources/schem#devicepermissions).
+ ## Check permissions from your app After adding `devicePermissions` to your app manifest, check permissions using the **HTML5 permissions API** without causing a prompt:
platform Define Action Command https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/action-commands/define-action-command.md
If the message extension is invoked from the compose box or directly from a mess
## Add the action command to your app manifest
-To add the action command to the app manifest, you must add a new `composeExtension` object to the top level of the app manifest JSON. You can use one of the following ways to do so:
+To add the action command to the app manifest, you must add a new `composeExtensions` object to the top level of the app manifest JSON. You can use one of the following ways to do so:
* [Create an action command using Developer Portal](#create-an-action-command-using-developer-portal) * [Create an action command manually](#create-an-action-command-manually)
To create an action command:
### Create an action command manually
-To manually add your action-based message extension command to your app manifest, you must add the following parameters to the `composeExtension.commands` array of objects:
+To manually add your action-based message extension command to your app manifest, you must add the following parameters to the `composeExtensions.commands` array of objects:
| Property name | Purpose | Required? | Minimum manifest version | |||||
If you're using an embedded web view, you can optionally add the `taskInfo` obje
#### App manifest example
-This section isn't an example of the complete manifest. For the complete app manifest schema, see [app manifest schema](~/resources/schem). The following is an example of a `composeExtensions` object defining two action commands:
+This section isn't an example of the complete manifest. The following is an example of a `composeExtensions` object defining two action commands:
```json ...
This section isn't an example of the complete manifest. For the complete app man
... ```
+For more information, see [app manifest schema](~/resources/schem).
+ ## Code sample | Sample name | Description | .NET | Node.js | Manifest|
If you're using the parameters or an embedded web view with a `taskInfo` object,
* [Cards](../../../task-modules-and-cards/what-are-cards.md) * [Task modules](../../../task-modules-and-cards/what-are-task-modules.md)
-* [App manifest schema for Teams](../../../resources/schem)
* [Developer Portal for Teams](../../../concepts/build-and-test/teams-developer-portal.md) * [Message extensions](../../what-are-messaging-extensions.md)
platform Link Unfurling https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/link-unfurling.md
The document guides you on how to add link unfurling to your app manifest using
> > * The link unfurling result is cached for 30 minutes. > * Link unfurling supports Adaptive Cards version 1.3 and earlier.
-> * Messaging extension commands aren't required for Link unfurling. However, there must be at least one command in manifest as it is a mandatory property in messaging extensions. For more information, see [compose extensions](/microsoftteams/platform/resources/schema/manifest-schema).
+> * Messaging extension commands aren't required for Link unfurling. However, there must be at least one command in manifest as it is a mandatory property in messaging extensions. For more information, see [compose extensions](/microsoftteams/platform/resources/schema/manifest-schema#composeextensions).
> * For mobile client, link unfurling is supported only for links that don't require authentication. The following image is an example of link unfurling in Teams desktop and mobile clients:
The following card types are supported:
For more information, see [Action type invoke](~/task-modules-and-cards/cards/cards-actions.md#action-type-invoke).
-The following is an example of the `invoke` request:
+The following code is an example of the `invoke` request:
# [JSON](#tab/json)
The following image provides a sequential flow to enable and use zero install li
To get your app ready for zero install link unfurling, follow these steps:
-1. Set the property `supportsAnonymizedPayloads` to true in the [manifest schema](../../resources/schem).
+1. Set the property `supportsAnonymizedPayloads` to true in the [manifest schema](../../resources/schem#composeextensions).
1. Set your app to handle the new invoke request `composeExtension/anonymousQueryLink`.
To get your app ready for zero install link unfurling, follow these steps:
1. **Advantages and limitations**:
- # [Advantages](#tab/advantages)
-
- Zero install link unfurling helps you provide enhanced experience to the users, such as:
-
- * Unfurl previews for your links that users share in Teams even before they've installed your app.
- * Create a welcome card for your app to show a preview with the placeholder fields.
-
- # [Limitations](#tab/limitations)
-
- The following are the limitations:
-
- * The bot can only send back a response as `result` or `auth` as the value for the `type` property in response to the `composeExtension/anonymousQueryLink` invoke request. The user can log an error for all other response types, such as, *silentAuth* and *config*.
-
- * The bot can't send back an acv2 card in response to the `composeExtension/anonymousQueryLink` invoke request, either as a result or as a pre-auth card in auth.
-
- * If the bot selects to send back the `"type": "auth"` with a pre-auth card, the Teams client strips away any action buttons from the card, and adds a sign in action button to get users to authenticate into your app.
-
- * The bot can't send back an acv2 card in response to the `composeExtension/anonymousQueryLink` invoke request, either as a result or as a pre-auth card in auth.
-
- * If the bot selects to send back the `"type": "auth"` with a pre-auth card, the Teams client strips away any action buttons from the card, and adds a sign in action button to get users to authenticate into your app.
-
-
+# [Advantages](#tab/advantages)
+
+Zero install link unfurling helps you provide enhanced experience to the users, such as:
+
+* Unfurl previews for your links that users share in Teams even before they've installed your app.
+* Create a welcome card for your app to show a preview with the placeholder fields.
+
+# [Limitations](#tab/limitations)
+
+The following are the limitations:
+
+* The bot can only send back a response as `result` or `auth` as the value for the `type` property in response to the `composeExtension/anonymousQueryLink` invoke request. The user can log an error for all other response types, such as, *silentAuth* and *config*.
+
+* The bot can't send back an acv2 card in response to the `composeExtension/anonymousQueryLink` invoke request, either as a result or as a pre-auth card in auth.
+
+* If the bot selects to send back the `"type": "auth"` with a pre-auth card, the Teams client strips away any action buttons from the card, and adds a sign in action button to get users to authenticate into your app.
+
+* The bot can't send back an acv2 card in response to the `composeExtension/anonymousQueryLink` invoke request, either as a result or as a pre-auth card in auth.
+
+* If the bot selects to send back the `"type": "auth"` with a pre-auth card, the Teams client strips away any action buttons from the card, and adds a sign in action button to get users to authenticate into your app.
++ ## Remove link unfurling cache
Follow the [step-by-step guide](../../sbs-botbuilder-linkunfurling.yml) to unfur
|**Sample name** | **Description** | **.NET** | **Node.js**| **Manifest** |-|--|--|-|-|
-| Zero install link unfurling. | This sample shows how to use Search-based Messaging Extension with a configuration page. This sampe also features zero install link unfurling. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-auth-config/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-sso-config/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/msgext-search-auth-config/csharp/demo-manifest/msgext-search-auth-config.zip)|
+| Zero install link unfurling. | This sample shows how to use Search-based Messaging Extension with a configuration page. This sample also features zero install link unfurling. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-auth-config/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-sso-config/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/msgext-search-auth-config/csharp/demo-manifest/msgext-search-auth-config.zip)|
## See also * [Message extensions](../what-are-messaging-extensions.md) * [Adaptive Cards](../../task-modules-and-cards/what-are-cards.md#adaptive-cards) * [Tabs link unfurling and Stage View](../../tabs/tabs-link-unfurling.md)
-* [composeExtensions](../../resources/schem#composeextensions)
* [Bot activity handlers](../../bots/bot-basics.md)
platform Define Search Command https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/search-commands/define-search-command.md
The following image displays the invoke locations of the search command:
## Add the search command to your app manifest
-To add the search command to your app manifest, you must add a new `composeExtension` object to the top level of your app manifest JSON. You can add the search command either with the help of Developer Portal, or manually.
+To add the search command to your [app manifest](../../../resources/schem#composeextensions), you must add a new `composeExtensions` object to the top level of your app manifest JSON. You can add the search command either with the help of Developer Portal, or manually.
### Create a search command using Developer Portal
The following image displays command addition for message extension:
### Create a search command manually
-To manually add your message extension search command to your app manifest, you must add the following parameters to your `composeExtension.commands` array of objects:
+To manually add your message extension search command to your app manifest, you must add the following parameters to your `composeExtensions.commands` array of objects:
| Property name | Purpose | Required? | Minimum manifest version | |||||
Following section is an example of the simple app manifest of the `composeExtens
```
-For the complete app manifest, see [App manifest schema](~/resources/schem).
+For more information, see [app manifest schema](~/resources/schem).
## Code sample
Follow the [step-by-step guide](../../../sbs-messagingextension-searchcommand.ym
* [Cards](../../../task-modules-and-cards/what-are-cards.md) * [Task modules](../../../task-modules-and-cards/what-are-task-modules.md)
-* [App manifest schema for Teams](../../../resources/schem)
* [Developer Portal for Teams](../../../concepts/build-and-test/teams-developer-portal.md) * [Message extensions](../../what-are-messaging-extensions.md)
platform Respond To Search https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/search-commands/respond-to-search.md
ms.localizationpriority: medium
[!include[v4-to-v3-SDK-pointer](~/includes/v4-to-v3-pointer-me.md)]
-After the user submits the search command, your web service receives a `composeExtension/query` invoke message that contains a `value` object with the search parameters. This invoke which is triggered with the following conditions:
+After the user submits the search command, your web service receives a `composeExtension/query` invoke message that contains a `value` object with the search parameters. The invoke is triggered with the following conditions:
* As characters are entered into the search box.
-* `initialRun` is set to true in your app manifest, you receive the invoke message as soon as the search command is invoked. For more information, see [default query](#default-query).
+* `initialRun` is set to true in your [app manifest](../../../resources/schem#composeextensions), you receive the invoke message as soon as the search command is invoked. For more information, see [default query](#default-query).
This document guides you on how to respond to user requests in the form of cards and previews, and the conditions under which Microsoft Teams issues a default query.
class TeamsMessagingExtensionsSearch extends TeamsActivityHandler {
# [JSON](#tab/json)
-The JSON below is shortened to highlight the most relevant sections.
+The following JSON is shortened to highlight the most relevant sections.
```json {
To have a better understanding and overview on cards, see [what are cards](~/tas
To learn how to use the thumbnail and hero card types, see [add cards and card actions](~/task-modules-and-cards/cards/cards-actions.md).
-For additional information about the connector card for Microsoft 365 Groups, see [Using connector cards for Microsoft 365 Groups](~/task-modules-and-cards/cards/cards-reference.md#connector-card-for-microsoft-365-groups).
+For more information about the connector card for Microsoft 365 Groups, see [Using connector cards for Microsoft 365 Groups](~/task-modules-and-cards/cards/cards-reference.md#connector-card-for-microsoft-365-groups).
The result list is displayed in the Microsoft Teams UI with a preview of each item. The preview is generated in one of the two ways:
The default query has the same structure as any regular user query, with the `na
| Sample name | Description | .NET | Node.js | Manifest| |:|:--|:|:--|:--| |Teams message extension search | This sample shows how to build a Search-based Message Extension. It searches nudget packages and displays the results in search based messaging extension.|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/nodejs)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/csharp/demo-manifest/msgext-search.zip)
-|Teams Message extension auth and config | This sample shows a message extension that has a configuration page, accepts search requests, and returns results after the user has signed in. It also showcase zero app install link unfurling along with normal link unfurling |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-auth-config/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-sso-config/nodejs)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-auth-config/csharp/demo-manifest/msgext-search-auth-config.zip)
+|Teams Message extension auth and config | This sample shows a message extension that has a configuration page, accepts search requests, and returns results after the user has signed in. It also showcases zero app install link unfurling along with normal link unfurling |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-auth-config/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-sso-config/nodejs)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search-auth-config/csharp/demo-manifest/msgext-search-auth-config.zip)
## Next step
The default query has the same structure as any regular user query, with the `na
* [Message extensions](../../what-are-messaging-extensions.md) * [Build your first tab app using JavaScript](../../../sbs-gs-javascript.yml)
-* [composeExtensions](../../../resources/schem#composeextensions)
platform Troubleshoot https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/troubleshoot.md
Because bots in channels only receive messages when they're @mentioned, all mess
### Error while reading manifest.json
-Most manifest errors will provide a hint at what specific field is missing or invalid. However, if the JSON file can't be read as JSON at all, this generic error message is used.
+Most manifest errors provide a hint at what specific field is missing or invalid. However, if the JSON file can't be read as JSON at all, this generic error message is used.
Common reasons for manifest read errors:
If you're not re-uploading an updated package, ensure that the ID is unique.
* [Build bots for Teams](../bots/what-are-bots.md) * [Enable SSO for tab app](../tabs/how-to/authentication/tab-sso-overview.md) * [Receive all conversation messages with RSC](../bots/how-to/conversations/channel-messages-with-rsc.md)
-* [App manifest schema for Teams](schem)
platform Virtual Assistant https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/virtual-assistant.md
The code snippet for `OnTeamsTaskModuleFetchAsync` and `OnTeamsTaskModuleSubmitA
} ```
-Additionally, you must include all skill domains in the `validDomains` section in Virtual Assistant's manifest file so that task modules invoked through a skill render properly.
+Additionally, you must include all skill domains in the `validDomains` section in Virtual Assistant's [app manifest](../resources/schem#validdomains) file so that task modules invoked through a skill render properly.
### Handle collaborative app scopes
You can also leverage existing skills from [Bot Framework Solutions repository](
* [Integrate web apps](~/samples/integrate-web-apps-overview.md) * [Adaptive Cards](../task-modules-and-cards/what-are-cards.md#adaptive-cards)
-* [App manifest](../resources/schem)
* [Book-a-room](app-templates.md#app-template-code-samples) * [Microsoft Teams bot](../bots/what-are-bots.md)
platform Auth Flow Tab https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
For a detailed implementation for tab authentication using Azure AD, see:
* [Authenticate a user in a Teams tab](~/tabs/how-to/authentication/auth-tab-AAD.md) * [Silent authentication](~/tabs/how-to/authentication/auth-silent-AAD.md)
+* [validDomains](../../../resources/schem#validdomains)
platform Tab Requirements https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/tab-requirements.md
Ensure that you adhere to the following prerequisites while building your Teams
* Allow your tab pages to be discovered in an iFrame, using X-Frame-Options and Content-Security-Policy HTTP response headers. * Set Content Security Policy headers to allow Teams and any other [host applications](../../m365-apps/overview.md) of your app:
-
+ [!INCLUDE [CSP headers for multi-hub apps](~/includes/tabs/content-security-policy-headers.md)] * For Internet Explorer 11 compatibility, set `X-Content-Security-Policy`. Alternately, set header `X-Frame-Options: ALLOW-FROM https://teams.microsoft.com/`. This header is deprecated but still accepted by most browsers.
Ensure that you adhere to the following prerequisites while building your Teams
> [!NOTE] > It is recommended that you set the intended use for your cookies rather than rely on default browser behavior. For more information, see [SameSite cookie attribute](../../resources/samesite-cookie-update.md).
-* Browsers same-origin policy restriction prevents webpages from making requests to different domains than the served web page. So, you can redirect the configuration or content page to another domain or subdomain. Your cross-domain navigation logic needs to allow the Teams client to validate the origin against a static `validDomains` list in the app manifest when loading or communicating with the tab.
+* Browsers same-origin policy restriction prevents webpages from making requests to different domains than the served web page. So, you can redirect the configuration or content page to another domain or subdomain. Your cross-domain navigation logic needs to allow the Teams client to validate the origin against a static `validDomains` list in the [app manifest](../../resources/schem#validdomains) when loading or communicating with the tab.
* Style your tabs based on the Teams client's theme, design, and intent. 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.
platform Cards Reference https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-reference.md
The following code shows an example of an Adaptive Card:
#### Additional information on Adaptive Cards
+> [!Note]
+> The `speak` property in an Adaptive Card for Teams bots is supported for immersive readers only.
+ You can pass dynamic values in an Adaptive Card using the dollar symbol ($) and curly braces. For more information, see [Adaptive Cards Templating](/adaptive-cards/templating/). Example:
platform Test App Behavior https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/test-app-behavior.md
To host your development and production code and their HTTPS endpoints, you need
* [Deploy to the cloud](deploy.md) * [Preview and customize Teams app manifest](TeamsFx-preview-and-customize-app-manifest.md) * [Manage multiple environments](TeamsFx-multi-env.md)
+* [validDomains](../resources/schem#validdomains)