App-Manifestschema für Teams
Das Microsoft Teams-App-Manifest beschreibt, wie Ihre App in das Microsoft Teams-Produkt integriert wird. Ihr App-Manifest muss dem Schema entsprechen, das auf https://developer.microsoft.com/json-schemas/teams/v1.15/MicrosoftTeams.schema.json
gehostet wird. Frühere Versionen 1.0, 1.1,...,1.14 und die aktuelle Version 1.15 werden jeweils unterstützt (mit "v1.x" in der URL).
Weitere Informationen zu den Änderungen, die in den einzelnen Versionen vorgenommen wurden, finden Sie im Manifeständerungsprotokoll.
In der folgenden Tabelle sind die TeamsJS-Version und die Versionen der App-Manifeste für die verschiedenen App-Szenarien aufgeführt:
TeamsJS-Version | App-Manifestversion | Nächste Schritte | |
---|---|---|---|
Teams-Apps, die auf Microsoft 365/Outlook erweitert wurden | TeamsJS v.2.0 oder höher | 1.13 oder höher | Erweitern von Teams-Apps auf Microsoft 365 oder Erstellen einer neuen Microsoft 365-App |
Vorhandene reine Teams-Apps | Update auf TeamsJS v.2.0, wenn möglich (v.1.12 wird weiterhin unterstützt*) | 1.12 | Grundlegendes zur Abwärtskompatibilität von TeamsJS und Update auf TeamsJS v.2.0 |
Neue reine Teams-Apps | TeamsJS v.2.0 oder höher | 1.12 | Erstellen einer neuen Teams-App mit Teams Toolkit |
*Verwenden Sie nach Möglichkeit die neueste Version von TeamsJS (v.2.0 oder höher), um die neuesten Verbesserungen und die Unterstützung neuer Features zu nutzen, einschließlich Nur-Teams-Apps. TeamsJS v.1.12 wird weiterhin unterstützt, es werden jedoch keine neuen Features oder Verbesserungen hinzugefügt. Die Schemas 1.12 und 1.13 sind ansonsten identisch. Weitere Informationen zu TeamsJS finden Sie unter Teams JavaScript-Clientbibliothek.
Das folgende Schemabeispiel umfasst alle Erweiterbarkeitsoptionen:
Vollständiges Beispielmanifest
{
"$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
}
]
}
}
Das Schema definiert die folgenden Eigenschaften:
$schema
Optional, wird jedoch empfohlen – Zeichenfolge
Die https://-URL, die auf das JSON-Schema für das Manifest verweist.
manifestVersion
Erforderlich – Zeichenfolge
Die Version des Manifestschemas, die dieses Manifest verwendet. Verwenden Sie , um die Unterstützung von Teams-Apps in Outlook und Microsoft 365-Apps zu aktivieren. Verwenden Sie 1.13
1.12
(oder früher) für reine Teams-Apps.
Version
Erforderlich – Zeichenfolge
Die Version einer bestimmten App. Wenn Sie etwas in Ihrem Manifest aktualisieren, muss auch die Version erhöht werden. So wird beim Installieren des neuen Manifests das vorhandene überschrieben, und der Benutzer erhält die neuen Funktionen. Wenn die betreffende App an den Store übermittelt wurde, muss das neue Manifest erneut übermittelt und erneut validiert werden. Die App-Benutzer erhalten das neue aktualisierte Manifest automatisch innerhalb weniger Stunden nach dessen Genehmigung.
Wenn sich die App-Berechtigungsanforderungen ändern, werden die Benutzer aufgefordert, ein Upgrade durchzuführen und der App erneut die Berechtigungen zu erteilen.
Diese Versionszeichenfolge muss dem SemVer-Standard entsprechen (MAJOR.MINOR.PATCH).
ID
Erforderlich – Microsoft-App-ID
Die ID ist ein eindeutiger, von Microsoft generierter Bezeichner für die App. Sie verfügen über eine ID, wenn Ihr Bot über das Microsoft Bot Framework registriert ist. Sie verfügen über eine ID, wenn sich die Web-App Ihrer Registerkarte bereits bei Microsoft anmeldet. Sie müssen die ID hier eingeben. Andernfalls müssen Sie eine neue ID im Microsoft-Anwendungsregistrierungsportal generieren. Verwenden Sie die gleiche ID, wenn Sie einen Bot hinzufügen.
Die in Teams Admin Center gespeicherte ID ist die id der externen App und wird in den Ablaufverfolgungen als ExternalID angezeigt.
Hinweis
Wenn Sie ein Update für Ihre vorhandene App in AppSource übermitteln, darf die ID in Ihrem Manifest nicht geändert werden.
developer
Erforderlich – Objekt
Gibt Informationen zu Ihrem Unternehmen an. Für Apps, die an den Microsoft Teams Store übermittelt werden, müssen diese Werte mit den Informationen in Ihrem Store-Eintrag übereinstimmen. Weitere Informationen finden Sie in den Richtlinien für die Veröffentlichung im Microsoft Teams Store.
Name | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|
name |
32 Zeichen | ✔️ | Der Anzeigename für den Entwickler. |
websiteUrl |
2048 Zeichen | ✔️ | Die https://-URL zur Website des Entwicklers. Dieser Link muss Benutzer zur Landing Page Ihres Unternehmens oder des produktspezifischen Angebots führen. |
privacyUrl |
2048 Zeichen | ✔️ | Die https://-URL zur Datenschutzerklärung des Entwicklers. |
termsOfUseUrl |
2048 Zeichen | ✔️ | Die https://-URL zu den Nutzungsbedingungen des Entwicklers. |
mpnId |
10 Zeichen | Optional: Die Microsoft Partner Network-ID der Partnerorganisation, die die App erstellt. |
name
Erforderlich – Objekt
Der Name Ihrer App-Lösung, der Benutzern in der Microsoft Teams-Umgebung angezeigt wird. Für Apps, die an AppSource übermittelt werden, müssen diese Werte mit den Informationen in Ihrem AppSource-Eintrag übereinstimmen. Die Werte von short
und full
müssen unterschiedlich sein.
Name | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|
short |
30 Zeichen | ✔️ | Der Kurzanzeigename für die App. |
full |
100 Zeichen | Der vollständige Name der App; wird verwendet, wenn der vollständige App-Name 30 Zeichen überschreitet. |
description
Erforderlich – Objekt
Beschreibt Ihre App für Benutzer. Für Apps, die an AppSource übermittelt werden, müssen diese Werte mit den Informationen in Ihrem AppSource-Eintrag übereinstimmen.
Stellen Sie sicher, dass Ihre Beschreibung Ihre Lösung beschreibt und potenziellen Kunden hilft zu verstehen, worin ihre Funktion besteht. Sie müssen in der vollständigen Beschreibung angeben, ob ein externes Konto für die Verwendung der App erforderlich ist. Die Werte von short
und full
müssen unterschiedlich sein. Ihre kurze Beschreibung kann nicht innerhalb der langen Beschreibung wiederholt werden und darf keinen anderen App-Namen enthalten.
Name | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|
short |
80 Zeichen | ✔️ | Eine kurze Beschreibung der App; wird verwendet, wenn der Platz begrenzt ist. |
full |
4.000 Zeichen | ✔️ | Die vollständige Beschreibung Ihrer App. |
localizationInfo
Optional – Objekt
Ermöglicht die Angabe einer Standardsprache und stellt Zeiger auf weitere Sprachdateien bereit. Weitere Informationen finden Sie unter Lokalisierung.
Name | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|
defaultLanguageTag |
✔️ | Das Sprachtag der Zeichenfolgen in dieser Manifestdatei auf oberster Ebene. |
localizationInfo.additionalLanguages
Ein Array von Objekten, die weitere Sprachübersetzungen angeben.
Name | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|
languageTag |
✔️ | Das Sprachtag der Zeichenfolgen in der bereitgestellten Datei. | |
file |
✔️ | Ein relativer Dateipfad zur JSON-Datei mit den übersetzten Zeichenfolgen. |
Symbole
Erforderlich – Objekt
Symbole, die in der Microsoft Teams-App verwendet werden. Die Symboldateien müssen als Teil des Uploadpakets enthalten sein. Weitere Informationen finden Sie unter Symbole.
Name | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|
outline |
32 x 32 Pixel | ✔️ | Ein relativer Dateipfad zu einem transparenten, 32 x 32 Pixel großen PNG-Kontursymbol. |
color |
192 x 192 Pixel | ✔️ | Ein relativer Dateipfad zu einem farbigen, 192 x 192 Pixel großen PNG-Symbol. |
accentColor
Erforderlich – HTML-Hex-Farbcode
Eine Farbe, die und als Hintergrund für Ihre Farbsymbole verwendet werden soll.
Bei dem Wert muss es sich um einen gültigen HTML-Farbcode handeln, der mit "#" beginnt, z. B. #4464ee
.
configurableTabs
Optional – Array
Wird verwendet, wenn Ihre App-Erfahrung über eine Teamkanalregisterkarte verfügt, die eine zusätzliche Konfiguration erfordert, bevor sie hinzugefügt wird. Konfigurierbare Registerkarten werden nur in den team
- und groupchat
-Bereichen unterstützt, und Sie können dieselben Registerkarten mehrmals konfigurieren. Sie können sie jedoch nur einmal im Manifest definieren.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
configurationUrl |
string | 2048 Zeichen | ✔️ | Die https://-URL, die beim Konfigurieren der Registerkarte verwendet werden soll. |
scopes |
Array von Enumerationen | 1 | ✔️ | Derzeit unterstützen konfigurierbare Registerkarten nur die Bereiche team und groupchat . |
canUpdateConfiguration |
Boolescher Wert | Der Wert, der angibt, ob eine Instanz der Registerkartenkonfiguration nach der Erstellung vom Benutzer aktualisiert werden kann. Standard: true. | ||
context |
Array von Enumerationen | 6 | Die Gruppe von contextItem -Bereichen, in denen eine Registerkarte unterstützt wird. Standard: [channelTab, privateChatTab, meetingChatTab, meetingDetailsTab]. |
|
sharePointPreviewImage |
string | 2048 | Ein relativer Dateipfad zu einem Registerkartenvorschaubild zur Verwendung in SharePoint. Größe: 1024 x 768. | |
supportedSharePointHosts |
Array von Enumerationen | 1 | Definiert, wie Ihre Registerkarte in SharePoint zur Verfügung gestellt wird. Optionen: sharePointFullPage und sharePointWebPart |
staticTabs
Optional – Array
Definiert eine Reihe von Registerkarten, die standardmäßig "angeheftet" werden können, ohne dass der Benutzer sie manuell hinzufügen muss. Im personal
-Bereich deklarierte statische Registerkarten werden immer an die persönliche Benutzeroberfläche der App angeheftet. Im team
-Bereich deklarierte statische Registerkarten werden derzeit nicht unterstützt.
Dieses Element ist ein Array (maximal 16 Elemente), wobei alle Elemente vom Typ object
sind. Dieser Block ist nur für Lösungen erforderlich, die eine Lösung mit statischen Registerkarten bereitstellen.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
entityId |
string | 64 Zeichen | ✔️ | Ein eindeutiger Bezeichner für die Entität, die auf der Registerkarte angezeigt wird. |
name |
string | 128 Zeichen | ✔️ | Der Anzeigename der Registerkarte in der Kanal-Benutzeroberfläche. |
contentUrl |
string | ✔️ | Die https://-URL, die auf die Entitäts-Benutzeroberfläche verweist, die im Microsoft Teams-Canvas angezeigt werden soll. | |
websiteUrl |
string | Die https://-URL, auf die verwiesen wird, wenn sich ein Benutzer für die Anzeige in einem Browser entscheidet. | ||
searchUrl |
string | Die https://-URL, auf die für die Suchabfragen eines Benutzers verwiesen wird. | ||
scopes |
Array von Enumerationen | 1 | ✔️ | Derzeit unterstützen statische Registerkarten nur den personal -Bereich. Das bedeutet, dass sie nur als Teil der persönlichen Benutzeroberfläche bereitgestellt werden können. |
context |
Array von Enumerationen | 2 | Die Gruppe von contextItem -Bereichen, in denen eine Registerkarte unterstützt wird. |
Hinweis
Das searchUrl-Feature ist für Drittanbieterentwickler nicht verfügbar. Wenn Ihre Registerkarten kontextabhängige Informationen zum Anzeigen relevanter Inhalte oder zum Initiieren eines Authentifizierungsvorgangs benötigen, finden Sie entsprechende Informationen unter Abrufen von Kontext für Ihre Microsoft Teams-Registerkarte.
Bots
Optional – Array
Definiert eine Bot-Lösung zusammen mit optionalen Informationen wie Standardbefehlseigenschaften.
Das Element ist ein Array (maximal nur ein Element – derzeit ist nur ein Bot pro App zulässig) mit allen Elementen des Typs object
. Dieser Block ist nur für Lösungen erforderlich, die einen Bot umfassen.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
botId |
string | 64 Zeichen | ✔️ | Die eindeutige Microsoft-App-ID für den Bot, wie bei Bot Framework registriert. Die ID kann mit der Gesamt-App-IDübereinstimmen. |
scopes |
Array von Enumerationen | 3 | ✔️ | Gibt an, ob der Bot eine Umgebung im Kontext eines Kanals in einem team oder Gruppenchat (groupchat ) ist, oder aber eine Umgebung einzig für einen bestimmten Benutzer (personal ). Diese Optionen sind nicht exklusiv. |
needsChannelSelector |
Boolesch | Beschreibt, ob der Bot einen Benutzerhinweis verwendet, um den Bot zu einem bestimmten Kanal hinzuzufügen. Standard: false |
||
isNotificationOnly |
Boolesch | Gibt an, ob ein Bot ein unidirektionaler Bot ausschließlich für Benachrichtigungen ist (im Gegensatz zu einem dialogorientierten Bot). Standard: false |
||
supportsFiles |
Boolesch | Gibt an, ob der Bot die Möglichkeit zum Hochladen/Herunterladen von Dateien in persönliche Chats unterstützt. Standard: false |
||
supportsCalling |
Boolesch | Ein Wert, der angibt, wo ein Bot Audioanrufe unterstützt. WICHTIG: Dies ist derzeit eine experimentelle Eigenschaft. Experimentelle Eigenschaften sind u. U. nicht komplett und werden möglicherweise geändert, bevor sie vollständig verfügbar sind. Die Eigenschaft wird nur zu Test- und Erforschungszwecken bereitgestellt und darf nicht in Produktionsanwendungen verwendet werden. Standard: false |
||
supportsVideo |
Boolescher Wert | Ein Wert, der angibt, wo ein Bot Videoanrufe unterstützt. WICHTIG: Dies ist derzeit eine experimentelle Eigenschaft. Experimentelle Eigenschaften sind u. U. nicht komplett und werden möglicherweise geändert, bevor sie vollständig verfügbar sind. Die Eigenschaft wird nur zu Test- und Erforschungszwecken bereitgestellt und darf nicht in Produktionsanwendungen verwendet werden. Standard: false |
bots.commandLists
Eine Liste der Befehle, die Ihr Bot Benutzern empfehlen kann. Das Objekt ist ein Array (maximal zwei Elemente), wobei alle Elemente vom Typ object
sind. Sie müssen für jeden Bereich, den Ihr Bot unterstützt, eine separate Befehlsliste definieren. Weitere Informationen finden Sie unter Bot-Menüs.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
items.scopes |
Array von Enumerationen | 3 | ✔️ | Gibt den Bereich an, für den die Befehlsliste gültig ist. Mögliche Optionen sind team , personal und groupchat . |
items.commands |
Array von Objekten | 10 | ✔️ | Ein Array von Befehlen, die der Bot unterstützt:title : Name des Bot-Befehls (string, 32)description : Eine einfache Beschreibung oder ein Beispiel für die Befehlssyntax und zugehörige Argumente (string, 128) |
bots.commandLists.commands
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
title | string | 12 | ✔️ | Der Name des Bot-Befehls. |
description | string | 128 Zeichen | ✔️ | Eine einfache Textbeschreibung oder ein Beispiel für die Befehlssyntax und zugehörige Argumente. |
connectors
Optional – Array
Der connectors
-Block definiert eine Connectorkarte für Microsoft 365-Gruppen für die App.
Das Objekt ist ein Array (maximal ein Element), wobei alle Elemente vom Typ object
sind. Dieser Block ist nur für Lösungen erforderlich, die einen Connector bereitstellen.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
configurationUrl |
string | 2048 Zeichen | ✔️ | Die https://-URL, die beim Konfigurieren des Connectors verwendet werden soll. |
scopes |
Array von Enumerationen | 1 | ✔️ | Gibt an, ob der Connector eine Umgebung im Kontext eines Kanals in einem team oder aber eine Umgebung einzig für einen bestimmten Benutzer (personal ) bietet. Derzeit wird nur der team -Bereich unterstützt. |
connectorId |
string | 64 Zeichen | ✔️ | Ein eindeutiger Bezeichner für den Connector, der seiner ID im Connectors Developer Dashboard entspricht. |
composeExtensions
Optional – Array
Definiert eine Nachrichtenerweiterung für die App.
Hinweis
Der Name des Features wurde im November 2017 von "Compose-Erweiterung" in "Nachrichtenerweiterung" geändert, der Manifestname bleibt jedoch unverändert, sodass vorhandene Erweiterungen weiterhin funktionieren.
Das Element ist ein Array (maximal ein Element), wobei alle Elemente vom Typ object
sind. Dieser Block ist nur für Lösungen erforderlich, die eine Nachrichtenerweiterung bereitstellen.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
botId |
string | 64 | ✔️ | Die eindeutige Microsoft-App-ID für den Bot, welcher der Nachrichtenerweiterung zugeordnet ist, wie beim Bot Framework registriert. Die ID kann mit der Gesamt-App-ID übereinstimmen. |
commands |
Array von Objekten | 10 | ✔️ | Array von Befehlen, die von der Nachrichtenerweiterung unterstützt werden. |
canUpdateConfiguration |
Boolesch | Ein Wert, der angibt, ob die Konfiguration einer Nachrichtenerweiterung vom Benutzer aktualisiert werden kann. Standard: False. | ||
messageHandlers |
Array von Objekten | 5 | Eine Liste von Handlern, mit denen Apps aufgerufen werden können, wenn bestimmte Bedingungen erfüllt sind. | |
messageHandlers.type |
string | Der Typ des Nachrichtenhandlers. Muss "link" sein. |
||
messageHandlers.value.domains |
Array aus Zeichenfolgen | Array von Domänen, für die sich der Link-Nachrichtenhandler registrieren kann. | ||
messageHandlers.value.supportsAnonymizedPayloads |
Boolesch | Ein boolescher Wert, der angibt, ob der Linknachrichtenhandler der App anonymen Aufrufflow unterstützt. Der Standardwert ist „false“. |
composeExtensions.commands
Ihre Nachrichtenerweiterung muss mindestens einen Befehl deklarieren (maximal 10 Befehle insgesamt). Jeder Befehl wird in Microsoft Teams als potenzielle Interaktion vom Einstiegspunkt in der Benutzeroberfläche angezeigt.
Jedes Befehlselement ist ein Objekt mit folgender Struktur:
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
id |
string | 64 Zeichen | ✔️ | Die ID für den Befehl. |
title |
string | 32 Zeichen | ✔️ | Der benutzerfreundliche Name des Befehls. |
type |
string | 64 Zeichen | Der Befehlstyp. Entweder query oder action . Standard: query. |
|
description |
string | 128 Zeichen | Die Beschreibung, die Benutzern angezeigt wird, um den Zweck dieses Befehls anzugeben. | |
initialRun |
Boolescher Wert | Ein boolescher Wert gibt an, ob der Befehl anfänglich ohne Parameter ausgeführt wird. Der Standardwert ist false. | ||
context |
Array aus Zeichenfolgen | 3 | Definiert, wo die Nachrichtenerweiterung aufgerufen werden kann. Eine beliebige Kombination aus compose , commandBox , message . Der Standardwert ist ["compose","commandBox"] . |
|
fetchTask |
Boolescher Wert | Ein boolescher Wert, der angibt, ob das Aufgabenmodul dynamisch abgerufen werden muss. Der Standardwert ist false. | ||
taskInfo |
Objekt | Geben Sie das Aufgabenmodul an, das vorab geladen werden soll, wenn ein Nachrichtenerweiterungsbefehl verwendet wird. | ||
taskInfo.title |
string | 64 Zeichen | Titel des ersten Dialogfelds. | |
taskInfo.width |
string | Dialogfensterbreite: entweder eine Angabe in Pixeln oder ein Standardlayout, z. B. "groß", "mittel" oder "klein". | ||
taskInfo.height |
string | Dialogfensterhöhe: entweder eine Angabe in Pixeln oder ein Standardlayout, z. B. "groß", "mittel" oder "klein". | ||
taskInfo.url |
string | Anfängliche WebView-URL. | ||
parameters |
Objekt-Array | 5 Elemente | ✔️ | Die Liste der Parameter, die der Befehl verwendet. Minimum: 1; Maximum: 5. |
parameters.name |
string | 64 Zeichen | ✔️ | Der Name des Parameters, wie er im Client angezeigt wird. Der Parametername ist in der Benutzeranforderung enthalten. |
parameters.title |
string | 32 Zeichen | ✔️ | Benutzerfreundlicher Titel für den Parameter. |
parameters.description |
string | 128 Zeichen | Benutzerfreundliche Zeichenfolge, die den Zweck dieses Parameters beschreibt. | |
parameters.value |
string | 512 Zeichen | Anfangswert für den Parameter. Derzeit wird der Wert nicht unterstützt. | |
parameters.inputType |
string | 128 Zeichen | Definiert den Typ des Steuerelements, das in einem Aufgabenmodul für fetchTask: false angezeigt wird. Einer der folgenden: text, textarea, number, date, time, toggle, choiceset . |
|
parameters.choices |
Array von Objekten | 10 Elemente | Die Auswahloptionen für choiceset . Wird nur verwendet, wenn parameter.inputType choiceset ist. |
|
parameters.choices.title |
string | 128 Zeichen | ✔️ | Titel der Auswahl. |
parameters.choices.value |
string | 512 Zeichen | ✔️ | Value of the choice. |
Berechtigungen
Optional – Array von Zeichenfolgen
Ein Array von string
, das angibt, welche Berechtigungen die App anfordert, wodurch Endbenutzer wissen, wie die Erweiterung funktioniert. Die folgenden Optionen sind nicht exklusiv:
identity
Erfordert Benutzeridentitätsinformationen.messageTeamMembers
Erfordert die Berechtigung zum Senden von direkten Nachrichten an Teammitglieder.
Wenn Sie diese Berechtigungen während der App-Aktualisierung ändern, müssen Ihre Benutzer den Zustimmungsprozess wiederholen, nachdem sie die aktualisierte App gestartet haben. Weitere Informationen finden Sie unter Aktualisieren Ihrer App.
Hinweis
Berechtigungen sind jetzt veraltet.
devicePermissions
Optional – Array von Zeichenfolgen
Stellt die systemeigenen Features auf dem Gerät eines Benutzers bereit, für die Ihre App Zugriff anfordert. Mögliche Optionen sind:
geolocation
media
notifications
midi
openExternal
validDomains
Optional, außer erforderlich wo angegeben.
Eine Liste gültiger Domänen für Websites, die von der App im Microsoft Teams-Client geladen werden sollen. Domäneneinträge können Platzhalter enthalten, z. B. *.example.com
. Die gültige Domäne entspricht genau einem Segment der Domäne. Wenn sie a.b.example.com
entsprechen muss, verwenden Sie *.*.example.com
. Wenn Ihre Registerkartenkonfiguration oder Inhalts-UI zu einer anderen Domäne als jener der Registerkartenkonfiguration führt, muss diese Domäne hier angegeben werden.
Schließen Sie nicht die Domänen von Identitätsanbietern ein, die in Ihrer App unterstützt werden sollen. Um sich beispielsweise mit einer Google-ID zu authentifizieren, ist es erforderlich, an accounts.google.com umzuleiten. Sie dürfen jedoch nicht accounts.google.com in validDomains[]
einschließen.
Microsoft Teams-Apps, die ihre eigenen SharePoint-URLs benötigen, um ordnungsgemäß zu funktionieren, enthalten "{teamsitedomain}" in ihrer Liste zulässiger Domänen.
Wichtig
Fügen Sie keine Domänen hinzu, die sich außerhalb Ihrer Kontrolle befinden, weder direkt noch über Platzhalter (*). *.yoursite.com ist beispielsweise gültig, aber *.onmicrosoft.com ist ungültig, da es nicht unter Ihrer Kontrolle steht.
Bei Verwendung von Wildcards gelten die folgenden Regeln:
- Wenn ein Unterdomänensegment einen Platzhalter enthält, muss es das einzige Zeichen im Segment sein.
- Jedes Segment, das einem Wildcardsegment vorangeht, muss ebenfalls ein Wildcardsegment sein.
* .*.domain.com ist beispielsweise gültig, aber foo.*.myteam.domain.com ist ungültig.
Das Objekt ist ein Array, wobei alle Elemente vom Typ string
sind.
webApplicationInfo
Optional – Objekt
Geben Sie Ihre Azure Active Directory-App-ID und Microsoft Graph-Informationen an, um Benutzern zu helfen, sich nahtlos bei Ihrer App anzumelden. Falls Ihre App in Microsoft Azure Active Directory (Azure AD) registriert ist, müssen Sie die App-ID angeben. Administratoren können im Microsoft Teams Admin Center Berechtigungen einfach überprüfen und ihre Zustimmung erteilen.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
id |
string | 36 Zeichen | ✔️ | Azure AD-Anwendungs-ID der App. Diese ID muss eine GUID sein. |
resource |
string | 2048 Zeichen | ✔️ | Ressourcen-URL der App zum Abrufen des Authentifizierungstokens für Einmaliges Anmelden. HINWEIS: Wenn Sie SSO nicht verwenden, stellen Sie sicher, dass Sie in diesem Feld einen Dummy-Zeichenfolgenwert in Ihr App-Manifest eingeben, https://notapplicable um beispielsweise eine Fehlerantwort zu vermeiden. |
graphConnector
Optional – Objekt
Geben Sie die Graph-Connectorkonfiguration der App an. Wenn dies vorhanden ist, muss auch webApplicationInfo.id angegeben werden.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
notificationUrl |
string | 2048 Zeichen | ✔️ | Die URL, an die Graph-Connector-Benachrichtigungen für die Anwendung gesendet werden sollen. |
showLoadingIndicator
Optional – Boolescher Wert
Gibt an, ob die Ladefortschritt angezeigt werden soll, während eine App oder Registerkarte geladen wird. Der Standardwert ist false.
Hinweis
- Wenn Sie in Ihrem App-Manifest die Option true auswählen
showLoadingIndicator
, ändern Sie die Inhaltsseiten Ihrer Registerkarten und Aufgabenmodule, um die Seite ordnungsgemäß zu laden, wie unter Anzeigen eines nativen Ladeindikatordokuments beschrieben. - Wenn Sie die Inhaltsseiten ihrer Registerkarte nicht ändern, wird die Registerkarten-App nicht geladen und zeigt den Fehler
There was a problem reaching this app
an.
isFullScreen
Optional – Boolescher Wert
Gibt an, ob eine persönliche App ohne Registerkartenkopfleiste gerendert wird (was den Vollbildmodus anzeigt). Der Standardwert ist false.
Hinweis
isFullScreen
funktioniert nur für Apps, die in Ihrer Organisation veröffentlicht wurden. Quergeladene und veröffentlichte Drittanbieter-Apps können diese Eigenschaft nicht verwenden. (Sie wird ignoriert.)isFullScreen=true
entfernt die von Teams bereitgestellte Kopfzeile und den Titel aus persönlichen Apps und Aufgabenmoduldialogfeldern.
Aktivitäten
Optional – Objekt
Definiert die Eigenschaften, die Ihre App zum Posten eines Benutzeraktivitätsfeeds verwendet.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
activityTypes |
Array von Objekten | 128 Elemente | Geben Sie die Arten von Aktivitäten an, die Ihre App in einem Benutzeraktivitätsfeed veröffentlichen kann. |
activities.activityTypes
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
type |
string | 32 Zeichen | ✔️ | Der Benachrichtigungstyp. Siehe unten. |
description |
string | 128 Zeichen | ✔️ | Eine kurze Beschreibung der Benachrichtigung. Siehe unten. |
templateText |
string | 128 Zeichen | ✔️ | Beispiel: "{actor} hat die Aufgabe {taskId} für Sie erstellt." |
{
"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
Optional – Zeichenfolge
Gibt den standardmäßig für diese App definierten Installationsbereich an. Der definierte Bereich ist die Option, die auf der Schaltfläche angezeigt wird, wenn ein Benutzer versucht, die App hinzuzufügen. Mögliche Optionen sind:
personal
team
groupchat
meetings
defaultGroupCapability
Optional – Objekt
Wenn ein Gruppeninstallationsbereich ausgewählt ist, wird die Standardfunktion definiert, wenn der Benutzer die App installiert. Mögliche Optionen sind:
team
groupchat
meetings
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
team |
string | Wenn der ausgewählte Installationsbereich team ist, gibt dieses Feld die verfügbare Standardfunktion an. Optionen: tab , bot oder connector . |
||
groupchat |
string | Wenn der ausgewählte Installationsbereich groupchat ist, gibt dieses Feld die verfügbare Standardfunktion an. Optionen: tab , bot oder connector . |
||
meetings |
string | Wenn der ausgewählte Installationsbereich meetings ist, gibt dieses Feld die verfügbare Standardfunktion an. Optionen: tab , bot oder connector . |
configurableProperties
Optional – Array
Der configurableProperties
-Block definiert die App-Eigenschaften, die Microsoft Teams-Administratoren anpassen können. Weitere Informationen finden Sie unter Aktivieren der App-Anpassung. Das App-Anpassungsfeature wird in benutzerdefinierten oder branchenspezifischen Apps nicht unterstützt.
Hinweis
Es muss mindestens eine Eigenschaft definiert werden. Sie können in diesem Block maximal neun Eigenschaften definieren.
Sie können eine der folgenden Eigenschaften definieren:
- name: Der Anzeigename der App.
- shortDescription: Die kurze Beschreibung der App.
- longDescription: Die lange Beschreibung der App.
- smallImageUrl: Das Kontursymbol der App.
- largeImageUrl: Das Farbsymbol der App.
- accentColor: Die zu verwendende Farbe und ein Hintergrund für Ihre Kontursymbole.
- developerUrl: Die HTTPS-URL der Website des Entwicklers.
- privacyUrl: Die HTTPS-URL der Datenschutzrichtlinie des Entwicklers.
- termsOfUseUrl: Die HTTPS-URL der Nutzungsbedingungen des Entwicklers.
supportedChannelTypes
Optional – Array
Aktiviert Ihre App in Kanälen die keine Standardkanäle sind. Wenn Ihre App einen Teambereich unterstützt und diese Eigenschaft definiert ist, aktiviert Microsoft Teams Ihre App in jedem Kanaltyp entsprechend. Derzeit werden die Kanaltypen „Privat“ und „Freigegeben“ unterstützt.
Hinweis
- Wenn Ihre App einen Teambereich unterstützt, funktioniert dieser in den Standardkanälen unabhängig von den in dieser Eigenschaft definierten Werten.
- Ihre Anwendung kann die individuellen Eigenschaften der einzelnen Kanaltypen berücksichtigen, um ordnungsgemäß zu funktionieren. Informationen zum Aktivieren Ihrer Registerkarte für private und freigegebene Kanäle finden Sie unter Abrufen des Kontexts in privaten Kanälen und Abrufen von Kontext in freigegebenen Kanälen.
defaultBlockUntilAdminAction
Optional – Boolescher Wert
Wenn die defaultBlockUntilAdminAction
-Eigenschaft auf true festgelegt ist, ist die App so lange standardmäßig für Benutzer ausgeblendet, bis der Administrator sie zulässt. Bei Festlegung auf true ist die App für alle Mandanten und Endbenutzer ausgeblendet. Mandantenadministratoren können die App im Microsoft Teams Admin Center sehen und Maßnahmen ergreifen, um sie zuzulassen oder zu blockieren. Der Standardwert ist false. Weitere Informationen zum Standardmäßigen App-Block finden Sie unter Blockieren von Apps standardmäßig für Benutzer, bis ein Administrator die Genehmigung erteilt.
publisherDocsUrl
Optional – Zeichenfolge
Maximale Länge: 128 Zeichen
publisherDocsUrl
ist eine HTTPS-URL zu einer Informationsseite, auf der Administratoren Anweisungen finden, bevor sie eine App zulassen, die standardmäßig blockiert ist. Sie kann auch verwendet werden, um Anweisungen oder Informationen zur App bereitzustellen, die für den Mandantenadministrator nützlich sein könnten.
subscriptionOffer
Optional – Objekt
Gibt das Ihrer App zugeordnete SaaS-Angebot an.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
offerId |
string | 2048 Zeichen | ✔️ | Ein eindeutiger Bezeichner, der Ihre Publisher-ID und Angebots-ID enthält. Diese finden Sie im Partner Center. Sie müssen die Zeichenfolge als publisherId.offerId formatieren. |
meetingExtensionDefinition
Optional – Objekt
Geben Sie die Besprechungserweiterungsdefinition an. Weitere Informationen finden Sie unter benutzerdefinierten Szenen im Zusammen-Modus in Teams.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
scenes |
Array von Objekten | 5 Elemente | Unterstützte Besprechungsszenen. | |
supportsStreaming |
Boolesch | Ein Wert, der angibt, ob eine App die Audio- und Videoinhalte der Besprechung auf einen RTMP-Endpunkt (Real-Time Meeting Protocol) streamen kann. Der Standardwert ist false. |
meetingExtensionDefinition.scenes
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
id |
✔️ | Der eindeutige Bezeichner für die Szene. Diese ID muss eine GUID sein. | ||
name |
string | 128 Zeichen | ✔️ | Der Name der Szene. |
file |
✔️ | Der relative Dateipfad zur JSON-Metadatendatei der Szenen. | ||
preview |
✔️ | Der relative Dateipfad zum PNG-Vorschausymbol der Szenen. | ||
maxAudience |
ganze Zahl | 50 | ✔️ | Die maximale Anzahl von Zielgruppen, die in der Szene unterstützt werden. |
seatsReservedForOrganizersOrPresenters |
ganze Zahl | 50 | ✔️ | Die Anzahl der Plätze, die für Organisatoren oder Moderatoren reserviert sind. |
Autorisierung
Optional – Objekt
Hinweis
Wenn Sie die manifestVersion
-Eigenschaft auf 1.12 festlegen, ist die Autorisierungseigenschaft nicht mit den älteren Versionen (Version 1.11 oder früher) des Manifests kompatibel. Die Autorisierung wird für Manifestversion 1.12 unterstützt.
Spezifizieren und konsolidieren Sie autorisierungsbezogene Informationen für die App.
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
permissions |
Liste der Berechtigungen, welche die App benötigt, um zu funktionieren. |
authorization.permissions
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
resourceSpecific |
Array von Objekten | 16 Elemente | Berechtigungen, die den Datenzugriff auf Ebene der Ressourceninstanz schützen. |
authorization.permissions.resourceSpecific
Name | Typ | Maximale Größe | Erforderlich | Beschreibung |
---|---|---|---|---|
type |
string | ✔️ | Der Typ der ressourcenspezifischen Berechtigung. Optionen: Application und Delegated . |
|
name |
string | 128 Zeichen | ✔️ | Der Name der ressourcenspezifischen Berechtigung. Weitere Informationen finden Sie unter Ressourcenspezifische Anwendungsberechtigungen und Ressourcenspezifische delegierte Berechtigungen |
Ressourcenspezifische Anwendungsberechtigungen
Anwendungsberechtigungen ermöglichen der App den Zugriff auf Daten, ohne dass ein Benutzer angemeldet ist. Informationen zu Anwendungsberechtigungen finden Sie unter Ressourcenspezifische Zustimmung für MS Graph und MS BotSDK.
Ressourcenspezifische delegierte Berechtigungen
Delegierte Berechtigungen ermöglichen der App den Zugriff auf Daten im Namen des angemeldeten Benutzers.
Ressourcenspezifische delegierte Berechtigungen für Teams
Name Beschreibung ChannelMeetingParticipant.Read.Group
Ermöglicht es der App, im Namen des angemeldeten Benutzers die Teilnehmerinformationen (Name, Rolle, ID, Beitritts- und Abwesenheitszeiten) von Channel-Meetings zu lesen, die mit diesem Team verbunden sind. InAppPurchase.Allow.Group
Ermöglicht der App, Marketplace-Angebote für Benutzer in diesem Team anzuzeigen und ihre Käufe innerhalb der App im Namen des angemeldeten Benutzers abzuschließen. ChannelMeetingStage.Write.Group
Ermöglicht es der App, in Channel-Meetings, die mit diesem Team verbunden sind, im Namen des angemeldeten Benutzers Inhalte auf der Meetingbühne anzuzeigen. LiveShareSession.ReadWrite.Group
Ermöglicht der App das Erstellen und Synchronisieren von Live Share-Sitzungen für Besprechungen, die diesem Team zugeordnet sind, und den Zugriff auf verwandte Informationen über die Besprechungsliste der Besprechung, z. B. die Besprechungsrolle des Mitglieds, im Namen des angemeldeten Benutzers. Ressourcenspezifische delegierte Berechtigungen für Chats oder Besprechungen
Name Beschreibung InAppPurchase.Allow.Chat
Ermöglicht es der App, den Nutzern in diesem Chat und allen damit verbundenen Treffen Marktplatzangebote zu zeigen und ihre Einkäufe innerhalb der App im Namen des angemeldeten Nutzers abzuschließen. MeetingStage.Write.Chat
Ermöglicht es der App, in Meetings, die mit diesem Chat verbunden sind, im Namen des angemeldeten Benutzers Inhalte auf der Meeting-Bühne zu zeigen. OnlineMeetingParticipant.Read.Chat
Ermöglicht es der App, im Namen des angemeldeten Benutzers die Teilnehmerinformationen, einschließlich Name, Rolle, ID, Beitritts- und Austrittszeiten, der mit diesem Chat verbundenen Besprechung zu lesen. OnlineMeetingParticipant.ToggleIncomingAudio.Chat
Ermöglicht der App, eingehende Audiodaten für Teilnehmer an Meetings, die mit diesem Chat verknüpft sind, im Namen des angemeldeten Benutzers umzuschalten. LiveShareSession.ReadWrite.Chat
Ermöglicht der App das Erstellen und Synchronisieren von Live Share-Sitzungen für Besprechungen, die diesem Chat zugeordnet sind, und den Zugriff auf zugehörige Informationen zur Besprechungsliste, z. B. die Besprechungsrolle des Mitglieds, im Namen des angemeldeten Benutzers. OnlineMeetingIncomingAudio.Detect.Chat
Ermöglicht der App, Änderungen am Status eingehender Audiodaten in Besprechungen, die mit diesem Chat verknüpft sind, im Namen des angemeldeten Benutzers zu erkennen. Ressourcespezifische delegierte Berechtigungen für Benutzer
Name Beschreibung InAppPurchase.Allow.User
Ermöglicht es der App, dem Benutzer Angebote auf dem Marktplatz zu zeigen und die Einkäufe des Benutzers innerhalb der App im Namen des angemeldeten Benutzers abzuschließen.
Erstellen einer Manifestdatei
Wenn Ihre App nicht über eine Teams-App-Manifestdatei verfügt, müssen Sie diese erstellen.
So erstellen Sie eine Teams-App-Manifestdatei:
- Verwenden Sie das Beispielmanifestschema, um eine JSON-Datei zu erstellen.
- Speichern Sie diese im Stammverzeichnis Ihres Projektordners als
manifest.json
.
Hier sehen Sie ein Beispiel für ein Manifestschema für eine Registerkarten-App mit aktiviertem einmaligem Anmelden:
Hinweis
Der hier gezeigte Inhalt des Manifestbeispiels gilt nur für eine Registerkarten-App. Es werden Beispielwerte für den Unterdomänen-URI verwendet. Weitere Informationen finden Sie unter Beispielmanifestschema.
{
"$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}"
}
}