Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Agents bieten eine flexiblere, intelligentere und zukunftsfähigere Erfahrung, die umfangreichere Denkprozesse, eine einfachere Entwicklung und eine bessere Abstimmung mit den sich entwickelnden Teams und der Microsoft 365-Plattform ermöglicht. Es wird empfohlen, Agents zu untersuchen und zu erstellen.
Weitere Informationen finden Sie unter Erstellen deklarativer Agents und Build-Agents in Teams.
Wenn Sie über eine Bot-basierte Nachrichtenerweiterung verfügen, können Sie diese auch als Agent erweitern .
Nachdem der Benutzer den Suchbefehl übermittelt hat, erhält der Webdienst eine composeExtension/query Aufrufnachricht, die ein value Objekt mit den Suchparametern enthält. Der Aufruf wird durch die folgenden Bedingungen ausgelöst:
- Da werden Zeichen in das Suchfeld eingegeben.
-
initialRunin Ihrem App-Manifest auf "true" festgelegt ist. Weitere Informationen finden Sie unter Standardabfrage.
In diesem Dokument erfahren Sie, wie Sie auf Benutzeranforderungen in Form von Karten und Vorschauen reagieren und unter welchen Bedingungen Microsoft Teams eine Standardabfrage ausgibt.
Die Anforderungsparameter befinden sich im value Objekt in der Anforderung und umfassen die folgenden Eigenschaften:
| Eigenschaftenname | Zweck |
|---|---|
commandId |
Der Name des vom Benutzer aufgerufenen Befehls, der einem der im App-Manifest deklarierten Befehle entspricht. |
parameters |
Array von Parametern. Jedes Parameterobjekt enthält den Parameternamen zusammen mit dem vom Benutzer bereitgestellten Parameterwert. |
queryOptions |
Paginierungsparameter: skip: Anzahl der Sprünge für diese Abfrage count: Anzahl der zurückzugebenden Elemente. |
teams.OnQuery(async (context, cancellationToken) =>
{
MessageExtensionQuery? value = context.Activity.Value;
var commandId = value?.CommandId;
var parameters = value?.Parameters;
var query = parameters?.FirstOrDefault()?.Value?.ToString() ?? "";
// Code to handle the query.
});
Reagieren auf Benutzeranforderungen
Wenn der Benutzer eine Abfrage durchführt, sendet Microsoft Teams eine synchrone HTTP-Anforderung an Ihren Dienst. An diesem Punkt hat Ihr Code fünf Sekunden Zeit, um eine HTTP-Antwort auf die Anforderung bereitzustellen. Während dieser Zeit kann Ihr Dienst weitere Suchvorgänge oder jede andere Geschäftslogik durchführen, die für die Verarbeitung der Anforderung erforderlich ist.
Ihr Dienst muss mit den Ergebnissen antworten, die mit der Benutzerabfrage übereinstimmen. Die Antwort muss einen HTTP-Statuscode 200 OK und eine gültige Anwendung oder ein gültiges JSON-Objekt mit den folgenden Eigenschaften angeben:
| Eigenschaftenname | Zweck |
|---|---|
composeExtension |
Antworthüllkurve der obersten Ebene. |
composeExtension.type |
Art der Antwort. Die folgenden Typen werden unterstützt: result: Zeigt eine Liste der Suchergebnisse an auth: Prompts den Benutzer zur Authentifizierung config: Prompts den Benutzer, die Nachrichtenerweiterung einzurichten message: Zeigt eine Nur-Text-Nachricht an |
composeExtension.attachmentLayout |
Gibt das Layout der Anlagen an. Wird für Antworten des Typs result. Die folgenden Typen werden unterstützt: list: Eine Liste von Karten-Objekten, die Miniaturansichts-, Titel- und Textfelder enthalten grid: Ein Raster mit Miniaturansichten |
composeExtension.attachments |
Array gültiger Anlagenobjekte. Wird für Antworten des Typs result. Die folgenden Typen werden unterstützt: application/vnd.microsoft.card.thumbnail application/vnd.microsoft.card.hero application/vnd.microsoft.teams.card.o365connector application/vnd.microsoft.card.adaptive |
composeExtension.suggestedActions |
Vorgeschlagene Aktionen. Wird für Antworten des Typs auth oder configverwendet. |
composeExtension.text |
Anzuzeigende Meldung. Wird für Antworten des Typs message. |
config response
Die config Antwort sind die Daten, die vom Server oder der App zurückgegeben werden, um die Nachrichtenerweiterung innerhalb der Messagingplattform zu konfigurieren und zu aktivieren. Wenn ein Benutzer die Nachrichtenerweiterung zum ersten Mal konfiguriert, wird eine config Antwort verwendet, um den Benutzer aufzufordern, die Nachrichtenerweiterung einzurichten und alle erforderlichen Konfigurationen vorzunehmen.
Der folgende Codeausschnitt zeigt die Antwort, die config angezeigt wird, wenn der Benutzer mit der Nachrichtenerweiterung interagiert:
{
"composeExtension": {
"suggestedActions": {
"actions": [
{
"type": "openUrl",
"title": "Open url",
"value": "https://<your-tunnel-url>/searchSettings.html?settings="
}
]
},
"type": "config"
},
"responseType": "composeExtension"
}
Die config Antwort umfasst:
- Die
valueEigenschaft, die eine URL zum Öffnen einer Konfigurationsseite in einem Teams-Dialogfeld enthält, in dem Benutzer die erforderlichen Details eingeben und die Konfiguration übermitteln können. Einige Beispiele für diesevalueEigenschaft sind:https://<your-subdomain>.ngrok-free.app/searchSettings.html-
https://<your-subdomain>.devtunnels.ms/searchSettings.html.
- Das
typeFeld innerhalbcomposeExtensionvon ist festgelegt aufconfig, was die Art dieser Antwort als Konfiguration angibt. - Derjenige
responseType, der diese Antwort identifiziert, ist für diecomposeExtensionder App.
Initialisieren Sie das Teams-SDK auf der Konfigurationsseite, und verwenden Sie authentication.notifySuccess() es, um die gesammelten Konfigurationsdaten zurück an Teams zu senden.
submitConfig() die Funktion veranschaulicht, wie Konfigurationswerte strukturiert und zurückgegeben werden, nachdem der Benutzer den Setupvorgang abgeschlossen hat.
So schließen Sie den Konfigurationsfluss für die Nachrichtenerweiterung ab:
Die in der
valueEigenschaft angegebene URL muss eine Webseite hosten, die die URL als Teams-Dialogfeld öffnet, wenn die Konfiguration der Nachrichtenerweiterung ausgelöst wird.Wenn eine Authentifizierung erforderlich ist, muss die Seite die Teams-Authentifizierung verwenden und nach erfolgreicher Anmeldung aufrufen
authentication.notifySuccess().Nach dem Sammeln von Benutzereingaben muss die Seite Teams über die erfolgreiche Einrichtung durch einen Aufruf
notifySuccess(configData)benachrichtigen, der die Konfigurationswerte zurück an Teams sendet:microsoftTeams.app.initialize(); function submitConfig() { const configData = { setting1: "User-selected value", setting2: "Another value" }; microsoftTeams.authentication.notifySuccess(configData); }Nach
notifySuccess()der Ausführung schließt sich das Konfigurationsfenster automatisch, und die Nachrichtenerweiterung wird erfolgreich eingerichtet.
auth Antworttyp
Wenn Ihr Dienst eine Benutzerauthentifizierung erfordert, müssen sich die Benutzer anmelden, bevor sie die Nachrichtenerweiterung verwenden. Weitere Informationen finden Sie unter Authentifizierung.
message Antworttyp
Eine message Antwort wird verwendet, wenn Ihre Erweiterung eine Nur-Text-Nachricht anzeigen muss. Der message Antworttyp unterstützt keine Formatierung.
Der folgende Codeausschnitt ist ein Beispiel für eine message Antwort, die von der App zurückgegeben wird:
return new MsgExt.Response
{
ComposeExtension = new MsgExt.Result
{
Type = MsgExt.ResultType.Message,
Text = "Here is the message you want to show!"
}
};
result Antworttyp
Die Ergebnisliste wird in der Microsoft Teams-Benutzeroberfläche mit einer Vorschau jedes Elements angezeigt. Die Vorschau wird auf eine der beiden folgenden Arten generiert:
- Verwenden der
previewEigenschaft innerhalb desattachmentObjekts. Bei derpreviewAnlage kann es sich nur um eine Hero- oder eine Miniaturansichten-Karte handeln. - Extrahieren aus den grundlegenden
title,textundimageEigenschaften desattachmentObjekts. Die grundlegenden Eigenschaften werden nur verwendet, wenn diepreviewEigenschaft nicht angegeben ist.
Hinweis
Suchergebnisse in Nachrichtenerweiterungen unterstützen keine Auffüllung.
Teams unterstützt die folgenden Kartentypen:
Für die Hero- oder Miniaturansichten-Karte werden mit Ausnahme der Aufrufaktion andere Aktionen wie Schaltfläche und Tippen in der Vorschau-Karte nicht unterstützt. Für Hero- und Miniaturansichtskarten müssen Sie keine Vorschaueigenschaft angeben, eine Vorschau wird standardmäßig generiert. Wenn Sie mehr über Karten erfahren und lernen möchten, wie Sie die Miniaturansichts- und Hero-Karten-Typen verwenden, siehe Was sind Karten und fügen Sie Karten und Kartenaktionen hinzu.
Um eine adaptive Karte oder Connector-Karte für Microsoft 365-Gruppen zu senden, müssen Sie eine Vorschau einschließen. Die preview Eigenschaft muss eine Hero- oder Miniaturansichts-Karte sein, und die entsprechende Karte wird als Vorschau generiert. Wenn im attachment Objekt keine preview Eigenschaft angegeben ist, wird keine Vorschau generiert. Weitere Informationen finden Sie unter Verwenden von Connectorkarten für Microsoft 365-Gruppen.
Anforderungsbeispiel
teams.OnQuery(async (context, cancellationToken) =>
{
MessageExtensionQuery? value = context.Activity.Value;
var commandId = value?.CommandId;
var parameters = value?.Parameters;
var query = parameters?.FirstOrDefault()?.Value?.ToString() ?? "";
var attachments = new List<TeamsAttachment>();
// Route to appropriate search
if (commandId == "wikipediaSearch")
{
var results = await SearchWikipedia(query);
attachments = results.Select(r =>
{
var title = r["title"]?.ToString() ?? "No Title";
var snippet = Regex.Replace(r["snippet"]?.ToString() ?? "", "<[^>]+>", "");
return CreateAttachment(CreateWikipediaCard(r), title, snippet);
}).ToList();
}
if (attachments.Count == 0)
{
return new MsgExt.Response
{
ComposeExtension = new MsgExt.Result
{
Type = MsgExt.ResultType.Message,
Text = $"No results found for '{query}'"
}
};
}
return new MsgExt.Response
{
ComposeExtension = new MsgExt.Result
{
Type = MsgExt.ResultType.Result,
AttachmentLayout = Attachment.Layout.List,
Attachments = attachments
}
};
});
Aktivieren und Behandeln von Tippaktionen
Wenn ein Benutzer ein Ergebnis aus der Suchabfrage für die Nachrichtenerweiterung auswählt, zeigt die Vorschau-Karte die Beschreibung und die definierten Tippaktionen an. Der Tippaktion muss die Eigenschaft "erforderlicher Wert" zugewiesen sein, die auf der gesendeten Karte als Schaltfläche Tippen angezeigt wird.
protected override Task<MessagingExtensionResponse> OnTeamsMessagingExtensionSelectItemAsync(ITurnContext<IInvokeActivity> turnContext, JObject query, CancellationToken cancellationToken)
{
// The Preview card's Tap should have a Value property assigned, this will be returned to the bot in this event.
var (packageId, version, description, projectUrl, iconUrl) = query.ToObject<(string, string, string, string, string)>();
var card = new ThumbnailCard
{
Title = "Card Select Item",
Subtitle = description
};
var attachment = new MessagingExtensionAttachment
{
ContentType = ThumbnailCard.ContentType,
Content = card,
};
return Task.FromResult(new MessagingExtensionResponse
{
ComposeExtension = new MessagingExtensionResult
{
Type = "result",
AttachmentLayout = "list",
Attachments = new List<MessagingExtensionAttachment> { attachment }
}
});
}
Standardabfrage
Wenn Sie dies im Manifest festlegen initialRuntrue , gibt Microsoft Teams eine Standardabfrage aus, wenn der Benutzer die Nachrichtenerweiterung zum ersten Mal öffnet. Ihr Dienst kann auf diese Abfrage mit einer Reihe vorab ausgefüllter Ergebnisse antworten. Dies ist nützlich, wenn Ihr Suchbefehl eine Authentifizierung oder Konfiguration erfordert, sodass zuletzt angezeigte Elemente, Favoriten oder andere Informationen angezeigt werden, die nicht von Benutzereingaben abhängig sind.
Die Standardabfrage hat die gleiche Struktur wie jede normale Benutzerabfrage, außer dass sie einen Parameter namens initialRun hat, der auf den Zeichenfolgenwert festgelegt trueist, wie im folgenden Objekt gezeigt:
{
"type": "invoke",
"name": "composeExtension/query",
"value": {
"commandId": "searchCmd",
"parameters": [
{
"name": "initialRun",
"value": "true"
}
],
"queryOptions": {
"skip": 0,
"count": 25
}
},
⋮
}
Codebeispiel
| Beispielname | Beschreibung | .NET | Node.js | Python | Manifest |
|---|---|---|---|---|---|
| Bot-Nachrichtenerweiterungen | Dieses Beispiel zeigt eine suchbasierte Messaging-Erweiterung in Microsoft Teams, mit der Benutzer nach Wikipedia-Artikeln suchen können. Die Erweiterung unterstützt Suchbefehle, Elementauswahl und Linkentfaltung. | View | View | View | – |
| Auth und Konfiguration der Teams-Nachrichtenerweiterung | Dieses Beispiel zeigt, wie die Authentifizierung in einer Nachrichtenerweiterung für Teams implementiert wird, um sicheren Zugriff und benutzerspezifische Interaktionen zu ermöglichen. | View | View | View | View |