Hinzufügen einer Registerkartenfunktion zur Teams-App
Registerkarten sind Webseiten, die in Microsoft Teams eingebettet sind. Registerkarten fungieren als einfache HTML-Tags iframe
, die auf Domänen verweisen, die im App-Manifest deklariert sind (zuvor teams-App-Manifest genannt). Sie können eine Registerkarte als Funktion zu einer Teams-App in einem Kanal innerhalb eines Team-, Gruppenchats oder einer persönlichen App für einen einzelnen Benutzer hinzufügen. Sie können benutzerdefinierte Registerkarten in Ihre App einschließen, um Ihre eigenen Webinhalte in Teams einzubetten oder Ihren Webinhalten Teams-spezifische Funktionen hinzuzufügen. Weitere Informationen finden Sie unter Erstellen von Registerkarten für Teams.
Bevor Sie beginnen, empfehlen wir Ihnen, eine Registerkarten-App zu erstellen und zu durchlaufen. Weitere Informationen finden Sie unter Erstellen einer Registerkarten-App mit dem Teams-Toolkit.
Voraussetzungen
Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, um die Registerkartenfunktion in einer Teams-App zu konfigurieren:
- Teams-App und ihre App-Manifestdatei
- Microsoft 365-Konto zum Testen der App
- Microsoft Azure-Konto
Registerkarte "Konfigurieren" in der Teams-App
Die folgenden Schritte helfen Ihnen beim Konfigurieren der Registerkartenfunktion in einer Teams-App:
- Aktualisieren des App-Manifests
- Einrichten einer lokalen Debugumgebung
- Bereitstellen einer App in Azure
Tipp
Wenn Sie eine serverseitige Registerkarten-App entwickeln, müssen Sie die Ordnerstruktur, das Debugprofil oder die Bicep-Infrastruktur nicht aktualisieren. Fügen Sie der Registerkarte in Ihrem Botdienst neue Routen hinzu, und aktualisieren Sie das App-Manifest im Teams Toolkit. Weitere Informationen finden Sie unter Beispiel-App.
Aktualisieren des App-Manifests
Um Ihre Registerkarte in einem persönlichen Chat, Gruppenchat oder Kanal zu konfigurieren, aktualisieren Sie die
manifest.json
Datei mit dem folgenden Code:"staticTabs": [ { "entityId": "index", "name": "Personal Tab", "contentUrl": "${{TAB_ENDPOINT}}/index.html#/tab", "websiteUrl": "${{TAB_ENDPOINT}}/index.html#/tab", "scopes": [ "personal", "groupChat", "team" ] } ],
Aktualisieren Sie den Wert von mit der
validDomains
Domäne Ihrer Registerkarte."validDomains": [ "${{TAB_DOMAIN}}" ],
Hinweis
TAB_ENDPOINT
undTAB_DOMAIN
sind integrierte Variablen des Teams Toolkits. Sie werden während der Laufzeit basierend auf Ihrer aktuellen Umgebung durch den tatsächlichen Endpunkt ersetzt.
Einrichten einer lokalen Debugumgebung
Bringen Sie Ihren Registerkarten-App-Code in Ihr Projekt in Visual Studio Code. Wenn Sie noch keine haben, können Sie eine neue Registerkarten-App mit dem Teams Toolkit erstellen und den Quellcode in Ihr aktuelles Projekt kopieren. Die Ordnerstruktur Ihrer Registerkarten-App sieht standardmäßig wie folgt aus:
|-- appPackage/ |-- env/ |-- infra/ |-- tab/ <!--tab app source code--> | |-- src/ | | |-- app.ts | |-- package.json |-- index.ts <!--your current source code--> |-- package.json |-- teamsapp.yml
Organisieren Sie die Ordnerstruktur wie folgt neu:
|-- appPackage/ |-- infra/ |-- tab/ <!--tab app source code--> | |-- src/ | | |-- app.ts | |-- package.json |-- bot/ <!--move your current source code to a new sub folder--> | |-- index.ts | |-- package.json |-- teamsapp.yml
Aktualisieren Sie den folgenden Code in
teamsapp.yml
den Dateien undteamsapp.local.yml
so, dass er an der Ordnerstruktur ausgerichtet ist:deploy: # Run npm command - uses: cli/runNpmCommand with: args: install --no-audit workingDirectory: ./bot
Um das Debugprofil für Ihr Registerkartenprojekt zu konfigurieren, fügen Sie der Datei den
tasks.json
folgenden Code hinzu:{ "label": "Start application", "dependsOn": [ "Start bot", "Start frontend" ] }, { "label": "Start bot", "type": "shell", "command": "npm run dev:teamsfx", "isBackground": true, "options": { "cwd": "${workspaceFolder}/bot" }, "problemMatcher": { "pattern": [ { "regexp": "^.*$", "file": 0, "location": 1, "message": 2 } ], "background": { "activeOnStart": true, "beginsPattern": "[nodemon] starting", "endsPattern": "restify listening to|Bot/ME service listening at|[nodemon] app crashed" } } }, { "label": "Start frontend", "type": "shell", "command": "npm run dev:teamsfx", "isBackground": true, "options": { "cwd": "${workspaceFolder}/tab" }, "problemMatcher": { "pattern": { "regexp": "^.*$", "file": 0, "location": 1, "message": 2 }, "background": { "activeOnStart": true, "beginsPattern": ".*", "endsPattern": "Compiled|Failed|compiled|failed" } } }
Weitere Informationen zum Konfigurieren des Debugprofils finden Sie unter Beispiel-App.
Damit Ihr Registerkartenprojekt mit Teams Toolkit funktioniert, fügen Sie der Datei die
teamsapp.local.yml
folgenden Aktionen hinzu:provision: - uses: script # Set TAB_DOMAIN for local launch name: Set TAB_DOMAIN for local launch with: run: echo "::set-output TAB_DOMAIN=localhost:53000" - uses: script # Set TAB_ENDPOINT for local launch name: Set TAB_ENDPOINT for local launch with: run: echo "::set-output TAB_ENDPOINT=https://localhost:53000" deploy: - uses: devTool/install # Install development tool(s) with: devCert: trust: true writeToEnvironmentFile: # Write the information of installed development tool(s) into environment file for the specified environment variable(s). sslCertFile: SSL_CRT_FILE sslKeyFile: SSL_KEY_FILE - uses: cli/runNpmCommand # Run npm command with: args: install --no-audit workingDirectory: ./tab - uses: file/createOrUpdateEnvironmentFile # Generate runtime environment variables for tab with: target: ./tab/.localConfigs envs: BROWSER: none HTTPS: true PORT: 53000 SSL_CRT_FILE: ${{SSL_CRT_FILE}} SSL_KEY_FILE: ${{SSL_KEY_FILE}}
Drücken Sie F5 , um Ihre App lokal zu debuggen.
Bereitstellen einer App in Azure
Zum Erstellen einer serverseitigen Registerkarten-App müssen Sie Ihre Bicep-Dateien oder die Azure-Infrastruktur nicht aktualisieren. Sie können Ihre Registerkarten-App im gleichen Azure App Service wie Ihr Bot hosten.
Um eine statische Azure-Web-App für Ihre Registerkarten-App bereitzustellen, fügen Sie ihrer
azure.bicep
Datei den folgenden Code hinzu:@maxLength(20) @minLength(4) param resourceBaseName string param storageSku string param staticWebAppName string = resourceBaseName // Azure Static Web Apps that hosts your static web site resource swa 'Microsoft.Web/staticSites@2022-09-01' = { name: staticWebAppName // SWA do not need location setting location: 'centralus' sku: { name: staticWebAppSku tier: staticWebAppSku } properties: {} } var siteDomain = swa.properties.defaultHostname output AZURE_STATIC_WEB_APPS_RESOURCE_ID string = swa.id output TAB_DOMAIN string = siteDomain output TAB_ENDPOINT string = 'https://${siteDomain}'
Um sicherzustellen, dass die erforderlichen Parameter richtig festgelegt sind, aktualisieren Sie die
azure.parameters.json
Datei wie folgt:{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "resourceBaseName": { "value": "helloworld${{RESOURCE_SUFFIX}}" }, "storageSku": { "value": "Free" }, } }
Um Ihre Registerkarten-App in Azure Static Web Apps zu hosten, definieren Sie die
azureStaticWebApps/getDeploymentToken
Aktion in Ihrerteamsapp.yml
Datei. Die -Aktion basiert auf ,AZURE_STATIC_WEB_APPS_RESOURCE_ID
einer Ausgabe der bicep-Bereitstellungen. Fügen Sie den folgenden Code nach derarm/deploy
Aktion hinzu:provision: ... - uses: arm/deploy ... # Add this action - uses: azureStaticWebApps/getDeploymentToken with: resourceId: ${{AZURE_STATIC_WEB_APPS_RESOURCE_ID}} writeToEnvironmentFile: deploymentToken: SECRET_TAB_SWA_DEPLOYMENT_TOKEN ...
Wechseln Sie zu Befehlspalette anzeigen>... oder drücken Sie STRG+UMSCHALT+P.
Geben Sie
Teams: Provision
den Befehl ein, um den Bicep auf Azure anzuwenden.Um die Erstellung und Bereitstellung Ihrer Registerkarten-App zu automatisieren, fügen Sie Ihrer
teamsapp.yml
Datei die folgendenbuild
Aktionen unddeploy
hinzu:- uses: cli/runNpmCommand # Run npm command with: args: install workingDirectory: ./tab - uses: cli/runNpmCommand # Run npm command with: args: run build workingDirectory: ./tab # Deploy bits to Azure Storage Static Website - uses: cli/runNpxCommand name: deploy to Azure Static Web Apps with: args: '@azure/static-web-apps-cli deploy ./build -d ${{SECRET_TAB_SWA_DEPLOYMENT_TOKEN}} --env production'
Wechseln Sie zu Befehlspalette anzeigen>... oder drücken Sie STRG+UMSCHALT+P.
Geben Sie ein
Teams: Deploy
, um Ihren Registerkarten-App-Code in Azure bereitzustellen.Wählen Sie unter Ausführen und Debuggendie Option Remote starten (Edge) oder Remote starten (Chrome) aus.
Wählen Sie F5 aus, um Ihre Teams-App zu debuggen und eine Vorschau anzuzeigen.