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.jsongehostet 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.131.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.inputTypechoiceset 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 appan.

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:

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:

  1. Verwenden Sie das Beispielmanifestschema, um eine JSON-Datei zu erstellen.
  2. 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}" 
}
} 

Siehe auch