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 .
Microsoft Teams sendet Benachrichtigungen an Ihren Bot für Änderungen oder Ereignisse, die in Bereichen auftreten, in denen Ihr Bot aktiv ist. Die folgende Liste enthält Ereignisse zum Auslösen der Dienstlogik:
- Lösen Sie eine Willkommensnachricht aus, wenn Ihr Bot zu einem Team hinzugefügt wird.
- Abfragen und Zwischenspeichern von Gruppeninformationen, wenn der Bot zu einem Gruppenchat hinzugefügt wird.
- Aktualisieren Sie zwischengespeicherte Informationen zu Teammitgliedschaft oder Kanalinformationen.
- Entfernen Sie zwischengespeicherte Informationen für ein Team, wenn der Bot entfernt wird.
- Wenn eine Bot-Nachricht von einem Benutzer mit "Gefällt mir" markiert wird.
Jedes Bot-Ereignis wird als Activity Objekt gesendet, das definiert, messageType welche Informationen sich im Objekt befinden. Für Nachrichten dieses Typs message, siehe Senden und Empfangen von Nachrichten.
Bei Teams- und Gruppenereignissen, die durch diesen conversationUpdate Typ ausgelöst werden, werden mehr Teams-Ereignisinformationen als Teil des Objekts channelData übergeben, und daher muss Ihr Ereignishandler die channelData Nutzlast nach den Teams eventType und weiteren ereignisspezifischen Metadaten abfragen.
In der folgenden Tabelle sind die Ereignisse aufgeführt, die der Bot empfangen und für die er Maßnahmen ergreifen kann.
| Type | Nutzlastobjekt | Teams eventType | Beschreibung | Bereich |
|---|---|---|---|---|
conversationUpdate |
membersAdded |
teamMemberAdded |
Mitglied zum Team hinzugefügt | allen |
conversationUpdate |
membersRemoved |
teamMemberRemoved |
Mitglied wurde aus Team entfernt |
groupChat & team |
conversationUpdate |
teamRenamed |
Team wurde umbenannt | team |
|
conversationUpdate |
channelCreated |
Ein Kanal wurde erstellt | team |
|
conversationUpdate |
channelRenamed |
Ein Kanal wurde umbenannt | team |
|
conversationUpdate |
channelDeleted |
Ein Kanal wurde gelöscht | team |
|
messageReaction |
reactionsAdded |
Reaktion auf Bot-Nachricht | allen | |
messageReaction |
reactionsRemoved |
Reaktion aus Bot-Nachricht entfernt | allen |
Hinzufügung eines Teammitglieds oder Bots
Das conversationUpdate Ereignis wird an Ihren Bot gesendet, wenn er Informationen zu Mitgliedschaftsaktualisierungen für Teams erhält, in denen es hinzugefügt wurde. Es erhält auch ein Update, wenn es zum ersten Mal speziell für persönliche Unterhaltungen hinzugefügt wird. Die Benutzerinformationen (Id) sind für Ihren Bot eindeutig und können für die zukünftige Verwendung durch Ihren Dienst zwischengespeichert werden, z. B. um eine Nachricht an einen bestimmten Benutzer zu senden.
Bot oder Benutzer zu einem Team hinzugefügt
Das conversationUpdate Ereignis mit dem membersAdded Objekt in der Nutzlast wird gesendet, wenn entweder ein Bot zu einem Team oder ein neuer Benutzer zu einem Team hinzugefügt wird, dem ein Bot hinzugefügt wird. Teams fügt das channelData Objekt ebenfalls hinzueventType.teamMemberAdded.
Da dieses Ereignis in beiden Fällen gesendet wird, sollten Sie das membersAdded Objekt analysieren, um festzustellen, ob der Zusatz ein Benutzer oder der Bot selbst war. Für Letzteres besteht eine bewährte Methode darin, eine Willkommensnachricht an den Kanal zu senden, damit die Benutzer die Funktionen Ihres Bots verstehen können.
Beispielcode: Überprüfen, ob Bot das hinzugefügte Mitglied war
.NET
for (int i = 0; i < sourceMessage.MembersAdded.Count; i++)
{
if (sourceMessage.MembersAdded[i].Id == sourceMessage.Recipient.Id)
{
addedBot = true;
break;
}
}
Node.js
const builder = require('botbuilder');
var c = new builder.ChatConnector({appId: BOT_APP_ID, appPassword: .BOT_SECRET});
var bot = new builder.UniversalBot(c);
bot.on('conversationUpdate', (msg) => {
var members = msg.membersAdded;
// Loop through all members that were just added to the team
for (var i = 0; i < members.length; i++) {
// See if the member added was our bot
if (members[i].id.includes(BOT_APP_ID)) {
var botmessage = new builder.Message()
.address(msg.address)
.text('Hello World!');
bot.send(botmessage, function(err) {});
}
}
});
Schemabeispiel: Bot zum Team hinzugefügt
{
"membersAdded":[
{
"id":"28:f5d48856-5b42-41a0-8c3a-c5f944b679b0"
}
],
"type":"conversationUpdate",
"timestamp":"2017-02-23T19:38:35.312Z",
"localTimestamp":"2017-02-23T12:38:35.312-07:00",
"id":"f:5f85c2ad",
"channelId":"msteams",
"serviceUrl":"https://smba.trafficmanager.net/amer-client-ss.msg/",
"from":{
"id":"29:1I9Is_Sx0OIy2rQ7Xz1lcaPKlO9eqmBRTBuW6XzkFtcjqxTjPaCMij8BVMdBcL9L_RwWNJyAHFQb0TRzXgyQvA"
},
"conversation":{
"isGroup":true,
"conversationType":"channel",
"id":"19:efa9296d959346209fea44151c742e73@thread.skype"
},
"recipient":{
"id":"28:f5d48856-5b42-41a0-8c3a-c5f944b679b0",
"name":"SongsuggesterBot"
},
"channelData":{
"team":{
"id":"19:efa9296d959346209fea44151c742e73@thread.skype"
},
"eventType":"teamMemberAdded",
"tenant":{
"id":"72f988bf-86f1-41af-91ab-2d7cd011db47"
}
}
}
Benutzer zu einer Besprechung hinzugefügt
Das conversationUpdate Ereignis mit dem membersAdded Objekt in der Nutzlast wird gesendet, wenn ein Benutzer zu einer privaten geplanten Besprechung hinzugefügt wird. Die Ereignisdetails werden auch dann gesendet, wenn anonyme Benutzer an der Besprechung teilnehmen.
Hinweis
- Wenn ein anonymer Benutzer zu einer Besprechung hinzugefügt wird, verfügt
aadObjectIddas Nutzlastobjekt "membersAdded" über kein Feld. - Wenn ein anonymer Benutzer zu einer Besprechung hinzugefügt wird,
fromweist das Objekt in der Nutzlast immer die ID des Besprechungsorganisators auf, auch wenn der anonyme Benutzer von einem anderen Referenten hinzugefügt wurde.
Schemabeispiel: Benutzer zu Besprechung hinzugefügt
{
"membersAdded":[
{
"id":"229:1Z_XHWBMhDuehhDBYoPQD6Y1DSFsTtqOZx-SA5Jh9Y4zHKm4VbFGRn7-rK7SWiW1JECwxkMdrWpHoBut2sSyQPA"
}
],
"type":"conversationUpdate",
"timestamp":"2017-02-23T19:38:35.312Z",
"localTimestamp":"2020-09-29T21:11:38.6542339Z",
"id":"f:a8cd1b51-9ddb-bd35-624b-7f7474165df8",
"channelId":"msteams",
"serviceUrl":"https://canary.botapi.skype.com/amer/",
"from":{
"id":"29:1siKxZhSoTapsXvI0gyf7Gywm_HM-4kEQW4BJnWuFYVIVu87xCNP99nidgQRCcwD3L3p_schiMShzx8IDRzf8mw",
"aadObjectId":"f30ba569-abef-4e97-8762-35f85cbae706"
},
"conversation":{
"isGroup":true,
"tenantId":"e15762ef-a8d8-416b-871c-25516354f1fe",
"id":"19:meeting_MWJlNGViOTgtMGExYi00NDA3LWExODgtOTZhMWNlYjM4ZTRj@thread.v2"
},
"recipient":{
"id":"28:3af3604a-d4fc-486b-911e-86fab41aa91c",
"name":"EchoBot1_Rename"
},
"channelData":{
"tenant":{
"id":"e15762ef-a8d8-416b-871c-25516354f1fe"
},
"source":null,
"meeting":{
"id":"MCMxOTptZWV0aW5nX01XSmxOR1ZpT1RndE1HRXhZaTAwTkRBM0xXRXhPRGd0T1RaaE1XTmxZak00WlRSakB0aHJlYWQudjIjMA=="
}
}
}
Bot nur für persönlichen Kontext hinzugefügt
Ihr Bot empfängt ein conversationUpdate mit, membersAdded wenn ein Benutzer es direkt für den persönlichen Chat hinzufügt. In diesem Fall enthält die Nutzlast, die Ihr Bot empfängt, das channelData.team Objekt nicht. Sie sollten es als Filter verwenden, falls Sie möchten, dass Ihr Bot je nach Bereich eine andere Willkommensnachricht anbietet.
Hinweis
Bei persönlichen Bots empfängt Ihr Bot das conversationUpdate Ereignis mehrmals, auch wenn der Bot entfernt und wieder hinzugefügt wird. Für die Entwicklung und das Testen kann es nützlich sein, eine Hilfsfunktion hinzuzufügen, mit der Sie Ihren Bot vollständig zurücksetzen können. Weitere Informationen finden Sie unter Node.js Beispiel oder C#-Beispiel für weitere Details zur Implementierung.
Schemabeispiel: Bot zum persönlichen Kontext hinzugefügt
{
"membersAdded": [{
"id": "28:f5d48856-5b42-41a0-8c3a-c5f944b679b0"
},
{
"id": "29:<userID>",
"aadObjectId": "***"
}
],
"type": "conversationUpdate",
"timestamp": "2019-04-23T10:17:44.349Z",
"id": "f:5f85c2ad",
"channelId": "msteams",
"serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
"from": {
"id": "29:<USERID>",
"aadObjectId": "***"
},
"conversation": {
"conversationType": "personal",
"id": "***"
},
"recipient": {
"id": "28:<BOT ID>",
"name": "<BOT NAME>"
},
"channelData": {
"tenant": {
"id": "<TENANT ID>"
}
}
}
Teammitglied oder Bot entfernt
Das conversationUpdate Ereignis mit dem membersRemoved Objekt in der Nutzlast wird gesendet, wenn entweder Ihr Bot aus einem Team entfernt wird oder ein Benutzer aus einem Team entfernt wird, dem ein Bot hinzugefügt wurde. Teams fügt das channelData Objekt ebenfalls hinzueventType.teamMemberRemoved. Wie bei dem membersAdded Objekt sollten Sie das membersRemoved Objekt nach der App-ID Ihres Bots analysieren, um zu bestimmen, wer entfernt wurde.
Hinweis
Wenn ein Bot zu einem Team hinzugefügt und später vom Mandantenadministrator für den Teambesitzer blockiert wird, empfängt conversationUpdate er kein Ereignis, wenn der Besitzer einen Benutzer aus dem Team entfernt.
Schemabeispiel: Teammitglied entfernt
{
"membersRemoved": [
{
"id": "29:1_LCi5Up14pAy65yZuaJzG1uIT7ujYhjjSTsUNqjORsZHjLHKiQIBJa4cX2XsAsRoaY7va2w6ZymA9-1VtSY_g"
}
],
"type": "conversationUpdate",
"timestamp": "2017-02-23T19:37:06.96Z",
"localTimestamp": "2017-02-23T12:37:06.96-07:00",
"id": "f:d8a6a4aa",
"channelId": "msteams",
"serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
"from": {
"id": "29:1I9Is_Sx0OIy2rQ7Xz1lcaPKlO9eqmBRTBuW6XzkFtcjqxTjPaCMij8BVMdBcL9L_RwWNJyAHFQb0TRzXgyQvA"
},
"conversation": {
"isGroup": true,
"conversationType": "channel",
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"recipient":
{
"id": "28:f5d48856-5b42-41a0-8c3a-c5f944b679b0",
"name": "SongsuggesterBot"
},
"channelData": {
"team": {
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"eventType": "teamMemberRemoved",
"tenant": {
"id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
}
}
Benutzer aus einer Besprechung entfernt
Das conversationUpdate Ereignis mit dem membersRemoved Objekt in der Nutzlast wird gesendet, wenn ein Benutzer aus einer privaten geplanten Besprechung entfernt wird. Die Ereignisdetails werden auch dann gesendet, wenn anonyme Benutzer an der Besprechung teilnehmen.
Hinweis
- Wenn ein anonymer Benutzer aus einer Besprechung entfernt wird, verfügt
aadObjectIddas Nutzlastobjekt membersRemoved über kein Feld. - Wenn ein anonymer Benutzer aus einer Besprechung entfernt wird,
fromhaben Objekte in der Nutzlast immer die ID des Besprechungsorganisators, auch wenn der anonyme Benutzer von einem anderen Referenten entfernt wurde.
Schemabeispiel: Benutzer aus Besprechung entfernt
{
"membersRemoved":
{
"id": "29:1Z_XHWBMhDuehhDBYoPQD6Y1DSFsTtqOZx-SA5Jh9Y4zHKm4VbFGRn7-rK7SWiW1JECwxkMdrWpHoBut2sSyQPA"
}
],
"type": "conversationUpdate",
"timestamp": "2020-09-29T21:15:08.6391139Z",
"id": "f:ee8dfdf3-54ac-51de-05da-9d49514974bb",
"channelId": "msteams",
"serviceUrl": "https://canary.botapi.skype.com/amer/",
"from": {
"id": "29:1siKxZhSoTapsXvI0gyf7Gywm_HM-4kEQW4BJnWuFYVIVu87xCNP99nidgQRCcwD3L3p_schiMShzx8IDRzf8mw",
"aadObjectId": "f30ba569-abef-4e97-8762-35f85cbae706"
},
"conversation": {
"isGroup": true,
"tenantId": "e15762ef-a8d8-416b-871c-25516354f1fe",
"id": "19:meeting_MWJlNGViOTgtMGExYi00NDA3LWExODgtOTZhMWNlYjM4ZTRj@thread.v2"
},
"recipient": {
"id": "28:3af3604a-d4fc-486b-911e-86fab41aa91c",
"name": "EchoBot1_Rename"
},
"channelData": {
"tenant": {
"id": "e15762ef-a8d8-416b-871c-25516354f1fe"
},
"source": null,
"meeting": {
"id": "MCMxOTptZWV0aW5nX01XSmxOR1ZpT1RndE1HRXhZaTAwTkRBM0xXRXhPRGd0T1RaaE1XTmxZak00WlRSakB0aHJlYWQudjIjMA=="
}
}
}
Aktualisierungen von Teamnamen
Hinweis
Es gibt keine Funktionalität zum Abfragen aller Teamnamen, und der Teamname wird nicht in Nutzlasten von anderen Ereignissen zurückgegeben.
Ihr Bot wird benachrichtigt, wenn das Team, in dem er sich befindet, umbenannt wurde. Er empfängt ein conversationUpdate Ereignis mit eventType.teamRenamed im channelData Objekt. Es gibt keine Benachrichtigungen zum Erstellen oder Löschen von Teams, da Bots nur als Teil von Teams existieren und keine Sichtbarkeit außerhalb des Bereichs haben, in dem sie hinzugefügt wurden.
Schemabeispiel: Team umbenannt
{
"type": "conversationUpdate",
"timestamp": "2017-02-23T19:35:56.825Z",
"localTimestamp": "2017-02-23T12:35:56.825-07:00",
"id": "f:1406033e",
"channelId": "msteams",
"serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
"from": {
"id": "29:1I9Is_Sx0O-Iy2rQ7Xz1lcaPKlO9eqmBRTBuW6XzkFtcjqxTjPaCMij8BVMdBcL9L_RwWNJyAHFQb0TRzXgyQvA"
},
"conversation": {
"isGroup": true,
"conversationType": "channel",
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"recipient": {
"id": "28:f5d48856-5b42-41a0-8c3a-c5f944b679b0",
"name": "SongsuggesterLocal"
},
"channelData": {
"team": {
"id": "19:efa9296d959346209fea44151c742e73@thread.skype",
"name": "New Team Name"
},
"eventType": "teamRenamed",
"tenant": {
"id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
}
}
Kanalupdates
Ihr Bot wird benachrichtigt, wenn ein Kanal in einem Team, dem er hinzugefügt wurde, erstellt, umbenannt oder gelöscht wird. Auch hier wird das conversationUpdate Ereignis empfangen, und ein Teams-spezifischer Ereignisbezeichner wird als Teil des channelData.eventType Objekts channel.id gesendet, wobei die Kanaldaten die GUID für den Kanal sind und channel.name den Kanalnamen selbst enthalten.
Die Kanalereignisse lauten wie folgt:
- channelCreated Ein Benutzer fügt dem Team einen neuen Kanal hinzu.
- channelUmbenannt Ein Benutzer benennt einen vorhandenen Kanal um.
- channelDeleted Ein Benutzer entfernt einen Kanal.
Vollständiges Schemabeispiel: channelCreated
{
"type": "conversationUpdate",
"timestamp": "2017-02-23T19:34:07.478Z",
"localTimestamp": "2017-02-23T12:34:07.478-07:00",
"id": "f:dd6ec311",
"channelId": "msteams",
"serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
"from": {
"id": "29:1wR7IdIRIoerMIWbewMi75JA3scaMuxvFon9eRQW2Nix5loMDo0362st2IaRVRirPZBv1WdXT8TIFWWmlQCizZQ"
},
"conversation": {
"isGroup": true,
"conversationType": "channel",
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"recipient": {
"id": "28:f5d48856-5b42-41a0-8c3a-c5f944b679b0",
"name": "SongsuggesterBot"
},
"channelData": {
"channel": {
"id": "19:6d97d816470f481dbcda38244b98689a@thread.skype",
"name": "FunDiscussions"
},
"team": {
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"eventType": "channelCreated",
"tenant": {
"id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
}
}
Schemaauszug: channelData für channelRenamed
⋮
"channelData": {
"channel": {
"id": "19:6d97d816470f481dbcda38244b98689a@thread.skype",
"name": "PhotographyUpdates"
},
"team": {
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"eventType": "channelRenamed",
"tenant": {
"id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
}
⋮
Schemaauszug: channelData für channelDeleted
⋮
"channelData": {
"channel": {
"id": "19:6d97d816470f481dbcda38244b98689a@thread.skype",
"name": "PhotographyUpdates"
},
"team": {
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"eventType": "channelDeleted",
"tenant": {
"id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
}
⋮
Reaktionen
Das messageReaction Ereignis wird gesendet, wenn ein Benutzer seine Reaktion auf eine Nachricht hinzufügt oder entfernt, die ursprünglich von Ihrem Bot gesendet wurde.
replyToId Enthält die ID der jeweiligen Nachricht.
Schemabeispiel: Einem Benutzer gefällt eine Nachricht mit "Gefällt mir".
{
"reactionsAdded": [
{
"type": "like"
}
],
"type": "messageReaction",
"timestamp": "2017-10-16T18:45:41.943Z",
"id": "f:9f78d1f3",
"channelId": "msteams",
"serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
"from": {
"id": "29:1I9Is_Sx0O-Iy2rQ7Xz1lcaPKlO9eqmBRTBuW6XzkFtcjqxTjPaCMij8BVMdBcL9L_RwWNJyAHFQb0TRzXgyQvA",
"aadObjectId": "c33aafc4-646d-4543-9d4c-abd28e4d2110"
},
"conversation": {
"isGroup": true,
"conversationType": "channel",
"id": "19:3629591d4b774aa08cb0887902eee7c1@thread.skype"
},
"recipient": {
"id": "28:f5d48856-5b42-41a0-8c3a-c5f944b679b0",
"name": "SongsuggesterLocal"
},
"channelData": {
"channel": {
"id": "19:3629591d4b774aa08cb0887902eee7c1@thread.skype"
},
"team": {
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"tenant": {
"id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
},
"replyToId": "1575667808184"
}
Schemabeispiel: Einem Benutzer gefällt eine Nachricht nicht mehr.
{
"reactionsRemoved": [
{
"type": "like"
}
],
"type": "messageReaction",
"timestamp": "2017-10-16T18:45:41.943Z",
"id": "f:9f78d1f3",
"channelId": "msteams",
"serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
"from": {
"id": "29:1I9Is_Sx0O-Iy2rQ7Xz1lcaPKlO9eqmBRTBuW6XzkFtcjqxTjPaCMij8BVMdBcL9L_RwWNJyAHFQb0TRzXgyQvA",
"aadObjectId": "c33aafc4-646d-4543-9d4c-abd28e4d2110"
},
"conversation": {
"isGroup": true,
"conversationType": "channel",
"id": "19:3629591d4b774aa08cb0887902eee7c1@thread.skype"
},
"recipient": {
"id": "28:f5d48856-5b42-41a0-8c3a-c5f944b679b0",
"name": "SongsuggesterLocal"
},
"channelData": {
"channel": {
"id": "19:3629591d4b774aa08cb0887902eee7c1@thread.skype"
},
"team": {
"id": "19:efa9296d959346209fea44151c742e73@thread.skype"
},
"tenant": {
"id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
},
"replyToId": "1575667808184"
}