Verwenden von Aufgabenmodulen in Registerkarten
Fügen Sie Ihrer Registerkarte ein Aufgabenmodul hinzu, um die Erfahrung Ihrer Benutzer mit Workflows zu vereinfachen, die Dateneingaben erfordern. Mit Aufgabenmodulen können Sie ihre Eingaben in einem Microsoft Teams-fähigen Popup erfassen. Ein gutes Beispiel hierfür ist das Bearbeiten von Planner-Karten. Sie können Aufgabenmodule verwenden, um eine ähnliche Erfahrung zu erstellen.
Zur Unterstützung des Aufgabenmodulfeatures werden der Teams JavaScript-Clientbibliothek zwei neue Funktionen hinzugefügt. Der folgende Code zeigt ein Beispiel für diese beiden Funktionen:
microsoftTeams.tasks.startTask(
taskInfo: TaskInfo,
submitHandler?: (err: string, result: string | any) => void
): void;
microsoftTeams.tasks.submitTask(
result?: string | any,
appIds?: string | string[]
): void;
Sie können sehen, wie das Aufrufen eines Aufgabenmoduls über eine Registerkarte und das Übermitteln des Ergebnisses eines Aufgabenmoduls funktioniert.
Aufrufen eines Aufgabenmoduls über eine Registerkarte
Verwenden Sie zum Aufrufen eines Aufgabenmoduls über eine Registerkarte microsoftTeams.tasks.startTask()
, und übergeben Sie ein TaskInfo-Objekt und eine optionale submitHandler
-Rückruffunktion. Es müssen zwei Fälle berücksichtigt werden:
- Der Wert von
TaskInfo.url
ist auf eine URL festgelegt. Das Aufgabenmodulfenster wird angezeigt, undTaskModule.url
wird als ein<iframe>
darin geladen. JavaScript auf dieser Seite ruftmicrosoftTeams.initialize()
auf. Wenn auf der Seite einesubmitHandler
Funktion vorhanden ist und beim AufrufenmicrosoftTeams.tasks.startTask()
von ein Fehler auftritt,submitHandler
wird aufgerufen, wobeierr
auf die Fehlerzeichenfolge festgelegt ist, die dasselbe angibt. Weitere Informationen finden Sie unter Aufgabenmodul-Aufruffehler. - Der Wert von
taskInfo.card
ist der JSON für eine adaptive Karte. Es gibt keine JavaScript-FunktionsubmitHandler
, die aufgerufen werden kann, wenn der Benutzer eine Schaltfläche auf der adaptiven Karte schließt oder drückt. Die einzige Möglichkeit, den vom Benutzer eingegebenen Inhalt zu erhalten, besteht darin, das Ergebnis an einen Bot zu übergeben. Um ein Aufgabenmodul für eine adaptive Karte über eine Registerkarte zu verwenden, muss Ihre App einen Bot enthalten, um eine Antwort vom Benutzer zu erhalten.
Der nächste Abschnitt enthält ein Beispiel für das Aufrufen eines Aufgabenmoduls.
Beispiel für das Aufrufen eines Aufgabenmoduls
In der folgenden Abbildung wird das Aufgabenmodul angezeigt:
Der folgende Code ist dem Beispiel des Aufgabenmoduls entnommen:
let taskInfo = {
title: null,
height: null,
width: null,
url: null,
card: null,
fallbackUrl: null,
completionBotId: null,
};
taskInfo.url = "https://contoso.com/teamsapp/customform";
taskInfo.title = "Custom Form";
taskInfo.height = 510;
taskInfo.width = 430;
submitHandler = (err, result) => {
console.log(`Submit handler - err: ${err}`);
console.log(`Submit handler - result\rName: ${result.name}\rEmail: ${result.email}\rFavorite book: ${result.favoriteBook}`);
};
microsoftTeams.tasks.startTask(taskInfo, submitHandler);
ist submitHandler
einfach und gibt den Wert von err
oder result
an die Konsole zurück.
Übermitteln des Ergebnisses eines Aufgabenmoduls
Die submitHandler
-Funktion befindet sich auf der TaskInfo.url
-Webseite und wird mit TaskInfo.url
verwendet. Wenn beim Aufrufen des Aufgabenmoduls ein Fehler auftritt, wird Ihre submitHandler
Funktion sofort mit einer err
Zeichenfolge aufgerufen, die angibt, welcher Fehler aufgetreten ist. Die submitHandler
-Funktion wird auch mit einer err
-Zeichenfolge aufgerufen, wenn der Benutzer oben rechts im Aufgabenmodul „X“ auswählt, um es zu schließen.
Wenn kein Aufruffehler auftritt und der Benutzer X nicht auswählt, um es zu schließen, wählt der Benutzer eine Schaltfläche aus, wenn er fertig ist. Je nachdem, ob es sich um eine URL oder eine adaptive Karte im Aufgabenmodul handelt, finden Sie in den nächsten Abschnitten Details dazu, was passiert.
HTML- oder JavaScript-TaskInfo.url
Rufen Sie nach dem Überprüfen der Benutzereingaben die Funktion auf, die microsoftTeams.tasks.submitTask()
als bezeichnet wird submitTask()
. Rufen Sie submitTask()
ohne Parameter auf, wenn Teams nur das Aufgabenmodul schließen soll. Sie können ein Objekt oder eine Zeichenfolge an Ihren submitHandler
übergeben.
Übergeben Sie Ihr Ergebnis als ersten Parameter. Teams ruft submitHandler
auf, wobei err
gleich null
ist und result
das Objekt oder die Zeichenfolge, das/die Sie an submitTask()
übergeben haben. Wenn Sie submitTask()
mit einem result
-Parameter aufrufen, müssen Sie ein appId
oder ein Array von appId
-Zeichenfolgen übergeben. Dies erlaubt Teams zu validieren, ob die App, die das Ergebnis sendet, mit dem aufgerufenen Aufgabenmodul übereinstimmt.
Adaptive Karte TaskInfo.card
Wenn Sie das Aufgabenmodul mit einer submitHandler
aufrufen und der Benutzer eine Action.Submit
-Schaltfläche auswählt, werden die Werte auf der Karte als Wert von result
zurückgegeben. Wenn der Benutzer oben rechts die ESC-Taste oder „X“ auswählt, wird stattdessen err
zurückgegeben. Wenn Ihre App zusätzlich zu einer Registerkarte einen Bot enthält, können Sie den appId
des Bots als Wert von completionBotId
in das TaskInfo
-Objekt einschließen. Der vom Benutzer ausgefüllte Text der adaptiven Karte wird mithilfe einer task/submit invoke
-Nachricht an den Bot gesendet, wenn der Benutzer eine Action.Submit
-Schaltfläche auswählt. Das Schema für das Objekt, das Sie erhalten, ähnelt dem Schema, das Sie für Aufgaben-/Abruf- und Task-/Sendenachrichten erhalten. Der einzige Unterschied besteht darin, dass das Schema des JSON-Objekts ein adaptives Kartenobjekt ist, im Gegensatz zu einem Objekt, das ein adaptives Kartenobjekt enthält wie bei der Verwendung von adaptiven Karten mit Bots.
Im Folgenden ist das Beispiel für Nutzlast dargestellt:
{
"task": {
"type": "continue",
"value": {
"title": "Title",
"height": "height",
"width": "width",
"url": null,
"card": "Adaptive Card or Adaptive Card bot card attachment",
"fallbackUrl": null,
"completionBotID": "bot App ID"
}
}
}
Im Folgenden ist das Beispiel für eine Aufrufanforderung dargestellt:
let taskInfo = {
title: "Task Module Demo",
height: "medium",
width: "medium",
card: null,
fallbackUrl: null,
completionBotId: null,
};
taskInfo.card = {
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "This is sample adaptive card.",
"wrap": true
}
]
}
submitHandler = (err, result) => {
console.log(`Submit handler - err: ${err}`);
alert(
"Result = " + JSON.stringify(result) + "\nError = " + JSON.stringify(err)
);
};
microsoftTeams.tasks.startTask(taskInfo, submitHandler);
Der nächste Abschnitt enthält ein Beispiel für die Übermittlung des Ergebnisses eines Aufgabenmoduls.
Beispiel für die Übermittlung des Ergebnisses eines Aufgabenmoduls
Weitere Informationen finden Sie im HTML-Formular im Aufgabenmodul. Der folgende Code enthält ein Beispiel dafür, wo das Formular definiert ist:
<form method="POST" id="customerForm" action="/register" onSubmit="return validateForm()">
Dieses Formular enthält fünf Felder, aber für dieses Beispiel sind nur drei Werte erforderlich: name
, email
und favoriteBook
.
Der folgende Code enthält ein Beispiel für die validateForm()
-Funktion, die submitTask()
aufruft:
function validateForm() {
var customerInfo = {
name: document.forms["customerForm"]["name"].value,
email: document.forms["customerForm"]["email"].value,
favoriteBook: document.forms["customerForm"]["favoriteBook"].value
}
microsoftTeams.tasks.submitTask(customerInfo, "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
return true;
}
Der nächste Abschnitt enthält Aufrufprobleme des Aufgabenmoduls und deren Fehlermeldungen.
Fehler beim Aufrufen des Aufgabenmoduls
Die folgende Tabelle enthält die möglichen Werte von err
, die von Ihrem submitHandler
empfangen werden können:
Problem | Fehlermeldung mit dem Wert err |
---|---|
Es wurden Werte für TaskInfo.url und TaskInfo.card angegeben. |
Werte für die Karte und die URL wurden angegeben. Die eine oder die andere, aber nicht beide, sind zulässig. |
Weder TaskInfo.url noch TaskInfo.card wurden angegeben. |
Sie müssen einen Wert entweder für die Karte oder die URL angeben. |
Ungültige appId . |
Ungültige App-ID. |
Der Benutzer hat die Schaltfläche „X“ ausgewählt und es geschlossen. | Der Benutzer hat das Aufgabenmodul abgebrochen oder geschlossen. |
Codebeispiel
Beispielname | Beschreibung | .NET | Node.js | Manifest |
---|---|---|---|---|
Aufgabenmodul-Beispiel-Bots-V4 | In diesem Beispiel wird gezeigt, wie Aufgabenmodule mithilfe von Bot Framework v4 und Teams-Registerkarten erstellt werden. | View | View | Anzeigen |