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.
Wichtig
Dieser Artikel basiert auf dem v3 Bot Framework SDK. Wenn Sie nach einer aktuellen Dokumentationsversion 4.6 oder höher des SDK suchen, lesen Sie den Abschnitt Konversations-Bots .
Ihr Bot kann auf zusätzlichen Kontext zum Team oder Chat zugreifen, z. B. auf das Benutzerprofil. Diese Informationen können verwendet werden, um die Funktionalität Ihres Bots zu erweitern und ein personalisierteres Erlebnis zu bieten.
Hinweis
- Auf Microsoft Teams-spezifische Bot-APIs kann am besten über unsere Erweiterungen für das Bot Builder SDK zugegriffen werden.
- Laden Sie für C# oder .NET das NuGet-Paket Microsoft.Bot.Connector.Teams herunter.
- Für Node.js Entwicklung ist die Funktionalität von Bot Builder für Teams in das Bot Framework SDK v4.6 integriert.
Abrufen der Teamliste
Ihr Bot kann die Liste der Teammitglieder und ihre grundlegenden Profile abfragen. Die Basisprofile enthalten Teams-Benutzer-IDs und Microsoft Entra-Informationen wie Name und Objekt-ID. Sie können diese Informationen verwenden, um Benutzeridentitäten zu korrelieren. Überprüfen Sie beispielsweise, ob ein Benutzer, der mit Microsoft Enttra-Anmeldeinformationen bei einer Registerkarte angemeldet ist, ein Teammitglied ist.
REST-API-Beispiel
Geben Sie direkt eine GET-Anforderung auf /conversations/{teamId}/members/aus, wobei der serviceUrl Wert als Endpunkt verwendet wird.
Sie finden sie teamId im channeldata Objekt der Aktivitätsnutzlast, die Ihr Bot in den folgenden Szenarien empfängt:
- Wenn ein Benutzer Ihrem Bot in einem Teamkontext schreibt oder mit ihm interagiert. Weitere Informationen finden Sie unter Empfangen von Nachrichten.
- Wenn ein neuer Benutzer oder Bot zu einem Team hinzugefügt wird. Weitere Informationen finden Sie unter Bot oder Benutzer zu einem Team hinzugefügt.
Hinweis
- Verwenden Sie beim Aufrufen der API immer die Team-ID.
- Der
serviceUrlWert ist in der Regel stabil, kann sich jedoch ändern. Wenn eine neue Nachricht eintrifft, muss der Bot den gespeichertenserviceUrlWert überprüfen.
GET /v3/conversations/19:ja0cu120i1jod12j@skype.net/members
Response body
[{
"id": "29:1GcS4EyB_oSI8A88XmWBN7NJFyMqe3QGnJdgLfFGkJnVelzRGos0bPbpsfJjcbAD22bmKc4GMbrY2g4JDrrA8vM06X1-cHHle4zOE6U4ttcc",
"objectId": "9d3e08f9-a7ae-43aa-a4d3-de3f319a8a9c",
"givenName": "Larry",
"surname": "Brown",
"email": "Larry.Brown@fabrikam.com",
"userPrincipalName": "labrown@fabrikam.com"
}, {
"id": "29:1bSnHZ7Js2STWrgk6ScEErLk1Lp2zQuD5H2qQ960rtvstKp8tKLl-3r8b6DoW0QxZimuTxk_kupZ1DBMpvIQQUAZL-PNj0EORDvRZXy8kvWk",
"objectId": "76b0b09f-d410-48fd-993e-84da521a597b",
"givenName": "John",
"surname": "Patterson",
"email": "johnp@fabrikam.com",
"userPrincipalName": "johnp@fabrikam.com"
}, {
"id": "29:1URzNQM1x1PNMr1D7L5_lFe6qF6gEfAbkdG8_BUxOW2mTKryQqEZtBTqDt10-MghkzjYDuUj4KG6nvg5lFAyjOLiGJ4jzhb99WrnI7XKriCs",
"objectId": "6b7b3b2a-2c4b-4175-8582-41c9e685c1b5",
"givenName": "Rick",
"surname": "Stevens",
"email": "Rick.Stevens@fabrikam.com",
"userPrincipalName": "rstevens@fabrikam.com"
}]
.NET-Beispiel
Aufruf GetConversationMembersAsync mit Team.Id , um eine Liste von Benutzer-IDs zurückzugeben.
Aufruf GetConversationMembersAsync zum Abrufen userRole der Eigenschaft, die den Wert als Benutzer zurückgibt.
// Fetch the members in the current conversation
var connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl));
var teamId = context.Activity.GetChannelData<TeamsChannelData>().Team.Id;
var members = await connector.Conversations.GetConversationMembersAsync(teamId);
// Concatenate information about all members into a string
var sb = new StringBuilder();
foreach (var member in members.AsTeamsChannelAccounts())
{
sb.AppendFormat(
"GivenName = {0}, TeamsMemberId = {1}",
member.Name, member.Id);
sb.AppendLine();
}
// Post the member info back into the conversation
await context.PostAsync($"People in this conversation: {sb.ToString()}");
Node.js- oder TypeScript-Beispiel
[...]
import * as builder from "botbuilder";
[...]
var teamId = session.message.sourceEvent.team.id;
connector.fetchMembers(
(<builder.IChatConnectorAddress>session.message.address).serviceUrl,
teamId,
(err, result) => {
if (err) {
session.endDialog('There is some error');
}
else {
session.endDialog('%s', JSON.stringify(result));
}
}
);
Abrufen des Benutzerprofils oder der Liste im persönlichen oder Gruppenchat
Sie können den API-Aufruf für jeden persönlichen Chat durchführen, um die Profilinformationen des Benutzers zu erhalten, der mit Ihrem Bot chattet.
Der API-Aufruf, die SDK-Methoden und das Antwortobjekt sind identisch mit dem Abrufen der Teamliste. Der einzige Unterschied besteht darin, dass Sie anstelle conversationId von .teamId
Abrufen der Liste der Kanäle in einem Team
Ihr Bot kann die Liste der Kanäle in einem Team abfragen.
Hinweis
- Der Name des Standardkanals "Allgemein" wird zurückgegeben
null, um die Lokalisierung zu ermöglichen. - Die Kanal-ID für den Kanal "Allgemein" stimmt immer mit der Team-ID überein.
REST-API-Beispiel
Geben Sie direkt eine GET-Anforderung auf /teams/{teamId}/conversations/aus, wobei der serviceUrl Wert als Endpunkt verwendet wird.
Die einzige Quelle dafür teamId ist eine Nachricht aus dem Teamkontext. Die Nachricht ist entweder eine Nachricht von einem Benutzer oder die Nachricht, die Ihr Bot erhält, wenn er einem Team hinzugefügt wird. Weitere Informationen finden Sie unter Bot oder Benutzer zu einem Team hinzugefügt.
Hinweis
Der serviceUrl Wert ist in der Regel stabil, kann sich jedoch ändern. Wenn eine neue Nachricht eintrifft, muss der Bot den gespeicherten serviceUrl Wert überprüfen.
GET /v3/teams/19%3A033451497ea84fcc83d17ed7fb08a1b6%40thread.skype/conversations
Response body
{
"conversations": [{
"id": "19:033451497ea84fcc83d17ed7fb08a1b6@thread.skype",
"name": null
}, {
"id": "19:cc25e4aae50746ecbb11473bba24c70a@thread.skype",
"name": "Materials"
}, {
"id": "19:b7b84cba410c406ba671dbbf5e0a3519@thread.skype",
"name": "Design"
}, {
"id": "19:fc5db2aed489454e8f8c06829ed6c986@thread.skype",
"name": "Marketing"
}]
}
.NET-Beispiel
Im folgenden Beispiel wird der FetchChannelList Aufruf aus den Teams-Erweiterungen für das Bot Builder SDK für .NET verwendet:
ConversationList channels = client.GetTeamsConnectorClient().Teams.FetchChannelList(activity.GetChannelData<TeamsChannelData>().Team.Id);
Node.js Beispiel
Im folgenden Beispiel wird fetchChannelList ein Aufruf aus den Teams-Erweiterungen für das Bot Builder SDK für Node.jsverwendet:
var teamId = session.message.sourceEvent.team.id;
connector.fetchChannelList(
(session.message.address).serviceUrl,
teamId,
(err, result) => {
if (err) {
session.endDialog('There is an error');
}
else {
session.endDialog('%s', JSON.stringify(result));
}
}
);
Abrufen von clientInfo in Ihrem Bot-Kontext
Sie können die clientInfo innerhalb der Aktivität Ihres Bots abrufen. Die clientInfo enthält die folgenden Eigenschaften:
- Gebietsschema
- Land
- Plattform
- Zeitzone
JSON-Beispiel
[
{
"type": "clientInfo",
"locale": "en-US",
"country": "US",
"platform": "Windows",
"timezone": "Asia/Calcutta"
}
]
C#-Beispiel
var connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl));
{
var clientinfo = context.Activity.Entities[0];
await context.PostAsync($"ClientInfo: clientinfo ");
}