Plattform-Nachrichten von Drittanbietern mithilfe von Microsoft Graph in Teams importieren

Mit Microsoft Graph können Sie den vorhandenen Nachrichtenverlauf und die Daten von Benutzern aus einem externen System in einen Teams Kanal migrieren. Durch die Aktivierung der Neugestaltung einer Drittanbieterplattform-Messaginghierarchie innerhalb Teams können Benutzer ihre Kommunikation nahtlos fortsetzen und ohne Unterbrechung fortfahren.

Hinweis

Microsoft kann in Zukunft von Ihnen oder Ihren Kunden fordern, basierend auf der Menge der importierten Daten, zusätzliche Gebühren zu zahlen.

Übersicht über den Import

Auf hoher Ebene besteht der Importvorgang aus folgenden Komponenten:

  1. Erstellen Sie ein Team mit einem Back-in-Time-Zeitstempel.
  2. Erstellen Sie einen Kanal mit einem Back-in-Time-Zeitstempel.
  3. Importieren sie externe Back-in-Time-Nachrichten.
  4. Schließen Sie den Migrationsprozess für Team und Kanal ab.
  5. Fügen Sie Teammitglieder hinzu.

Voraussetzungen

Analysieren und Vorbereiten von Nachrichtendaten

  • Überprüfen Sie die Drittanbieterdaten, um zu entscheiden, was migriert wird.
  • Extrahieren Sie die ausgewählten Daten aus dem Drittanbieter-Chatsystem.
  • Ordnen Sie die Chatstruktur eines Drittanbieters der Teams Struktur zu.
  • Konvertieren von Importdaten in das für die Migration erforderliche Format.

Einrichten des Office 365-Mandanten

  • Stellen Sie sicher, dass für die Importdaten ein Office 365 Mandant vorhanden ist. Weitere Informationen zum Einrichten eines Office 365 Mandanten für Teams finden Sie unter Vorbereiten Ihres Office 365 Mandanten.
  • Stellen Sie sicher, dass sich Teammitglieder in Azure Active Directory (AAD) befinden. Weitere Informationen finden Sie unter Hinzufügen eines neuen Benutzers zu AAD.

Schritt 1: Erstellen eines Teams

Da Sie vorhandene Daten migrieren, sind die Aufrechterhaltung der ursprünglichen Nachrichtenzeitstempel und das Verhindern von Nachrichtenaktivitäten während des Migrationsprozesses entscheidend, um den vorhandenen Nachrichtenfluss des Benutzers in Teams neu zu erstellen. Dies wird wie folgt erreicht:

Erstellen Sie ein neues Team mit einem Back-in-Timestamp mithilfe der Teamressourceneigenschaft. createdDateTime Platzieren Sie das neue Team in einem speziellen Zustand, der migration mode Benutzer von den meisten Aktivitäten innerhalb des Teams bis zum Abschluss des Migrationsprozesses einschränkt. Schließen Sie das teamCreationMode Instanzattribut mit dem migration Wert in die POST-Anforderung ein, um das neue Team explizit als für die Migration erstellt zu identifizieren.

Hinweis

Das createdDateTime Feld wird nur für Instanzen eines Teams oder Kanals ausgefüllt, die migriert wurden.

Berechtigung

ScopeName DisplayName Beschreibung Typ Administratorzustimmung? Behandelte Entitäten/APIs
Teamwork.Migrate.All Migration zu Microsoft Teams verwalten Erstellen und Verwalten von Ressourcen für die Migration zu Microsoft Teams. Nur-Anwendung Ja POST /teams

Anforderung (Erstellen eines Teams im Migrationsstatus)

POST https://graph.microsoft.com/v1.0/teams

Content-Type: application/json
{
  "@microsoft.graph.teamCreationMode": "migration",
  "template@odata.bind": "https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
  "displayName": "My Sample Team",
  "description": "My Sample Team’s Description",
  "createdDateTime": "2020-03-14T11:22:17.043Z"
}

Antwort

HTTP/1.1 202 Accepted
Location: /teams/{team-id}/operations/{operation-id}
Content-Location: /teams/{team-id}

Fehlermeldung

400 Bad Request

Sie können die Fehlermeldung in den folgenden Szenarien erhalten:

  • Wenn createdDateTime für die Zukunft festgelegt ist.
  • Wenn createdDateTime richtig angegeben, aber teamCreationMode instanzattribut fehlt oder auf ungültigen Wert festgelegt ist.

Schritt 2: Erstellen eines Kanals

Das Erstellen eines Kanals für die importierten Nachrichten ähnelt dem Szenario "Team erstellen":

Erstellen Sie einen neuen Kanal mit einem Back-in-Timestamp mithilfe der Kanalressourceneigenschaft. createdDateTime Platzieren Sie den neuen Kanal in einem speziellen Zustand, der migration mode Benutzer von den meisten Chataktivitäten innerhalb des Kanals bis zum Abschluss des Migrationsvorgangs einschränkt. Schließen Sie das channelCreationMode Instanzattribut mit dem migration Wert in die POST-Anforderung ein, um das neue Team explizit als für die Migration erstellt zu identifizieren.

Berechtigung

ScopeName DisplayName Beschreibung Typ Administratorzustimmung? Behandelte Entitäten/APIs
Teamwork.Migrate.All Migration zu Microsoft Teams verwalten Erstellen und Verwalten von Ressourcen für die Migration zu Microsoft Teams. Nur-Anwendung Ja POST /teams

Anforderung (Erstellen eines Kanals im Migrationsstatus)

POST https://graph.microsoft.com/v1.0/teams/{team-id}/channels

Content-Type: application/json
{
  "@microsoft.graph.channelCreationMode": "migration",
  "displayName": "Architecture Discussion",
  "description": "This channel is where we debate all future architecture plans",
  "membershipType": "standard",
  "createdDateTime": "2020-03-14T11:22:17.047Z"
}

Antwort

HTTP/1.1 202 Accepted

{
   "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#teams('team-id')/channels/$entity",
   "id":"id-value",
   "createdDateTime":null,
   "displayName":"Architecture Discussion",
   "description":"This channel is where we debate all future architecture plans",
   "isFavoriteByDefault":null,
   "email":null,
   "webUrl":null,
   "membershipType":null,
   "moderationSettings":null
}

Fehlermeldung

400 Bad Request

Sie können die Fehlermeldung in den folgenden Szenarien erhalten:

  • Wenn createdDateTime für die Zukunft festgelegt ist.
  • Wenn createdDateTime richtig angegeben ist, das channelCreationMode Instanzattribut jedoch fehlt oder auf einen ungültigen Wert festgelegt ist.

Schritt 3: Importieren von Nachrichten

Nachdem das Team und der Kanal erstellt wurden, können Sie mit dem Senden von Back-in-Time-Nachrichten mithilfe der createdDateTime from Schlüssel im Anforderungstext beginnen.

Hinweis

  • Nachrichten, die mit createdDateTime früher als dem Nachrichtenthread importiert createdDateTime wurden, werden nicht unterstützt.
  • createdDateTime muss nachrichtenübergreifend im selben Thread eindeutig sein.
  • createdDateTime unterstützt Zeitstempel mit Millisekunden-Genauigkeit. Wenn die eingehende Anforderungsnachricht beispielsweise den Wert createdDateTime 2020-09-16T05:50:31.0025302Z hat, wird sie in 2020-09-16T05:50:31.002Z konvertiert, wenn die Nachricht aufgenommen wird.

Anforderung (NUR-TEXT-POST-Nachricht)

POST https://graph.microsoft.com/v1.0/teams/team-id/channels/channel-id/messages

{
   "createdDateTime":"2019-02-04T19:58:15.511Z",
   "from":{
      "user":{
         "id":"id-value",
         "displayName":"Joh Doe",
         "userIdentityType":"aadUser"
      }
   },
   "body":{
      "contentType":"html",
      "content":"Hello World"
   }
}

Antwort

HTTP/1.1 200 OK

{
   "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#teams('team-id')/channels('channel-id')/messages/$entity",
   "id":"id-value",
   "replyToId":null,
   "etag":"id-value",
   "messageType":"message",
   "createdDateTime":"2019-02-04T19:58:15.58Z",
   "lastModifiedDateTime":null,
   "deleted":false,
   "subject":null,
   "summary":null,
   "importance":"normal",
   "locale":"en-us",
   "policyViolation":null,
   "from":{
      "application":null,
      "device":null,
      "conversation":null,
      "user":{
         "id":"id-value",
         "displayName":"Joh Doe",
         "userIdentityType":"aadUser"
      }
   },
   "body":{
      "contentType":"html",
      "content":"Hello World"
   },
   "attachments":[
   ],
   "mentions":[
   ],
   "reactions":[
   ]
}

Fehlermeldung

400 Bad Request

Anforderung (POST eine Nachricht mit Inlinebild)

Hinweis

  • In diesem Szenario gibt es keine speziellen Berechtigungsbereiche, da die Anforderung Teil von chatMessage ist.
  • Hier gelten die Bereiche, die chatMessage gelten.
POST https://graph.microsoft.com/v1.0/teams/team-id/channels/channel-id/messages

{
  "body": {
        "contentType": "html",
        "content": "<div><div>\n<div><span><img height=\"250\" src=\"../hostedContents/1/$value\" width=\"176.2295081967213\" style=\"vertical-align:bottom; width:176px; height:250px\"></span>\n\n</div>\n\n\n</div>\n</div>"
    },
    "hostedContents":[
        {
            "@microsoft.graph.temporaryId": "1",
            "contentBytes": "iVBORw0KGgoAAAANSUhEUgAAANcAAAExCAYAAADvFzeeAAAXjklEQVR4Ae2d/XNU1RnH+9e0FFrA0RCIyaS8hRA0HV5KbS1gHRgVpjMClY4GHJ3yYm1HCmXaWttaaZUZtIIFKYi8lFAkvOQ9u5vN225IARVBbX9/Os9NbrLZbMjmhCfJPX5+2Lmb3T25y3O+n/M599x7w9f+++UXwoMakIF7n4GvUdR7X1RqSk01A8CFuZm5GGUAuIwKi72wF3ABF+YyygBwGRUWc2Eu4AIuzGWUAeAyKizmwlzABVyYyygDwGVUWMyFuYALuDCXUQaAy6iwmAtzARdwfWXMdeuzT+TGxz3Sfb1LunrapL07IW3pePDQ5/qavqef0c+OdYAELuAac4jGGkLL9rdvfyo9N9ODQAqBGmmrwGlb/R0u3xG4gMspOC5hG882CoRaaCSA8n1ff9doIQMu4PIOrus3u+8ZVNnw6e/Od5AALuDKOyz5hmqiPnfnzi1J9bSbgRWCpvvQfY307wQu4BoxJCOFaDK8rwsQmQsUIQhWW93XSIsewAVckYdLQ24F0Ui/926AARdwRRounZ6Np7GyYdN9DzdFBC7gijRc43GMlQ1U9s/6HXJNjYELuHI<<-----Removed----->>>>",
            "contentType": "image/png"
        }
    ]
}

Antwort

HTTP/1.1 200 OK

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('team-id')/channels('channel-id')/messages/$entity",
    "id": "id-value",
    "replyToId": null,
    "etag": "id-value",
    "messageType": "message",
    "createdDateTime": "2019-02-04T19:58:15.511Z",
    "lastModifiedDateTime": null,
    "deleted": false,
    "subject": null,
    "summary": null,
    "importance": "normal",
    "locale": "en-us",
    "policyViolation": null,
    "from": {
        "application": null,
        "device": null,
        "conversation": null,
        "user": {
            "id": "id-value",
            "displayName": "Joh Doe",
            "userIdentityType": "aadUser"
        }
    },
      "body": {
        "contentType": "html",
        "content": "<div><div>\n<div><span><img height=\"250\" src=\"https://graph.microsoft.com/teams/teamId/channels/channelId/messages/id-value/hostedContents/hostedContentId/$value\" width=\"176.2295081967213\" style=\"vertical-align:bottom; width:176px; height:250px\"></span>\n\n</div>\n\n\n</div>\n</div>"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}

Schritt 4: Abschließen des Migrationsmodus

Nachdem der Nachrichtenmigrationsprozess abgeschlossen ist, werden sowohl das Team als auch der Kanal mithilfe der Methode aus dem Migrationsmodus completeMigration ausgeschlossen. In diesem Schritt werden die Team- und Kanalressourcen für die allgemeine Verwendung durch Teammitglieder geöffnet. Die Aktion ist an die team Instanz gebunden. Bevor das Team abgeschlossen ist, müssen alle Kanäle außerhalb des Migrationsmodus abgeschlossen sein.

Anforderung (Ende des Kanalmigrationsmodus)

POST https://graph.microsoft.com/v1.0/teams/team-id/channels/channel-id/completeMigration

Antwort

HTTP/1.1 204 NoContent

Anforderung (Teammigrationsmodus beenden)

POST https://graph.microsoft.com/v1.0/teams/team-id/completeMigration

Antwort

HTTP/1.1 204 NoContent

Aktion, die für eine team aufgerufen wird oder die sich nicht in channel migrationMode befindet.

Schritt 5: Hinzufügen von Teammitgliedern

Sie können ein Mitglied zu einem Team hinzufügen, indem Sie die Teams Benutzeroberfläche verwenden, oder Microsoft Graph Mitglieder-API hinzufügen:

Anforderung (Mitglied hinzufügen)

POST https://graph.microsoft.com/beta/teams/{team-id}/members
Content-type: application/json
Content-length: 30
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": [],
"user@odata.bind": "https://graph.microsoft.com/beta/users/{user-id}"
}

Antwort

HTTP/1.1 204 No Content

Tipps und zusätzliche Informationen

  • Nachdem die completeMigration Anforderung gestellt wurde, können Sie keine weiteren Nachrichten in das Team importieren.

  • Sie können dem neuen Team nur Teammitglieder hinzufügen, nachdem die completeMigration Anforderung eine erfolgreiche Antwort zurückgegeben hat.

  • Einschränkung: Nachrichten werden mit fünf RPS pro Kanal importiert.

  • Wenn Sie eine Korrektur an den Migrationsergebnissen vornehmen müssen, müssen Sie das Team löschen und die Schritte wiederholen, um das Team und den Kanal zu erstellen und die Nachrichten erneut zu migrieren.

Hinweis

Derzeit sind Inlinebilder der einzige Medientyp, der vom Importnachrichten-API-Schema unterstützt wird.

Importieren des Inhaltsbereichs

Die folgende Tabelle enthält den Inhaltsbereich:

In-Scope Derzeit außerhalb des Gültigkeitsbereichs
Team- und Kanalnachrichten 1:1- und Gruppenchatnachrichten
Erstellungszeitpunkt der ursprünglichen Nachricht Private Kanäle
Inlinebilder als Teil der Nachricht Bei Erwähnungen
Links zu vorhandenen Dateien in SPO oder OneDrive Reaktionen
Nachrichten mit Rich-Text Videos
Nachrichtenantwortkette Announcements
Verarbeitung mit hohem Durchsatz Codeausschnitte
Sticker
Emojis
Zitate
Beiträge zwischen Kanälen querstellen

Siehe auch

Integration von Microsoft Graph und Teams