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 :
identity
Nécessite des informations d’identité d’utilisateur.messageTeamMembers
Né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 :
- Utilisez le exemple de schéma de manifeste pour créer un fichier json.
- 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}"
}
}