Was sind Aufgabenmodule?What are task modules?

Aufgabenmodule ermöglichen Ihnen das Erstellen von modalen Popup-Oberflächen in Ihrer Teams-Anwendung.Task modules allow you to create modal popup experiences in your Teams application. Innerhalb des Popups können Sie Ihren eigenen benutzerdefinierten HTML/JavaScript-Code ausführen, ein <iframe> -basiertes Widget wie ein YouTube-oder Microsoft Stream-Video anzeigen oder eine Adaptive Karteanzeigen.Inside the popup you can run your own custom HTML/JavaScript code, show an <iframe>-based widget such as a YouTube or Microsoft Stream video or display an Adaptive card. Sie eignen sich besonders für das Initiieren und Fertigstellen von Aufgaben oder das Anzeigen von Multimedia-Informationen wie Videos oder Power BI-Dashboards.They are especially useful for initiating and completing tasks or displaying rich information like videos or Power BI dashboards. Eine Popup-Oberfläche wirkt für Benutzer, die Aufgaben initiieren und fertigstellen, im Vergleich zu einer Registerkarte oder einer auf einer Unterhaltung basierenden Bot-Umgebung, häufig natürlicher.A popup experience is often more natural for users initiating and completing tasks compared to a tab or a conversation-based bot experience.

Aufgaben Module werden auf der Grundlage von Microsoft Teams-Registerkarten erstellt. Es handelt sich im Wesentlichen um eine Registerkarte innerhalb eines Popupfensters.Task modules build on the foundation of Microsoft Teams tabs; they are essentially a tab inside a popup window. Sie verwenden das gleiche SDK, wenn Sie also eine Registerkarte erstellt haben, sind Sie bereits 90% der Art und Weise, ein Aufgabenmodul erstellen zu können.They use the same SDK, so if you've built a tab you are already 90% of the way to being able to create a task module.

Aufgabenmodule können auf drei Arten aufgerufen werden:Task modules can be invoked in three ways:

  • Kanal oder persönliche Registerkarten.Channel or personal tabs. Mithilfe des Microsoft Teams Tabs SDK können Sie Aufgaben Module über Schaltflächen, Links oder Menüs auf der Registerkarte aufrufen. Dies wird hier ausführlich behandelt.Using the Microsoft Teams Tabs SDK you can invoke task modules from buttons, links or menus on your tab. This is covered in detail here.
  • Bots.Bots. Schaltflächen auf Karten , die von Ihrem bot gesendet wurden.Buttons on cards sent from your bot. Dies ist besonders nützlich, wenn Sie nicht alle Benutzer in einem Kanal benötigen, um zu sehen, was Sie mit einem bot machen.This is particularly useful when you don't need everyone in a channel to see what you are doing with a bot. Wenn Benutzer beispielsweise auf eine Umfrage in einem Kanal antworten, ist es nicht unbedingt nötig, einen Datensatz der erstellten Umfrage anzuzeigen.For example, when having users respond to a poll in a channel it's not terribly useful to see a record of that poll being created. Dies wird hier ausführlich erläutert.This is covered in detail here.
  • Außerhalb von Teams von einem Deep Link.Outside of Teams from a deep link. Sie können auch URLs erstellen, um ein Aufgabenmodul von einem beliebigen Ort aus aufzurufen.You can also create URLs to invoke a task module from anywhere. Dies wird hier ausführlich erläutert.This is covered in detail here.

Wie ein Aufgabenmodul aussiehtWhat a task module looks like

So sieht ein Aufgabenmodul aus, wenn es von einem bot aufgerufen wird (natürlich ohne die farbigen Rechtecke und nummerierten Kreise):Here's what a task module looks like when invoked from a bot (without the colored rectangles and numbered circles, of course):

Aufgabenmodul Beispiel

Lassen Sie uns das durchgehen:Let's walk through it:

  1. color SymbolIhrer APP.Your app's color icon.
  2. short NameIhrer APP.Your app's short name.
  3. Der in der title -Eigenschaft des taskinfo-Objektsangegebene Titel des Vorgangs Moduls.The task module's title specified in the title property of the TaskInfo object.
  4. Die Schaltfläche close/Cancel des Aufgabenmoduls.The task module's close/cancel button. Wenn der Benutzer Dies drückt, erhält Ihre APP err wie hierbeschrieben ein Ereignis.If the user presses this, your app will receive an err event as described here. (Hinweis: es ist derzeit nicht möglich, dieses Ereignis zu erkennen, wenn ein Aufgabenmodul von einem bot aufgerufen wird.)(Note: It is currently not possible to detect this event when a task module is invoked from a bot.)
  5. Das blaue Rechteck ist das, wo Ihre Webseite angezeigt wird, wenn Sie eine eigene Webseite mit der url -Eigenschaft des taskinfo-Objektsladen.The blue rectangle is the where your web page appears if you are loading your own web page using the url property of the TaskInfo object. Weitere Details finden Sie im Abschnitt zur Größenanpassung für Aufgaben Module weiter unten.More detail is in the task module sizing section below.
  6. Wenn Sie eine Adaptive Karte über die card -Eigenschaft des taskinfo-Objekts anzeigen, wird der Textabstand für Sie hinzugefügt, andernfalls müssen Sie diese selbst behandeln.If you are displaying an Adaptive card via the card property of the TaskInfo object the padding is added for you, otherwise you'll need to handle this yourself.
  7. Hier werden Adaptive Kartenschaltflächen gerendert.Adaptive card buttons will render here. Wenn Sie eine eigene Seite verwenden, müssen Sie Ihre eigenen Schaltflächen erstellen.If you're using your own page you must create your own buttons.

Übersicht über das Aufrufen und entfehlen von Aufgaben ModulenOverview of invoking and dismissing task modules

Aufgaben Module können von Tabs, Bots oder Deep Links aufgerufen werden und was in einem HTML-oder adaptiven-Kartenformat angezeigt wird, es gibt also viel Flexibilität hinsichtlich der Art und Weise, wie diese aufgerufen werden und wie das Ergebnis der Interaktion eines Benutzers behandelt werden kann.Task modules can be invoked from tabs, bots or deep links and what appears in one can be either HTML or an Adaptive card, so there's a lot of flexibility in terms of how they are invoked and how to deal with the result of a user's interaction. In der folgenden Tabelle ist die Funktionsweise zusammengefasst:The table below summarizes how this works:

Aufgerufen über...Invoked via... Aufgabenmodul ist HTML/JavaScriptTask module is HTML/JavaScript Aufgabenmodul ist Adaptive KarteTask module is Adaptive card
JavaScript auf einer RegisterkarteJavaScript in a tab 1. Verwenden der Teams-Client-SDK-Funktion tasks.startTask() mit einer optionalen submitHandler(err, result) Rückruffunktion1. Use the Teams client SDK function tasks.startTask() with an optional submitHandler(err, result) callback function

2. Rufen Sie im Code des Aufgabenmoduls, wenn der Benutzer fertig ist, die Microsoft Teams SDK-Funktion tasks.submitTask() mit einem result Objekt als Parameter auf.2. In the task module code, when the user is finished, call the Teams SDK function tasks.submitTask() with a result object as a parameter. Wenn ein submitHandler Rückruf in angegeben wurde tasks.startTask() , wird er von Teams result als Parameter aufgerufen.If a submitHandler callback was specified in tasks.startTask(), Teams calls it with result as a parameter.

3. Wenn beim Aufrufen eines Fehlers ein Fehler aufgetreten tasks.startTask() submitHandler ist, wird die Funktion err stattdessen mit einer Zeichenfolge aufgerufen.3. If there was an error when invoking tasks.startTask(), the submitHandler function is called with an err string instead.

4. Sie können auch einen angeben completionBotId , wenn ein Aufruf teams.startTask() in diesem Fall result stattdessen an den bot gesendet wird.4. You can also specify a completionBotId when calling teams.startTask() - in that case result is sent to the bot instead.
1. Rufen Sie die Microsoft Teams tasks.startTask() -Client-SDK-Funktion mit einem taskinfo- Objekt auf und TaskInfo.card enthält die JSON für die Adaptive Karte, die im Popup des Aufgabenmoduls angezeigt werden soll.1. Call the Teams client SDK function tasks.startTask() with a TaskInfo object and TaskInfo.card containing the JSON for the Adaptive card to show in the task module popup.

2. Wenn ein submitHandler Rückruf in angegeben wurde tasks.startTask() , wird er von Teams mit einer err Zeichenfolge aufgerufen, wenn beim Aufrufen ein Fehler aufgetreten ist tasks.startTask() oder wenn der Benutzer das Popup des Aufgabenmoduls mit dem X oben rechts schließt.2. If a submitHandler callback was specified in tasks.startTask(), Teams calls it with an err string if there was an error when invoking tasks.startTask() or if the user closes the task module popup using the X at the upper right.

3. wenn der Benutzer eine Aktion. Submit-Schaltfläche drückt, data wird sein Objekt als Wert von zurückgegeben result .3. If the user presses an Action.Submit button then its data object is returned as the value of result.
Schaltfläche "bot Card"Bot card button 1. bot-Kartenschaltflächen, je nach Art der Schaltfläche, können Aufgaben Module auf zwei Arten aufrufen: eine Deep Link-URL oder das Senden einer task/fetch Nachricht.1. Bot card buttons, depending on the type of button, can invoke task modules in two ways: a deep link URL or by sending a task/fetch message. Siehe unten für die Funktionsweise von Deep Link-URLs.See below for how deep link URLs work.

2. wenn die Aktion der Schalt type Fläche task/fetch ( Action.Submit Schaltflächentyp für Adaptive Karten) ist, task/fetch invoke wird ein Ereignis (ein HTTP-Beitrag unter dem Deckblatt) an den bot gesendet, und der bot antwortet auf den Beitrag mit HTTP 200 und dem Antworttext, der einen Wrapper um das taskinfo-Objektenthält.2. If the button's action type is task/fetch (Action.Submit button type for Adaptive cards), a task/fetch invoke event (an HTTP POST under the covers) is sent to the bot, and the bot responds to the POST with HTTP 200 and the response body containing a wrapper around the TaskInfo object. Dies wird ausführlich unter Aufrufen eines Aufgabenmoduls über Task/FETCHerläutert.This is explained in detail in invoking a task module via task/fetch.

3. Teams zeigt den Aufgabenmodul an; Wenn der Benutzer fertig ist, rufen Sie die Teams SDK-Funktion tasks.submitTask() mit einem result Objekt als Parameter auf.3. Teams displays the task module; when the user is finished, call the Teams SDK function tasks.submitTask() with a result object as a parameter.

4. der bot erhält eine task/submit invoke Nachricht, die das result Objekt enthält.4. The bot receives a task/submit invoke message that contains the result object. Sie haben drei verschiedene Möglichkeiten, auf die Nachricht zu Antworten task/submit : durch nichts tun (die Aufgabe wurde erfolgreich abgeschlossen), durch Anzeigen einer Nachricht an den Benutzer in einem Popupfenster oder durch Aufrufen eines anderen Vorgangs Modul Fensters (d. h. Erstellen einer Assistenten artigen Umgebung).You have three different ways to respond to the task/submit message: by doing nothing (the task completed successfully), by displaying a message to the user in a popup window, or by invoking another task module window (i.e. creating a wizard-like experience). Diese drei Optionen werden in der detaillierten Diskussion über Aufgabe/Submitnäher erläutert.These three options are discussed more in the detailed discussion on task/submit.
1. wie Schaltflächen auf bot-Framework-Karten unterstützen Schaltflächen auf adaptiven Karten zwei Möglichkeiten zum Aufrufen von Aufgaben Modulen: Deep Link-URLs mit Action.openUrl Schaltflächen und über die task/fetch Verwendung von Action.Submit Schaltflächen.1. Like buttons on Bot Framework cards, buttons on Adaptive cards support two ways of invoking task modules: deep link URLs with Action.openUrl buttons, and via task/fetch using Action.Submit buttons.

2. Aufgaben Module mit adaptiven Karten funktionieren ähnlich wie beim HTML/JavaScript-Fall (siehe Links).2. Task modules with Adaptive cards work very similarly to the HTML/JavaScript case (see left). Der Hauptunterschied besteht darin, dass es keine Möglichkeit gibt, sich anzumelden, da es kein JavaScript gibt, wenn Sie Adaptive Karten verwenden tasks.submitTask() .The major difference is that since there's no JavaScript when you're using Adaptive cards, there's no way to call tasks.submitTask(). Stattdessen übernimmt Teams das data Objekt aus Action.Submit und gibt es als Nutzlast von im task/submit Ereignis zurück, wie hierbeschrieben.Instead, Teams takes the data object from Action.Submit and returns it as the payload of in the task/submit event, as described here.
Deep Link-URLDeep link URL
URL-SyntaxURL syntax
1. Teams Ruft das Aufgabenmodul auf; die URL, die innerhalb des <iframe> im url -Parameter des Deep-Links angegebenen angezeigt wird.1. Teams invokes the task module; the URL that appears inside the <iframe> specified in the url parameter of the deep link. Es ist kein submitHandler Rückruf vorhanden.There is no submitHandler callback.

2. Rufen Sie im JavaScript der Seite im Aufgabenmodul tasks.submitTask() an, es mit einem result Objekt als Parameter zu schließen, genauso wie beim Aufrufen von einem Tab oder einer bot-kartenschaltfläche.2. Within the JavaScript of the page in the task module, call tasks.submitTask() to close it with a result object as a parameter, the same as when invoking it from a tab or a bot card button. Die Abschlusslogik unterscheidet sich jedoch geringfügig.Completion logic is slightly different, however. Wenn sich Ihre Abschlusslogik auf dem Client befindet (d. h., wenn kein bot vorhanden ist), gibt es keinen submitHandler Rückruf, daher muss sich eine Abschlusslogik im Code befinden, der dem Aufruf vorausgeht tasks.submitTask() .If your completion logic resides on the client (i.e. if there is no bot) there is no submitHandler callback, so any completion logic must be in the code preceding the call to tasks.submitTask(). Aufruffehler werden nur über die Konsole gemeldet.Invocation errors are only reported via the console. Wenn Sie einen bot haben, können Sie completionBotId im Deep-Link einen Parameter angeben, um das result Objekt über ein Ereignis zu senden task/submit .If you have a bot, then you can specify a completionBotId parameter in the deep link to send the result object via a task/submit event.
1. Teams Ruft das Aufgabenmodul auf; der JSON-Kartentext der adaptiven Karte wird als URL-codierter Wert des- card Parameters des Deep-Links angegeben.1. Teams invokes the task module; the JSON card body of the Adaptive card is specified as a URL-encoded value of the card parameter of the deep link.

2. der Benutzer schließt das Aufgabenmodul, indem er auf das X-Symbol oben rechts im Aufgabenmodul klickt oder eine Action.Submit Taste auf der Karte drückt.2. The user closes the task module by clicking on the X at the upper right of the task module or by pressing an Action.Submit button on the card. Da kein Aufruf vorhanden ist submitHandler , müssen Sie einen bot haben, um den Wert der Felder für Adaptive Karten an zu senden.Since there is no submitHandler to call, you must have a bot to send the value of the Adaptive card fields to. Verwenden Sie den completionBotId -Parameter im Deep-Link, um den bot anzugeben, an den die Daten über ein Ereignis gesendet werden sollen task/submit invoke .You use the completionBotId parameter in the deep link to specify the bot to send the data to via a task/submit invoke event.

Hinweis

Das Aufrufen eines Aufgabenmoduls aus JavaScript wird auf mobilen Geräten nicht unterstützt.Invoking a task module from JavaScript is not supported on mobile.

Das taskinfo-ObjektThe TaskInfo object

Das TaskInfo Objekt enthält die Metadaten für einen Aufgabenmodul.The TaskInfo object contains the metadata for a task module. Die Objektdefinition ist unten.The object definition is below. Sie müssen entweder url (für ein eingebettetes IFRAME) oder card (für eine Adaptive Karte) definieren.You must define either url (for an embedded iFrame) or card (for an Adaptive Card).

AttributAttribute TypType BeschreibungDescription
title stringstring Wird unterhalb des App-namens und rechts neben dem App-Symbol angezeigt.Appears below the app name and to the right of the app icon
height Zahl oder Zeichenfolgenumber or string Hierbei kann es sich um eine Zahl handeln, die die Höhe des Aufgabenmoduls in Pixeln darstellt, oder small , oder medium large .This can be a number representing the task module's height in pixels, or small, medium, or large. Unten sehen Sie, wie die Höhe und Breite gehandhabt werden.See below for how height and width are handled.
width Zahl oder Zeichenfolgenumber or string Hierbei kann es sich um eine Zahl handeln, die die Breite des Aufgabenmoduls in Pixeln darstellt, oder small , oder medium large .This can be a number representing the task module's width in pixels, or small, medium, or large. Unten sehen Sie, wie die Höhe und Breite gehandhabt werden.See below for how height and width are handled.
url stringstring Die URL der Seite, die als <iframe> innerhalb des Aufgabenmoduls geladen wurde.The URL of the page loaded as an <iframe> inside the task module. Die Domäne der URL muss sich im validDomains-Array der APP im App-Manifest befinden.The URL's domain must be in the app's validDomains array in your app's manifest.
card Adaptive Karte oder eine Adaptive Card-bot-Karten AnlageAdaptive card or an Adaptive card bot card attachment Die JSON für die Adaptive Karte, die im Aufgabenmodul angezeigt werden soll.The JSON for the Adaptive card to appear in the task module. Wenn Sie von einem bot aus aufrufen, müssen Sie die Adaptive Card JSON in einem bot-Framework- attachment Objekt verwenden.If you're invoking from a bot, you'll need to use the Adaptive card JSON in a Bot Framework attachment object. Auf einer Registerkarte verwenden Sie nur eine Adaptive Karte.From a tab you'll use just an Adaptive Card. Hier ist ein Beispiel.Here's an example.
fallbackUrl stringstring Wenn ein Client das Feature "Aufgabenmodul" nicht unterstützt, wird diese URL in einer Browserregister Karte geöffnet.If a client does not support the task module feature, this URL is opened in a browser tab.
completionBotId stringstring Gibt eine bot-APP-ID an, an die das Ergebnis der Interaktion des Benutzers mit dem Aufgabenmodul gesendet werden soll.Specifies a bot App ID to send the result of the user's interaction with the task module to. Wenn angegeben, erhält der bot ein task/submit invoke Ereignis mit einem JSON-Objekt in der Ereignisnutzlast.If specified, the bot will receive a task/submit invoke event with a JSON object in the event payload.

Hinweis

Das Feature "Aufgabenmodul" erfordert, dass die Domänen aller URLs, die Sie laden möchten, im Manifest der APP im Array enthalten sind validDomains .The task module feature requires that the domains of any URLs you want to load are included in the validDomains array in your app's manifest.

Größe des AufgabenmodulsTask module sizing

Mit ganzen Zahlen für TaskInfo.width und TaskInfo.height wird die Höhe und Breite in Pixeln festgelegt.Using integers for TaskInfo.width and TaskInfo.height will set the height and width in pixels. Je nach Größe des Team Fensters und Bildschirmauflösung werden diese jedoch proportional reduziert, wobei das Seitenverhältnis (Breite/Höhe) beibehalten wird.However, depending on the size of the Team's window and screen resolution they will be reduced proportionally while maintaining the aspect ratio (width/height).

If TaskInfo.width und TaskInfo.height are "small" , "medium" oder "large" die Größe des roten Rechtecks im obigen Bild ist ein Anteil des verfügbaren Speicherplatzes: 20%, 50%, 60% für width und 20%, 50%, 66% für height .If TaskInfo.width and TaskInfo.height are "small", "medium" or "large" the size of the red rectangle in the picture above is a proportion of the available space: 20%, 50%, 60% for width and 20%, 50%, 66% for height.

Aufgaben Module, die von einer Registerkarte aufgerufen werden, können dynamisch angepasst werden.Task modules invoked from a tab can be dynamically resized. Nach dem Aufruf tasks.startTask() können Sie aufrufen, tasks.updateTask(newSize) wo die Eigenschaften Height und Width für das taskinfo-Objekt der Spezifikation (ex) entsprechen.After calling tasks.startTask() you can call tasks.updateTask(newSize) where height and width properties on the newSize object conform to the TaskInfo spec (ex. { height: 'medium', width: 'medium' }).{ height: 'medium', width: 'medium' }).

Aufgabenmodul CSS für HTML/JavaScript-Aufgaben ModuleTask module CSS for HTML/JavaScript task modules

HTML/JavaScript-basierte Aufgaben Module haben Zugriff auf den gesamten Bereich des Aufgabenmoduls unterhalb der Kopfzeile.HTML/JavaScript-based task modules have access to the entire area of the task module below the header. Das bietet zwar viel Flexibilität, wenn Sie die Ränder an den Kopfzeilen Elementen ausrichten und unnötige Bildlaufleisten vermeiden möchten, müssen Sie das richtige CSS bereitstellen.While that offers a great deal of flexibility, if you want padding around the edges to align with the header elements and avoid unnecessary scrollbars you'll need to provide the right CSS. Hier sind einige Beispiele für einige Anwendungsfälle.Here are some examples for a few use cases.

Beispiel 1 – YouTube-VideoExample 1 - YouTube video

YouTube bietet die Möglichkeit zum Einbetten von Videos auf Webseiten.YouTube offers the ability to embed videos on web pages. Wenn Sie eine einfache Stub-Webseite verwenden, können Sie dies in einem Aufgabenmodul einfach anzeigen:Using a simple stub web page it's easy to show this in a task module:

YouTube-Video

Hier ist der HTML-Code für diese Seite ohne CSS:Here's the HTML for this page, without the CSS:

<!DOCTYPE html>
<html lang="en">
<head>
  ⋮
</head>
<body>
  <div id="embed-container">
    <iframe width="1000" height="700" src="https://www.youtube.com/embed/rd0Rd8w3FZ0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
  </div>
</body>
</html>

Die CSS sieht wie folgt aus:The CSS looks like this:

#embed-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 95%;
    height: 95%;
    padding-left: 20px;
    padding-right: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
    border-style: none;
}

Beispiel 2-PowerAppExample 2 - PowerApp

Sie können den gleichen Ansatz verwenden, um auch ein PowerApp einzubetten.You can use the same approach to embed a PowerApp as well. Da die Höhe/Breite jedes einzelnen PowerApp anpassbar ist, müssen Sie möglicherweise die Höhe und Breite anpassen, um die gewünschte Präsentation zu erzielen.As the height/width of any individual PowerApp is customizable, you may need to adjust the height and width to achieve your desired presentation.

Asset Management PowerApp

<iframe width="720" height="520" src="https://web.powerapps.com/webplayer/iframeapp?source=iframe&screenColor=rgba(104,101,171,1)&appId=/providers/Microsoft.PowerApps/apps/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"></iframe>

Und die CSS lautet wie folgt:And the CSS is:

#embed-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 94%;
    height: 95%;
    padding-left: 20px;
    padding-right: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
    border-style: none;
}

Adaptive Card oder Adaptive Card bot Card-AnlageAdaptive card or Adaptive card bot card attachment

Wie bereits erwähnt, müssen Sie, je nachdem, wie Sie Ihren Anruf durch card führen, entweder eine Adaptive Karte oder einen Adaptive Card-bot-Karten Anhang verwenden (Dies ist nur eine Adaptive Karte, die in ein Attachment-Objekt eingeschlossen ist).As we noted above, depending on how you're invoking your card you'll need to use either an Adaptive card, or an Adaptive card bot card attachment (which is just an Adaptive card wrapped in an attachment object).

Wenn Sie auf einer Registerkarte aufrufen, müssen Sie eine Adaptive Karte verwenden.When you're invoking from a tab, you'll need to use an adaptive card. Hier ist ein sehr einfaches Beispiel:Here's a very simple example:

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "Here is a ninja cat:"
        },
        {
            "type": "Image",
            "url": "http://adaptivecards.io/content/cats/1.png",
            "size": "Medium"
        }
    ],
    "version": "1.0"
}

Wenn Sie von einem bot aus aufrufen, müssen Sie eine Adaptive Card-bot-Karten Anlage wie im folgenden Beispiel verwenden:When you're invoking from a bot you'll need to use an Adaptive card bot card attachment as in the example below:

{
    "contentType": "application/vnd.microsoft.card.adaptive",
    "content": {
        "type": "AdaptiveCard",
        "body": [
            {
                "type": "TextBlock",
                "text": "Here is a ninja cat:"
            },
            {
                "type": "Image",
                "url": "http://adaptivecards.io/content/cats/1.png",
                "size": "Medium"
            }
        ],
        "version": "1.0"
    }
}

Sie müssen sich daran erinnern, ob Sie ein Aufgabenmodul aufrufen, das eine Adaptive Karte von einem bot oder einer Registerkarte enthält.You'll need to remember whether you are invoking a task module containing an Adaptive card from a bot or a tab.

Ein Aufgabenmodul-Deep Link ist nur eine Serialisierung des taskinfo-Objekts mit zwei weiteren Informationen APP_ID und optional BOT_APP_ID Folgendes:A task module deep link is just a serialization of the TaskInfo object with two other pieces of information, APP_ID and optionally the BOT_APP_ID:

https://teams.microsoft.com/l/task/APP_ID?url=<TaskInfo.url>&height=<TaskInfo.height>&width=<TaskInfo.width>&title=<TaskInfo.title>&completionBotId=BOT_APP_ID

https://teams.microsoft.com/l/task/APP_ID?card=<TaskInfo.card>&height=<TaskInfo.height>&width=<TaskInfo.width>&title=<TaskInfo.title>&completionBotId=BOT_APP_ID

Weitere Informationen finden Sie unter taskinfo-Objekt für die Datentypen und zulässigen Werte für,,,, <TaskInfo.url> <TaskInfo.card> <TaskInfo.height> <TaskInfo.width> und <TaskInfo.title> .See TaskInfo object for the data types and allowable values for <TaskInfo.url>, <TaskInfo.card>, <TaskInfo.height>, <TaskInfo.width>, and <TaskInfo.title>.

Tipp

Achten Sie darauf, die Deep Link-URL zu codieren, insbesondere bei Verwendung des card Parameters (beispielsweise JavaScript- encodeURI() Funktion).Be sure to URL encode the deep link, especially when using the card parameter (for example, JavaScript's encodeURI() function).

Hier finden Sie die folgenden APP_ID Informationen BOT_APP_ID :Here's the information on APP_ID and BOT_APP_ID:

WertValue TypType Pflichtfeld?Required? BeschreibungDescription
APP_ID stringstring JaYes Die ID der APP, die den Aufgabenmodul aufruft.The id of the app invoking the task module. Das validDomains-Array im Manifest für APP_ID muss die Domäne für url if url in der URL enthalten.The validDomains array in the manifest for APP_ID must contain the domain for url if url is in the URL. (Die APP-ID ist bereits bekannt, wenn ein Aufgabenmodul von einer Registerkarte oder einem bot aufgerufen wird, weshalb Sie nicht in enthalten ist TaskInfo .)(The app ID is already known when a task module is invoked from a tab or a bot, which is why it's not included in TaskInfo.)
BOT_APP_ID stringstring NeinNo Wenn ein Wert für completionBotId angegeben ist, result wird das Objekt über eine a- task/submit invoke Nachricht an den angegebenen bot gesendet.If a value for completionBotId is specified, the result object is sent via a a task/submit invoke message to the specified bot. BOT_APP_IDmuss im Manifest der App als bot angegeben werden, d. h., Sie können Sie nicht einfach an einen bot senden.BOT_APP_ID must be specified as a bot in the app's manifest, i.e. you can't just send it to any bot.

Beachten Sie, dass es gültig für APP_ID und BOT_APP_ID identisch ist und in vielen Fällen sein wird, wenn eine APP einen Bot hat, da es empfehlenswert ist, dies als APP-ID zu verwenden, wenn eine vorhanden ist.Note that it's valid for APP_ID and BOT_APP_ID to be the same, and in many cases will be if an app has a bot since it's recommended to use that as an app's ID if there is one.

Richtlinien für Tastatur und BarrierefreiheitKeyboard and accessibility guidelines

Mit HTML/JavaScript-basierten Aufgaben Modulen ist es Ihre Aufgabe, sicherzustellen, dass das Aufgabenmodul Ihrer APP mit einer Tastatur verwendet werden kann.With HTML/JavaScript-based task modules it is your responsibility to ensure your app's task module can be used with a keyboard. Bildschirmsprachausgabe Programme hängen auch von der Fähigkeit ab, mit der Tastatur zu navigieren.Screen reader programs also depend on the ability to navigate using the keyboard. Als praktische Angelegenheit bedeutet dies zwei Dinge:As a practical matter this means two things:

  1. Verwenden des TabIndex-Attributs in Ihren HTML-Tags, um zu steuern, welche Elemente fokussiert werden können und ob/wo Sie an der sequenziellen Tastaturnavigation teilnimmt (in der Regel mit den Tab -und UMSCHALT Tastern).Using the tabindex attribute in your HTML tags to control which elements can be focused and if/where it participates in sequential keyboard navigation (usually with the Tab and Shift-Tab keys).
  2. Behandeln der ESC -Taste im JavaScript für Ihr Aufgabenmodul.Handling the Esc key in the JavaScript for your task module. Im folgenden finden Sie ein Codebeispiel, in dem gezeigt wird, wie Sie vorgehen:Here's a code sample showing how to do this:
// Handle the Esc key
document.onkeyup = function(event) {
if ((event.key === 27) || (event.key === "Escape")) {
  microsoftTeams.submitTask(null); // this will return an err object to the completionHandler()
  }
}

Microsoft Teams stellt sicher, dass die Tastaturnavigation ordnungsgemäß in der Kopfzeile des Aufgabenmoduls in Ihrem HTML-Code und umgekehrt funktioniert.Microsoft Teams will ensure that keyboard navigation works properly from the task module header into your HTML and vice-versa.

Aufgabenmodul BeispieleTask module samples