Schéma du manifeste d’application pour Teams

Le manifeste de l’application Microsoft Teams décrit comment votre application s’intègre au produit Microsoft Teams. Votre manifeste d’application doit être conforme au schéma hébergé sur https://developer.microsoft.com/json-schemas/teams/v1.15/MicrosoftTeams.schema.json . Les versions précédentes 1.0, 1.1,...,1.14 et la version actuelle 1.15 sont prises en charge (en utilisant « v1.x » dans l’URL). Pour plus d’informations sur les modifications apportées dans chaque version, voir le journal des modifications du manifeste.

Le tableau suivant répertorie les versions teamsJS et les versions du manifeste d’application en fonction des différents scénarios d’application :

Version de TeamsJS Version du manifeste de l’application Étapes suivantes
Applications Teams étendues à Microsoft 365 /Outlook TeamsJS v.2.0 ou version ultérieure 1.13 ou version ultérieure Étendre une application Teams pour l’exécuter sur Microsoft 365 ou Créer une application Microsoft 365
Applications Teams uniquement existantes Mettre à jour vers TeamsJS v.2.0 si possible (v.1.12 est toujours pris en charge*) 1.12 Comprendre la compatibilité descendante de TeamsJS et Mise à jour vers TeamsJS v.2.0
Nouvelles applications Teams uniquement TeamsJS v.2.0 ou version ultérieure 1.12 Créer une application Teams à l’aide du kit de ressources Teams

*Utilisez la dernière version de TeamsJS (v.2.0 ou ultérieure) dans la mesure du possible, afin de tirer parti des dernières améliorations et de la prise en charge des nouvelles fonctionnalités, y compris les applications Teams uniquement. TeamsJS v.1.12 continue d’être pris en charge, mais aucune nouvelle fonctionnalité ou amélioration ne sera ajoutée. Les schémas 1.12 et 1.13 sont sinon les mêmes. Pour plus d’informations, consultez Bibliothèque TeamsJS.

L’exemple de schéma suivant montre toutes les options d’extensibilité :

Exemple du manifeste complet

{
    "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.15/MicrosoftTeams.schema.json",
    "manifestVersion": "1.15",
    "version": "1.0.0",
    "id": "%MICROSOFT-APP-ID%",
    "localizationInfo": {
        "defaultLanguageTag": "en-us",
        "additionalLanguages": [
            {
                "languageTag": "es-es",
                "file": "en-us.json"
            }
        ]
    },
    "developer": {
        "name": "Publisher Name",
        "websiteUrl": "https://website.com/",
        "privacyUrl": "https://website.com/privacy",
        "termsOfUseUrl": "https://website.com/app-tos",
        "mpnId": "1234567890"
    },
    "name": {
        "short": "Name of your app (<=30 chars)",
        "full": "Full name of app, if longer than 30 characters (<=100 chars)"
    },
    "description": {
        "short": "Short description of your app (<= 80 chars)",
        "full": "Full description of your app (<= 4000 chars)"
    },
    "icons": {
        "outline": "A relative path to a transparent .png icon — 32px X 32px",
        "color": "A relative path to a full color .png icon — 192px X 192px"
    },
    "accentColor": "A valid HTML color code.",
    "configurableTabs": [
        {
            "configurationUrl": "https://contoso.com/teamstab/configure",
            "scopes": [
                "team",
                "groupchat"
            ],
            "canUpdateConfiguration": true,
            "context": [
                "channelTab",
                "privateChatTab",
                "meetingChatTab",
                "meetingDetailsTab",
                "meetingSidePanel",
                "meetingStage"
            ],
            "sharePointPreviewImage": "Relative path to a tab preview image for use in SharePoint — 1024px X 768",
            "supportedSharePointHosts": [
                "sharePointFullPage",
                "sharePointWebPart"
            ]
        }
    ],
    "staticTabs": [
        {
            "entityId": "unique Id for the page entity",
            "scopes": [
                "personal"
            ],
            "context": [
                "personalTab",
                "channelTab"
            ],
            "name": "Display name of tab",
            "contentUrl": "https://contoso.com/content (displayed in Teams canvas)",
            "websiteUrl": "https://contoso.com/content (displayed in web browser)",
            "searchUrl": "https://contoso.com/content (displayed in web browser)"
        }
    ],
    "bots": [
        {
            "botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
            "scopes": [
                "team",
                "personal",
                "groupchat"
            ],
            "needsChannelSelector": false,
            "isNotificationOnly": false,
            "supportsFiles": true,
            "supportsCalling": false,
            "supportsVideo": true,
            "commandLists": [
                {
                    "scopes": [
                        "team",
                        "groupchat"
                    ],
                    "commands": [
                        {
                            "title": "Command 1",
                            "description": "Description of Command 1"
                        },
                        {
                            "title": "Command 2",
                            "description": "Description of Command 2"
                        }
                    ]
                },
                {
                    "scopes": [
                        "personal",
                        "groupchat"
                    ],
                    "commands": [
                        {
                            "title": "Personal command 1",
                            "description": "Description of Personal command 1"
                        },
                        {
                            "title": "Personal command N",
                            "description": "Description of Personal command N"
                        }
                    ]
                }
            ]
        }
    ],
    "connectors": [
        {
            "connectorId": "GUID-FROM-CONNECTOR-DEV-PORTAL%",
            "scopes": [
                "team"
            ],
            "configurationUrl": "https://contoso.com/teamsconnector/configure"
        }
    ],
    "composeExtensions": [
        {
            "canUpdateConfiguration": true,
            "botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
            "commands": [
                {
                    "id": "exampleCmd1",
                    "title": "Example Command",
                    "type": "query",
                    "context": [
                        "compose",
                        "commandBox"
                    ],
                    "description": "Command Description; e.g., Search on the web",
                    "initialRun": true,
                    "fetchTask": false,
                    "parameters": [
                        {
                            "name": "keyword",
                            "title": "Search keywords",
                            "inputType": "text",
                            "description": "Enter the keywords to search for",
                            "value": "Initial value for the parameter",
                            "choices": [
                                {
                                    "title": "Title of the choice",
                                    "value": "Value of the choice"
                                }
                            ]
                        }
                    ]
                },
                {
                    "id": "exampleCmd2",
                    "title": "Example Command 2",
                    "type": "action",
                    "context": [
                        "message"
                    ],
                    "description": "Command Description; e.g., Add a customer",
                    "initialRun": true,
                    "fetchTask": false ,
                    "parameters": [
                        {
                            "name": "custinfo",
                            "title": "Customer name",
                            "description": "Enter a customer name",
                            "inputType": "text"
                        }
                    ]
                },
                {
                    "id": "exampleCmd3",
                    "title": "Example Command 3",
                    "type": "action",
                    "context": [
                        "compose",
                        "commandBox",
                        "message"
                    ],
                    "description": "Command Description; e.g., Add a customer",
                    "fetchTask": false,
                    "taskInfo": {
                        "title": "Initial dialog title",
                        "width": "Dialog width",
                        "height": "Dialog height",
                        "url": "Initial webview URL"
                    }
                }
            ],
            "messageHandlers": [
                {
                    "type": "link",
                    "value": {
                        "domains": [
                            "mysite.someplace.com",
                            "othersite.someplace.com"
                        ],
                        "supportsAnonymizedPayloads": false
                    }
                }
            ]
        }
    ],
    "permissions": [
        "identity",
        "messageTeamMembers"
    ],
    "devicePermissions": [
        "geolocation",
        "media",
        "notifications",
        "midi",
        "openExternal"
    ],
    "validDomains": [
        "contoso.com",
        "mysite.someplace.com",
        "othersite.someplace.com"
    ],
    "webApplicationInfo": {
        "id": "AAD App ID",
        "resource": "Resource URL for acquiring auth token for SSO"
    },
    "authorization": {
        "permissions": {
            "resourceSpecific": [
                {
                    "type": "Application",
                    "name": "ChannelSettings.Read.Group"
                },
                {
                    "type": "Delegated",
                    "name": "ChannelMeetingParticipant.Read.Group"
                }
            ]
        }
    },
    "showLoadingIndicator": false,
    "isFullScreen": false,
    "activities": {
        "activityTypes": [
            {
                "type": "taskCreated",
                "description": "Task created activity",
                "templateText": "<team member> created task <taskId> for you"
            },
            {
                "type": "userMention",
                "description": "Personal mention activity",
                "templateText": "<team member> mentioned you"
            }
        ]
    },
    "defaultBlockUntilAdminAction": true,
    "publisherDocsUrl": "https://website.com/app-info",
    "defaultInstallScope": "meetings",
    "defaultGroupCapability": {
        "meetings": "tab",
        "team": "bot",
        "groupchat": "bot"
    },
    "configurableProperties": [
        "name",
        "shortDescription",
        "longDescription",
        "smallImageUrl",
        "largeImageUrl",
        "accentColor",
        "developerUrl",
        "privacyUrl",
        "termsOfUseUrl"
    ],
    "subscriptionOffer": {
        "offerId": "publisherId.offerId"
    },
    "meetingExtensionDefinition": {
        "scenes": [
            {
                "id": "9082c811-7e6a-4174-8173-6ccd57d377e6",
                "name": "Getting started sample",
                "file": "scenes/sceneMetadata.json",
                "preview": "scenes/scenePreview.png",
                "maxAudience": 15,
                "seatsReservedForOrganizersOrPresenters": 0
            },
            {
                "id": "afeaed22-f89b-48e1-98b4-46a514344e4a",
                "name": "Sample-1",
                "file": "scenes/sceneMetadata.json",
                "preview": "scenes/scenePreview.png",
                "maxAudience": 15,
                "seatsReservedForOrganizersOrPresenters": 3
            }
        ]
    }
}

Le schéma définit les propriétés suivantes :

$schema

Chaîne facultative, mais recommandée

L’URL https:// fait référence au schéma JSON pour le manifeste.

manifestVersion

Obligatoire— chaîne

La version du schéma de manifeste que ce manifeste utilise. Utilisez 1.13 pour activer la prise en charge des applications Teams dans Outlook et l’application Microsoft 365 ; utilisez 1.12 (ou une version antérieure) pour les applications Teams uniquement.

version

Obligatoire— chaîne

Version d’une application spécifique. Lorsque vous mettez à jour quelque chose dans votre manifeste, la version doit également être incrémentée. De cette façon, lorsque le nouveau manifeste est installé, il se place sur le manifeste existant et l’utilisateur reçoit la nouvelle fonctionnalité. Lorsque cette application a été soumise à Store, le nouveau manifeste doit être soumis à nouveau et revalidé. Les utilisateurs de l’application reçoivent automatiquement le nouveau manifeste mis à jour quelques heures après l’approbation du manifeste.

Si l’application demande le changement des autorisations, les utilisateurs sont invités à mettre à niveau et à se réinscrire à l’application.

Cette chaîne de version doit suivre la norme de semver (MAJOR. MINOR. PATCH).

ID

Obligatoire — ID d’application Microsoft

L’ID est un identificateur unique généré par Microsoft pour l’application. Vous avez un ID si votre bot est inscrit via le Microsoft Bot Framework. Vous avez un ID si l’application web de votre onglet se signe déjà avec Microsoft. Vous devez entrer l’ID ici. Sinon, vous devez générer un nouvel ID sur le portail d’inscription des applications Microsoft. Utilisez le même ID si vous ajoutez un bot.

L’ID stocké dans Teams Administration Center est l’ID d’application externe et il est visible en tant qu’ExternalID sur les traces.

Remarque

Si vous envoyez une mise à jour à votre application existante dans AppSource, l’ID de votre manifeste ne doit pas être modifié.

developer

Obligatoire— objet

Spécifie des informations sur votre entreprise. Pour les applications soumises au magasin Teams, ces valeurs doivent correspondre aux informations figurant dans votre description du magasin. Pour plus d’informations, voir les instructions pour la publication dans les magasins Teams.

Nom Taille maximale Requis Description
name 32 caractères ✔️ Nom complet du développeur.
websiteUrl 2 048 caractères ✔️ L’URL https:// du site web du développeur. Ce lien doit conduire les utilisateurs vers votre entreprise ou la page d’accueil spécifique au produit.
privacyUrl 2 048 caractères ✔️ L’URL https:// vers la politique de confidentialité du développeur.
termsOfUseUrl 2 048 caractères ✔️ L’URL https:// vers les conditions d’utilisation du développeur.
mpnId 10 caractères Facultatif L’ID Microsoft Partner Network qui identifie l’organisation partenaire qui construit l’application.

nom

Obligatoire— objet

Nom de l’expérience de votre application, affiché à destination des utilisateurs dans l’expérience Teams. Pour les applications soumises à AppSource, ces valeurs doivent correspondre aux informations de votre entrée AppSource. Les valeurs de short et full doivent être différentes.

Nom Taille maximale Requis Description
short 30 caractères ✔️ Nom d’affichage court de l’application.
full 100 caractères Le nom complet de l’application, utilisé si le nom complet de l’application dépasse 30 caractères.

description

Obligatoire— objet

Décrit votre application aux utilisateurs. Pour les applications soumises à AppSource, ces valeurs doivent correspondre aux informations de votre entrée AppSource.

Assurez-vous que votre description décrive votre expérience et aide les clients potentiels à comprendre ce que fait votre expérience. Vous devez le noter dans la description complète, si un compte externe est requis pour être utilisé. Les valeurs de short et full doivent être différentes. Votre brève description ne peut pas être répétée dans la description longue et ne doit pas inclure d’autre nom d’application.

Nom Taille maximale Requis Description
short 80 caractères ✔️ Brève description de l’expérience de votre application, utilisée lorsque l’espace est limité.
full 4 000 caractères ✔️ Description complète de votre application.

localizationInfo

Facultatif— objet

Autorise la spécification d’une langue par défaut et fournit des pointeurs vers d’autres fichiers de langue. Pour plus d’informations, voir localisation.

Nom Taille maximale Requis Description
defaultLanguageTag ✔️ La balise de langue des chaînes dans ce fichier du manifeste de niveau supérieur.

localizationInfo.additionalLanguages

Tableau d’objets spécifiant davantage de traductions linguistiques.

Nom Taille maximale Requis Description
languageTag ✔️ Balise de langue des chaînes dans le fichier fourni.
file ✔️ Chemin d’accès relatif au fichier .json contenant les chaînes traduites.

icons

Obligatoire— objet

Icônes utilisées dans l’application Teams. Les fichiers d’icône doivent être inclus dans le package de chargement. Pour plus d’informations, voir Icônes.

Nom Taille maximale Requis Description
outline 32 x 32 pixels ✔️ Chemin d’accès relatif à un plan PNG transparent 32 x 32.
color 192 x 192 pixels ✔️ Chemin d’accès relatif à une icône PNG couleur 192 x 192.

accentColor

Obligatoire— Code de couleur HTML Hex

Couleur à utiliser et comme arrière-plan pour vos icônes de couleur.

La valeur doit être un code de couleur HTML valide commençant par « # » par exemple #4464ee.

configurableTabs

Facultatif— tableau

Utilisé lorsque votre expérience d’application a une expérience d’onglet de canal d’équipe qui nécessite une configuration supplémentaire avant d’être ajoutée. Les onglets configurables sont pris en charge uniquement dans les étendues team et groupchat vous pouvez configurer les mêmes onglets plusieurs fois. Toutefois, vous ne pouvez la définir dans le manifeste qu’une seule fois.

Nom Type Taille maximale Requis Description
configurationUrl string 2 048 caractères ✔️ L’URL https:// à utiliser lors de la configuration de l’onglet.
scopes tableau d’énumération 1 ✔️ Actuellement, les onglets configurables ne prennent en charge que les étendues team et groupchat.
canUpdateConfiguration Boolean Valeur indiquant si une instance de la configuration de l’onglet peut être mise à jour par l’utilisateur après sa création. Valeur par défaut : true.
context tableau d’énumération 6 L’ensemble des contextItem étendues où un onglet est pris en charge. Par défaut : [channelTab, privateChatTab, meetingChatTab, meetingDetailsTab].
sharePointPreviewImage string 2048 Chemin d’accès relatif à une image d’aperçu d’onglet à utiliser dans SharePoint. Taille 1024 x 768.
supportedSharePointHosts tableau d’énumération 1 Définit la façon dont votre onglet est mis à disposition dans SharePoint. Les options sont sharePointFullPage et sharePointWebPart

staticTabs

Facultatif— tableau

Définit un ensemble d’onglets qui peuvent être « épinglés » par défaut, sans que l’utilisateur les ajoute manuellement. Les onglets statiques déclarés dans personal l’étendue sont toujours épinglés à l’expérience personnelle de l’application. Les onglets statiques déclarés dans team l’étendue ne sont actuellement pas pris en charge.

Cet élément est un tableau (maximum de 16 éléments) avec tous les éléments du type object. Ce bloc est requis uniquement pour les solutions qui fournissent une solution d’onglet statique.

Nom Type Taille maximale Requis Description
entityId string 64 caractères ✔️ Identificateur unique de l’entité affichée par l’onglet.
name chaîne 128 caractères ✔️ Nom d’affichage de l’onglet dans l’interface de canal.
contentUrl string ✔️ L’URL https:// qui pointe vers l’interface utilisateur de l’entité à afficher dans la zone de canevas de Teams.
websiteUrl string L’URL https:// pointant vers si un utilisateur choisit de l’afficher dans un navigateur.
searchUrl chaîne L’URL https:// pointant vers les requêtes de recherche d’un utilisateur.
scopes tableau d’énumération 1 ✔️ Actuellement, les onglets statiques ne peuvent prendre en charge que personal l’étendue, ce qui signifie qu’elle peut être mise en service uniquement dans le cadre de l’expérience personnelle.
context tableau d’énumération 2 L’ensemble contextItem des étendues où un onglet est pris en charge.

Remarque

La fonctionnalité searchUrl n’est pas disponible pour les développeurs tiers. Si vos onglets nécessitent des informations contextuelles pour afficher du contenu pertinent ou pour lancer un flux d’authentification, pour plus d’informations, voir Obtenir le contexte de votre onglet Microsoft Teams.

bots

Facultatif— tableau

Définit une solution bot, ainsi que des informations facultatives telles que les propriétés de commande par défaut.

L’élément est un tableau (au maximum un seul élément , actuellement un seul bot est autorisé par application) avec tous les éléments du type object. Ce bloc est requis uniquement pour les solutions qui offrent une expérience de bot.

Nom Type Taille maximale Requis Description
botId string 64 caractères ✔️ ID d’application Microsoft unique pour le bot inscrit dans le Bot Framework. L’ID peut être identique à l’ID d’application globale.
scopes tableau d’énumération 3 ✔️ Indique si le bot offre une expérience dans le contexte d’un canal dans une team, dans une conversation de groupe (groupchat) ou dans une expérience limitée à un utilisateur individuel (personal). Ces options ne sont pas exclusives.
needsChannelSelector Boolean Indique si le bot utilise ou non un conseil de l’utilisateur pour ajouter le bot à un canal spécifique. Par défaut : false
isNotificationOnly Boolean Indique si un bot est unidirectionnel, de notification uniquement, par opposition à un bot conversationnel. Par défaut : false
supportsFiles Boolean Indique si le bot prend en charge la possibilité de télécharger des fichiers dans une conversation personnelle. Par défaut : false
supportsCalling Boolean Valeur indiquant où un bot prend en charge les appels audio. IMPORTANT : Cette propriété est actuellement expérimentale. Les propriétés expérimentales peuvent ne pas être complètes et peuvent subir des modifications avant de devenir entièrement disponibles. La propriété est fournie uniquement à des fins de test et d’exploration et ne doit pas être utilisée dans les applications de production. Par défaut : false
supportsVideo Boolean Valeur indiquant où un bot prend en charge les appels vidéo. IMPORTANT : Cette propriété est actuellement expérimentale. Les propriétés expérimentales peuvent ne pas être complètes et peuvent subir des modifications avant de devenir entièrement disponibles. La propriété est fournie uniquement à des fins de test et d’exploration et ne doit pas être utilisée dans les applications de production. Par défaut : false

bots.commandLists

Une liste de commandes que votre robot peut recommander aux utilisateurs. L’objet est un tableau (maximum de deux éléments) avec tous les éléments de type object ; vous devez définir une liste de commandes distincte pour chaque étendue que votre bot prend en charge. Pour plus d’informations, consultez Menus bot.

Nom Type Taille maximale Requis Description
items.scopes tableau d’énumération 3 ✔️ Spécifie l’étendue pour laquelle la liste de commandes est valide. Les options sont team, personal et groupchat.
items.commands tableau d’objets 10 ✔️ Ensemble de commandes prises en charge par le bot :
title: nom de la commande bot (chaîne, 32)
description : description simple ou exemple de la syntaxe de commande et de son argument (chaîne, 128)

bots.commandLists.commands

Nom Type Taille maximale Requis Description
title string 12 ✔️ Nom de la commande du bot.
description string 128 caractères ✔️ Une description de texte simple ou exemple de syntaxe de commande et de ses arguments.

connecteurs

Facultatif— tableau

Le connectors bloc définit une carte de connecteur pour Groupes Microsoft 365 pour l’application.

L’objet est un tableau (maximum d’un élément) avec tous les éléments de type object. Ce bloc est requis uniquement pour les solutions qui fournissent un connecteur.

Nom Type Taille maximale Requis Description
configurationUrl string 2 048 caractères ✔️ L’URL https:// à utiliser lors de la configuration du connecteur.
scopes tableau d’énumération 1 ✔️ Spécifie si le connecteur offre une expérience dans le contexte d’un canal dans un team, ou une expérience limitée à un utilisateur individuel seul (personal). Actuellement, seule l’étendue team est prise en charge.
connectorId string 64 caractères ✔️ Identificateur unique du connecteur qui correspond à son ID dans le tableau de bord du développeur de connecteurs.

composeExtensions

Facultatif— tableau

Définit une extension de message pour l’application.

Remarque

Le nom de la fonctionnalité est passé de « extension composée » à « extension de message » en novembre 2017, mais le nom du manifeste reste le même afin que les extensions existantes continuent de fonctionner.

L’élément est un tableau (maximum d’un élément) avec tous les éléments de type object . Ce bloc est requis uniquement pour les solutions qui fournissent une extension de message.

Nom Type Taille maximale Requis Description
botId string 64 ✔️ ID d’application Microsoft unique pour le bot qui sauvegarde l’extension de message, tel qu’il est inscrit auprès de l’infrastructure de bot. L’ID peut être identique à l’ID d’application global.
commands tableau d’objets 10 ✔️ Tableau de commandes prises en charge par l’extension de message.
canUpdateConfiguration Booléen Valeur indiquant si la configuration d’une extension de message peut être mise à jour par l’utilisateur. Par défaut : false.
messageHandlers tableau d’Objets 5 Liste des gestionnaires qui permettent d’appeler des applications lorsque certaines conditions sont remplies.
messageHandlers.type string Type de gestionnaire de messages. Doit être "link".
messageHandlers.value.domains tableau de Chaînes Tableau de domaines pour lequel le gestionnaire de messages de lien peut s’inscrire.
messageHandlers.value.supportsAnonymizedPayloads Boolean Valeur booléenne qui indique si le gestionnaire de messages de lien de l’application prend en charge le flux d’appel anonyme. La valeur par défaut est False.

composeExtensions.commands

Votre extension de message doit déclarer une ou plusieurs commandes avec un maximum de 10 commandes. Chaque commande apparaît dans Microsoft Teams en tant qu’interaction potentielle à partir du point d’entrée basé sur l’IU.

Chaque élément de commande est un objet avec la structure suivante :

Nom Type Taille maximale Requis Description
id string 64 caractères ✔️ ID de la commande.
title chaîne 32 caractères ✔️ Le nom de la commande conviviale.
type string 64 caractères Type de la commande. L’un des query ou action. Par défaut : requête.
description chaîne 128 caractères Description qui apparaît aux utilisateurs pour indiquer l’objectif de cette commande.
initialRun Boolean Une valeur booléenne indique si la commande s’exécute initialement sans paramètre. La valeur par défaut est False.
context tableau de Chaînes 3 Définit l’emplacement à partir duquel l’extension de message peut être appelée. N’importe quelle combinaison de compose,commandBox ,message . La valeur par défaut est ["compose","commandBox"].
fetchTask Boolean Valeur booléenne qui indique s’il doit extraire dynamiquement le module de tâche. La valeur par défaut est False.
taskInfo objet Spécifiez le module de tâche à précharger lors de l’utilisation d’une commande d’extension de message.
taskInfo.title string 64 caractères Titre de la boîte de dialogue initiale.
taskInfo.width chaîne Largeur de la boîte de dialogue : un nombre en pixels ou une disposition par défaut telle que « grand », « moyen » ou « petit ».
taskInfo.height string Hauteur de la boîte de dialogue : un nombre en pixels ou une disposition par défaut telle que « grand », « moyen » ou « petit ».
taskInfo.url chaîne URL webview initiale.
parameters tableau d'objet 5 éléments ✔️ Liste des paramètres que prend la commande. Minimum : 1 ; maximum : 5.
parameters.name string 64 caractères ✔️ Nom du paramètre tel qu’il apparaît dans le client. Le nom du paramètre est inclus dans la demande de l’utilisateur.
parameters.title chaîne 32 caractères ✔️ Titre convivial du paramètre.
parameters.description string 128 caractères Chaîne conviviale qui décrit l’objectif de ce paramètre.
parameters.value string 512 caractères Valeur initiale du paramètre. Actuellement, la valeur n’est pas prise en charge
parameters.inputType string 128 caractères Définit le type de contrôle affiché sur un module de tâche pour fetchTask: false . L’un des text, textarea, number, date, time, toggle, choiceset.
parameters.choices tableau d’objets 10 éléments Options de choix pour le choiceset. Utilisez uniquement lorsque parameter.inputType est choiceset.
parameters.choices.title string 128 caractères ✔️ Titre du choix.
parameters.choices.value string 512 caractères ✔️ Valeur du choix.

autorisations

Facultatif — tableau de chaînes

Tableau de string, qui spécifie les autorisations que l’application demande, qui indiquent aux utilisateurs finaux le fonctionnement de l’extension. Les options suivantes ne sont pas exclusives :

  • identityNécessite des informations d’identité d’utilisateur.
  • messageTeamMembersNécessite l’autorisation d’envoyer des messages directs aux membres de l’équipe.

La modification de ces autorisations pendant la mise à jour de l’application entraîne la répétition du processus de consentement par vos utilisateurs après l’exécution de l’application mise à jour. Pour plus d’informations, voir Mise à jour de votre application.

Remarque

Les autorisations sont désormais déconseillées.

devicePermissions

Facultatif — tableau de chaînes

Fournit les fonctionnalités natives sur l’appareil d’un utilisateur à qui votre application demande l’accès. Les options sont :

  • geolocation
  • media
  • notifications
  • midi
  • openExternal

validDomains

Facultatif, sauf obligatoire lorsque indiqué.

Liste des domaines valides pour les sites web que l’application s’attend à charger dans le client Teams. Les listes de domaines peuvent inclure des caractères génériques, par exemple, *.example.com. Le domaine valide correspond exactement à un segment du domaine ; si vous devez faire correspondre a.b.example.com utilisez *.*.example.com. Si votre interface utilisateur de contenu ou de configuration d’onglet accède à un autre domaine que la configuration de tabulation, ce domaine doit être spécifié ici.

N’incluez pas les domaines des fournisseurs d’identité que vous souhaitez prendre en charge dans votre application. Par exemple, pour vous authentifier à l’aide d’un ID Google, il est nécessaire de rediriger vers accounts.google.com, toutefois, vous ne devez pas inclure accounts.google.com dans validDomains[].

Les applications Teams qui nécessitent leurs propres URL SharePoint pour fonctionner correctement incluent « {teamsitedomain} » dans leur liste de domaines valide.

Importante

N’ajoutez pas de domaines en dehors de votre contrôle, directement ou par le biais de caractères génériques (*). Par exemple, *.yoursite.com est valide, mais *.onmicrosoft.com n’est pas valide, car il n’est pas sous votre contrôle.

Lorsque vous utilisez des caractères génériques, les règles suivantes s’appliquent :

  • Si un segment de sous-domaine inclut un caractère générique, il doit s’agir du seul caractère du segment.
  • Tout segment précédant un segment générique doit également être un segment générique.

Par exemple, *.*.domain.com est valide, mais foo.*.myteam.domain.com n’est pas valide.

L’objet est un tableau avec tous les éléments du type string.

WebApplicationInfo

Facultatif— objet

Fournissez votre ID d’application Azure Active Directory et vos informations de Microsoft Graph pour aider les utilisateurs à se connecter en toute transparence à votre application. Si votre application est inscrite dans Microsoft Azure Active Directory (Azure AD), vous devez fournir l’ID de l’application. Les administrateurs peuvent facilement examiner les autorisations et accorder leur consentement dans le Centre d’administration Teams.

Nom Type Taille maximale Requis Description
id string 36 caractères ✔️ Application Azure AD ID d’application. Cet ID doit être un GUID.
resource string 2 048 caractères ✔️ URL de ressource de l’application pour l’acquisition du jeton du SSO.
NOTE: Si vous n’utilisez pas l’authentification unique, veillez à entrer une valeur de chaîne factice dans ce champ dans le manifeste de votre application, par exemple, https://notapplicable pour éviter une réponse d’erreur.

graphConnector

Facultatif— objet

Spécifiez la configuration du connecteur Graph de l’application. Si cela est présent, webApplicationInfo.id doit également être spécifié.

Nom Type Taille maximale Requis Description
notificationUrl string 2 048 caractères ✔️ L’URL où les notifications Graph-connecteur pour l’application doivent être envoyées.

showLoadingIndicator

Facultatif— booléen

Indique si l’indicateur de chargement s’affiche ou non lorsqu’une application ou un onglet est en cours de chargement. La valeur par défaut est False.

Remarque

  • Si vous sélectionnez showLoadingIndicator true dans le manifeste de votre application, pour charger la page correctement, modifiez les pages de contenu de vos onglets et modules de tâche, comme décrit dans Afficher un indicateur de chargement natif .
  • Si vous ne modifiez pas les pages de contenu de votre onglet, l’application onglet ne se charge pas et affiche l’erreur There was a problem reaching this app.

IsFullScreen

Facultatif— booléen

Indique si une application personnelle est rendue sans barre d’en-tête d’onglet (mode plein écran). La valeur par défaut est False.

Remarque

  • isFullScreen ne fonctionne que pour les applications publiées dans votre organisation. Les applications tierces intégrées et publiées ne peuvent pas utiliser cette propriété (elle est ignorée).

  • isFullScreen=true supprime la barre d'en-tête et le titre fournis par Teams des applications personnelles et des boîtes de dialogue du module de tâches.

activités

Facultatif— objet

Définissez les propriétés utilisées par votre application pour publier un flux d’activité utilisateur.

Nom Type Taille maximale Requis Description
activityTypes tableau d’Objets 128 éléments Indiquez les types d’activités que votre application peut publier dans un flux d’activités utilisateurs.

activities.activityTypes

Nom Type Taille maximale Requis Description
type string 32 caractères ✔️ Le type de notification. Voir ci-dessous.
description string 128 caractères ✔️ Une brève description de la notification. Voir ci-dessous.
templateText string 128 caractères ✔️ Exemple : « {actor} a créé la tâche {taskId} pour vous »
{
   "activities":{
      "activityTypes":[
         {
            "type":"taskCreated",
            "description":"Task Created Activity",
            "templateText":"{actor} created task {taskId} for you"
         },
         {
            "type":"teamMention",
            "description":"Team Mention Activity",
            "templateText":"{actor} mentioned team"
         },
         {
            "type":"channelMention",
            "description":"Channel Mention Activity",
            "templateText":"{actor} mentioned channel"
         },
         {
            "type":"userMention",
            "description":"Personal Mention Activity",
            "templateText":"{actor} mentioned user"
         },
         {
            "type":"calendarForward",
            "description":"Forwarding a Calendar Event",
            "templateText":"{actor} sent user an invite on behalf of {eventOwner}"
         },
         {
            "type":"calendarForward",
            "description":"Forwarding a Calendar Event",
            "templateText":"{actor} sent user an invite on behalf of {eventOwner}"
         },
         {
            "type":"creatorTaskCreated",
            "description":"Created Task Created",
            "templateText":"The Creator created task {taskId} for you"
         }
      ]
   }
}

defaultInstallScope

Facultatif— chaîne

Spécifie l’étendue d’installation définie par défaut pour cette application. L’étendue définie est l’option affichée sur le bouton lorsqu’un utilisateur tente d’ajouter l’application. Les options sont :

  • personal
  • team
  • groupchat
  • meetings

defaultGroupCapability

Facultatif— objet

Lorsqu’une étendue d’installation de groupe est sélectionnée, elle définit la fonctionnalité par défaut lorsque l’utilisateur installe l’application. Les options sont :

  • team
  • groupchat
  • meetings
Nom Type Taille maximale Requis Description
team string Lorsque l’étendue d’installation sélectionnée est team, ce champ spécifie la fonctionnalité par défaut disponible. Options : tab, bot, ou connector.
groupchat string Lorsque l’étendue d’installation sélectionnée est groupchat, ce champ spécifie la fonctionnalité par défaut disponible. Options : tab, bot, ou connector.
meetings string Lorsque l’étendue d’installation sélectionnée est meetings, ce champ spécifie la fonctionnalité par défaut disponible. Options : tab, bot, ou connector.

configurableProperties

Facultatif— tableau

Le bloc configurableProperties définit les propriétés d’application que les administrateurs Teams peuvent personnaliser. Pour plus d’informations, consultez activer la personnalisation d’application. La fonctionnalité de personnalisation d’application n’est pas prise en charge dans les applications personnalisées ou LOB.

Remarque

Au moins une propriété doit être définie. Vous pouvez définir un maximum de neuf propriétés dans ce bloc.

Vous pouvez définir l’une des propriétés suivantes :

  • name : nom d’affichage de l’application.
  • shortDescription : brève description de l’application.
  • longDescription : description longue de l’application.
  • smallImageUrl : icône de contour de l’application.
  • largeImageUrl : icône de couleur de l’application.
  • accentColor : couleur à utiliser et arrière-plan pour vos icônes de plan.
  • developerUrl : URL HTTPS du site web du développeur.
  • privacyUrl : URL HTTPS de la politique de confidentialité du développeur.
  • termsOfUseUrl : URL HTTPS des conditions d’utilisation du développeur.

supportedChannelTypes

Facultatif— tableau

Active votre application dans des canaux non standard. Si votre application prend en charge une étendue d’équipe et que cette propriété est définie, Teams active votre application dans chaque type de canal en conséquence. Actuellement, les types de canaux privés et partagés sont pris en charge.

Remarque

  • Si votre application prend en charge une étendue d’équipe, elle fonctionne dans les canaux standard, quelles que soient les valeurs définies dans cette propriété.
  • Votre application peut prendre en compte les propriétés uniques de chacun des types de canaux pour fonctionner correctement. Pour activer votre onglet pour les canaux privés et partagés, consultez Récupérer le contexte dans les canaux privés et obtenir le contexte dans les canaux partagés

defaultBlockUntilAdminAction

Facultatif - Booléen

Lorsque la propriété defaultBlockUntilAdminAction est définie sur true, l’application est masquée par défaut aux utilisateurs jusqu’à ce que l’administrateur l’autorise. Si la valeur est true, l’application est masquée pour tous les locataires et tous les utilisateurs finaux. Les administrateurs de locataire peuvent voir l’application dans le Centre d’administration Teams et prendre des mesures pour autoriser ou bloquer l’application. La valeur par défaut est false. Pour plus d’informations sur le bloc d’application par défaut, consultez Bloquer les applications par défaut pour les utilisateurs jusqu’à ce qu’un administrateur approuve.

publisherDocsUrl

Facultatif— chaîne

Maille maximale — 128 caractères

Le publisherDocsUrl est une URL HTTPS vers une page d’informations permettant aux administrateurs d’obtenir des instructions avant d’autoriser une application, qui est bloquée par défaut. Il peut également être utilisé pour fournir des instructions ou des informations sur l’application, ce qui peut être utile pour l’administrateur du locataire.

subscriptionOffer

Facultatif— objet

Spécifie l’offre SaaS associée à votre application.

Nom Type Taille maximale Requis Description
offerId string 2 048 caractères ✔️ Identificateur unique qui inclut votre ID de serveur de publication et votre ID d’offre, que vous pouvez trouver dans Espace partenaires. Vous devez mettre en forme la chaîne en tant que publisherId.offerId.

meetingExtensionDefinition

Facultatif— objet

Spécifiez la définition de l’extension de réunion. Pour plus d’informations, voir les scènes personnalisées du mode Ensemble dans Teams.

Nom Type Taille maximale Requis Description
scenes tableau d’objets 5 éléments Scènes de réunion prise en charge.
supportsStreaming Boolean Valeur qui indique si une application peut diffuser en continu le contenu audio et vidéo de la réunion vers un point de terminaison RTMP (Real-Time Meeting Protocol). La valeur par défaut est false.

meetingExtensionDefinition.scenes

Nom Type Taille maximale Requis Description
id ✔️ Identificateur unique de la scène. Cet ID doit être un GUID.
name string 128 caractères ✔️ Nom de la scène.
file ✔️ Chemin d’accès relatif au fichier json de métadonnées des scènes.
preview ✔️ Chemin d’accès relatif au fichier de l’icône d’aperçu PNG des scènes.
maxAudience entier 50 ✔️ Nombre maximal d’audiences pris en charge dans la scène.
seatsReservedForOrganizersOrPresenters entier 50 ✔️ Nombre de sièges réservés aux organisateurs ou présentateurs.

autorisation

Facultatif— objet

Remarque

Si vous définissez la propriété manifestVersion à 1.12, la propriété d'autorisation est incompatible avec les anciennes versions (version 1.11 ou antérieure) du manifeste. L’autorisation est prise en charge pour la version 1.12 du manifeste.

Spécifiez et consolidez les informations relatives à l’autorisation pour l’application.

Nom Type Taille maximale Requis Description
permissions Liste des autorisations dont l’application a besoin pour fonctionner.

authorization.permissions

Nom Type Taille maximale Requis Description
resourceSpecific tableau d’objets 16 éléments Autorisations qui protègent l’accès aux données au niveau de l’instance de ressource.

authorization.permissions.resourceSpecific

Nom Type Taille maximale Requis Description
type string ✔️ Type de l’autorisation spécifique à la ressource. Options : Application et Delegated.
name string 128 caractères ✔️ Nom de l’autorisation spécifique à la ressource. Pour plus d’informations, consultez Autorisations d'application spécifiques aux ressources et Autorisations déléguées spécifiques aux ressources

Autorisations d’application spécifiques aux ressources

Les autorisations d’application permettent à l’application d’accéder aux données sans utilisateur connecté. Pour plus d’informations sur les autorisations d’application, consultez Consentement spécifique aux ressources pour MS Graph et MS BotSDK.

Autorisations déléguées spécifiques aux ressources

Les autorisations déléguées permettent à l’application d’accéder aux données pour le compte de l’utilisateur.

  • Autorisations déléguées spécifiques aux ressources pour les équipes

    Name Description
    ChannelMeetingParticipant.Read.Group Permet à l’application de lire les informations des participants, notamment le nom, le rôle, l’ID, les horaires de participation et le temps restant, des réunions de canal associées à cette équipe, au nom de l’utilisateur connecté.
    InAppPurchase.Allow.Group Permet à l’application d’afficher les offres Marketplace aux utilisateurs de cette équipe et d’effectuer leurs achats au sein de l’application, au nom de l’utilisateur connecté.
    ChannelMeetingStage.Write.Group Permet à l’application d’afficher du contenu sur la fenêtre de partage des réunions de canal associées à cette équipe, pour le compte de l’utilisateur connecté.
    LiveShareSession.ReadWrite.Group Permet à l’application de créer et de synchroniser des sessions Live Share pour les réunions associées à cette équipe, et d’accéder aux informations associées sur la liste de la réunion, telles que le rôle de réunion du membre, au nom de l’utilisateur connecté.
  • Autorisations déléguées spécifiques aux ressources pour les conversations ou les réunions

    Name Description
    InAppPurchase.Allow.Chat Permet à l’application d’afficher les offres Marketplace aux utilisateurs de cette conversation, ainsi que toute réunion associée, et d’effectuer leurs achats au sein de l’application, au nom de l’utilisateur connecté.
    MeetingStage.Write.Chat Permet à l’application d’afficher du contenu sur la phase de réunion dans les réunions associées à cette conversation, au nom de l’utilisateur connecté.
    OnlineMeetingParticipant.Read.Chat Permet à l’application de lire les informations des participants, y compris le nom, le rôle, l’ID, les heures de participation et les heures restantes, de la réunion associée à cette conversation, au nom de l’utilisateur.
    OnlineMeetingParticipant.ToggleIncomingAudio.Chat Permet à l’application de basculer l’audio entrant pour les participants aux réunions associées à cette conversation, pour le compte de l’utilisateur connecté.
    LiveShareSession.ReadWrite.Chat Permet à l’application de créer et de synchroniser des sessions Live Share pour les réunions associées à cette conversation, et d’accéder aux informations associées sur la liste de la réunion, telles que le rôle de réunion du membre, au nom de l’utilisateur connecté.
    OnlineMeetingIncomingAudio.Detect.Chat Permet à l’application de détecter les modifications apportées à l’état de l’audio entrant dans les réunions associées à cette conversation, au nom de l’utilisateur connecté.
    OnlineMeetingNotification.Send.Chat Permet à l’application d’envoyer des notifications pour les réunions associées à la conversation.
  • Autorisations déléguées spécifiques aux ressources pour les utilisateurs

    Name Description
    InAppPurchase.Allow.User Permet à l’application d’afficher les offres marketplace de l’utilisateur et d’effectuer les achats de l’utilisateur au sein de l’application, au nom de l’utilisateur connecté.

Créer un fichier manifeste

Si votre application n’a pas de fichier manifeste d’application Teams, vous devez le créer.

Pour créer un fichier manifeste d’application Teams :

  1. Utilisez le exemple de schéma de manifeste pour créer un fichier json.
  2. Enregistrez-le à la racine de votre dossier de projet en tant que manifest.json.

Voici un exemple de schéma de manifeste pour une application onglet avec l’authentification unique activée :

Remarque

L’exemple de contenu du manifeste présenté ici concerne uniquement une application d’onglet. Il utilise des exemples de valeurs pour l’URI de sous-domaine. Pour plus d’informations, consultez exemple de schéma de manifeste.

{ 
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.11/MicrosoftTeams.schema.json", 
"manifestVersion": "1.12", 
"version": "1.0.0", 
"id": "{new GUID for this Teams app - not the Azure AD App ID}", 
"developer": { 
"name": "Microsoft", 
"websiteUrl": "https://www.microsoft.com", 
"privacyUrl": "https://www.microsoft.com/privacy", 
"termsOfUseUrl": "https://www.microsoft.com/termsofuse" 
}, 

"name": { 
  "short": "Teams Auth SSO", 
  "full": "Teams Auth SSO" 
}, 


"description": { 
  "short": "Teams Auth SSO app", 
  "full": "The Teams Auth SSO app" 
}, 

"icons": { 
  "outline": "outline.png", 
  "color": "color.png" 
}, 

"accentColor": "#60A18E", 
"staticTabs": [ 
  { 
   "entityId": "auth", 
   "name": "Auth", 
   "contentUrl": "https://https://subdomain.example.com/Home/Index", 
   "scopes": [ "personal" ] 
  } 
], 

"configurableTabs": [ 
  { 
   "configurationUrl": "https://subdomain.example.com/Home/Configure", 
   "canUpdateConfiguration": true, 
   "scopes": [ 
   "team" 
    ] 
  } 
], 
"permissions": [ "identity", "messageTeamMembers" ], 
"validDomains": [ 
 "{subdomain or ngrok url}" 
], 
"webApplicationInfo": { 
  "id": "{Azure AD AppId}", 
  "resource": "api://subdomain.example.com/{Azure AD AppId}" 
}
} 

Voir aussi