Plattform-Nachrichten von Drittanbietern mithilfe von Microsoft Graph in Teams importierenImport third-party platform messages to Teams using Microsoft Graph

Wichtig

Microsoft Graph und Microsoft Teams öffentliche Vorschauen stehen für den frühzeitigen Zugriff und das Feedback zur Verfügung.Microsoft Graph and Microsoft Teams public previews are available for early-access and feedback. Obwohl diese Version umfangreiche Tests unterzogen wurde, ist Sie nicht für die Verwendung in der Produktion vorgesehen.Although this release has undergone extensive testing, it is not intended for use in production.

Mit Microsoft Graph können Sie den vorhandenen Nachrichtenverlauf und die Daten von Benutzern aus einem externen System in einen Teams-Kanal migrieren.With Microsoft Graph, you can migrate users' existing message history and data from an external system into a Teams channel. Durch die Aktivierung einer Drittanbieter-Platt Form Messaging-Hierarchie in Microsoft Teams können Benutzer ihre Kommunikation nahtlos fortsetzen und ohne Unterbrechung fortfahren.By enabling the recreation of a third-party platform messaging hierarchy inside Teams, users can continue their communications in a seamless manner and proceed without interruption.

Import (Übersicht)Import overview

Auf hohem Niveau besteht der Importvorgang aus folgenden Elementen:At a high level, the import process consists of the following:

  1. Erstellen eines Teams mit einem Back-in-Time-ZeitstempelCreate a team with a back-in-time timestamp
  2. Erstellen eines Kanals mit einem Back-in-Time-ZeitstempelCreate a channel with a back-in-time timestamp
  3. Importieren externer Back-in-Time datierter NachrichtenImport external back-in-time dated messages
  4. Abschließen des Migrationsprozesses für Teams und KanäleComplete the team and channel migration process
  5. Hinzufügen von TeammitgliedernAdd team members

Erforderliche AnforderungenNecessary requirements

Analysieren und Vorbereiten von NachrichtendatenAnalyze and prepare message data

✔ Überprüfen Sie die drittanbieterdaten, um zu entscheiden, was migriert werden soll.✔ Review the third-party data to decide what will be migrated.
✔ Extrahieren Sie die ausgewählten Daten aus dem Drittanbieter-Chat System.✔ Extract the selected data from the third-party chat system.
✔ Ordnen Sie die Chat Struktur eines Drittanbieters der Teams-Struktur zu.✔ Map the third-party chat structure to the Teams structure.
✔ Konvertieren von Importdaten in Format, das für die Migration benötigt wird.✔ Convert import data into format needed for migration.

Einrichten des Office 365-MandantenSet up your Office 365 tenant

✔ Sicherstellen, dass ein Office 365 Mandant für die Importdaten vorhanden ist.✔ Ensure that an Office 365 tenant exists for the import data. Weitere Informationen zum Einrichten eines Office 365 Mandanten für Teams finden Sie unter Vorbereiten des Office 365 Mandanten.For more information on setting up an Office 365 tenancy for Teams, see, Prepare your Office 365 tenant.
✔ Stellen Sie sicher, dass sich die Teammitglieder in Azure Active Directory (AAD) befinden.✔ Make sure that team members are in Azure Active Directory (AAD). Weitere Informationen finden Sie unter Hinzufügen eines neuen Benutzers zu Azure Active Directory.For more information see Add a new user to Azure Active Directory.

Schritt 1: Erstellen eines TeamsStep One: Create a team

Da vorhandene Daten migriert werden, sind die Beibehaltung der ursprünglichen Nachrichtenzeitstempel und das verhindern von Messaging Aktivitäten während des Migrationsprozesses entscheidend, um den vorhandenen Nachrichtenfluss des Benutzers in Microsoft Teams neu zu erstellen.Since existing data is being migrated, maintaining the original message timestamps and preventing messaging activity during the migration process are key to recreating the user's existing message flow in Teams. Dies wird wie folgt erreicht:This is achieved as follows:

Erstellen Sie ein neues Team mit einem Back-in-Time-Zeitstempel mithilfe der Team Resource createdDateTime -Eigenschaft.Create a new team with a back-in-time timestamp using the team resource createdDateTime property. Platzieren Sie das neue Team in migration mode , einem besonderen Status, der Benutzer von den meisten Aktivitäten innerhalb des Teams bis zum Abschluss des Migrationsvorgangs verriegelt.Place the new team in migration mode, a special state that bars users from most activities within the team until the migration process is complete. Fügen teamCreationMode Sie das Instanz-Attribut mit dem migration Wert in die Post-Anforderung ein, um das neue Team explizit als für die Migration erstellt zu identifizieren.Include the teamCreationMode instance attribute with the migration value in the POST request to explicitly identify the new team as being created for migration.

Hinweis: das createdDateTime Feld wird nur für Instanzen eines Teams oder Kanals aufgefüllt, die migriert wurden.NOTE: The createdDateTime field will only be populated for instances of a team or channel that have been migrated.

BerechtigungenPermissions

ScopeNameScopeName DisplayNameDisplayName BeschreibungDescription TypType Zustimmung des Administrators?Admin Consent? Behandelte Entitäten/APIsEntities/APIs covered
Teamwork.Migrate.All Migration zu Microsoft Teams verwaltenManage migration to Microsoft Teams Erstellen und Verwalten von Ressourcen für die Migration zu Microsoft TeamsCreating, managing resources for migration to Microsoft Teams Nur AnwendungApplication-only JaYes POST /teams

Anforderung (Erstellen eines Teams im Migrationsstatus)Request (create a team in migration state)

POST https://graph.microsoft.com/beta/teams

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

AntwortResponse

HTTP/1.1 202 Accepted
Location: /teams/{teamId}/operations/{operationId}
Content-Location: /teams/{teamId}

FehlermeldungenError messages

400 Bad Request
  • createdDateTime für Zukunft festgelegt.createdDateTime set for future.
  • createdDateTime richtig angegeben, teamCreationMode das Instanz-Attribut fehlt oder ist auf ungültigen Wert festgelegt.createdDateTime correctly specified, but teamCreationMode instance attribute is missing or set to invalid value.

Schritt 2: Erstellen eines KanalsStep Two: Create a channel

Das Erstellen eines Kanals für die importierten Nachrichten ähnelt dem Szenario zum Erstellen eines Teams:Creating a channel for the imported messages is similar to the create team scenario:

Erstellen Sie mithilfe der Channel-Ressourceneigenschaft einen neuen Kanal mit einem Back-in-Time-Zeitstempel createdDateTime .Create a new channel with a back-in-time timestamp using the channel resource createdDateTime property. Platzieren Sie den neuen Kanal in migration mode , einen besonderen Status, der Benutzer von den meisten chataktivitäten innerhalb des Kanals bis zum Abschluss des Migrationsprozesses verriegelt.Place the new channel in migration mode, a special state that bars users from most chat activities within the channel until the migration process is complete. Fügen channelCreationMode Sie das Instanz-Attribut mit dem migration Wert in die Post-Anforderung ein, um das neue Team explizit als für die Migration erstellt zu identifizieren.Include the channelCreationMode instance attribute with the migration value in the POST request to explicitly identify the new team as being created for migration.

BerechtigungenPermissions

ScopeNameScopeName DisplayNameDisplayName BeschreibungDescription TypType Zustimmung des Administrators?Admin Consent? Behandelte Entitäten/APIsEntities/APIs covered
Teamwork.Migrate.All Migration zu Microsoft Teams verwaltenManage migration to Microsoft Teams Erstellen und Verwalten von Ressourcen für die Migration zu Microsoft TeamsCreating, managing resources for migration to Microsoft Teams Nur AnwendungApplication-only JaYes POST /teams

Anforderung (Kanal im Migrationsstatus erstellen)Request (create a channel in migration state)

POST https://graph.microsoft.com/beta/teams/{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"
}

AntwortResponse

HTTP/1.1 202 Accepted

{
   "@odata.context":"https://canary.graph.microsoft.com/testprodbetateamsgraphsvcncus/$metadata#teams('9cc6d6ab-07d8-4d14-bc2b-7db8995d6d23')/channels/$entity",
   "id":"19:e90f6814ce674072a4126206e7de485e@thread.tacv2",
   "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
}

#### Error message

```http
400 Bad Request
  • createdDateTime für Zukunft festgelegt.createdDateTime set for future.
  • createdDateTime richtig angegeben channelCreationMode , das Instanz-Attribut fehlt oder ist auf ungültigen Wert festgelegt.createdDateTime correctly specified but channelCreationMode instance attribute is missing or set to invalid value.

Schritt 3: Importieren von NachrichtenStep Three: Import messages

Nachdem das Team und der Kanal erstellt wurden, können Sie mit dem Senden von Back-in-Time-Nachrichten mit den createdDateTime und- from Tasten im Anforderungstext beginnen.After the team and channel have been created, you can begin sending back-in-time messages using the createdDateTime and from keys in the request body. Hinweis: Nachrichten, createdDateTime die zuvor mit dem Nachrichtenthread importiert wurden createdDateTime , werden nicht unterstützt.NOTE: messages imported with createdDateTime earlier than the message thread createdDateTime is not supported.

Hinweis

createdDateTime muss für Nachrichten in demselben Thread eindeutig sein.createdDateTime must be unique across messages in the same thread.

Request (Nachricht nur Text bereitstellen)Request (POST message that is text-only)

POST https://graph.microsoft.com/beta/teams/teamId/channels/channelId/messages

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

AntwortResponse

HTTP/1.1 200 OK

{
   "@odata.context":"https://graph.microsoft.com/beta/$metadata#teams('teamId')/channels('channelId')/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":[
   ]
}

FehlermeldungenError messages

400 Bad Request

Anforderung (Senden einer Nachricht mit Inlinebild)Request (POST a message with inline image)

Hinweis: in diesem Szenario gibt es keine speziellen Berechtigungs Bereiche, da die Anforderung Teil von Chat Message ist; Bereiche für Chat Message gelten auch hier.Note: There are no special permission scopes in this scenario since the request is part of chatMessage; scopes for chatMessage apply here as well.

POST https://graph.microsoft.com/beta/teams/teamId/channels/channelId/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"
        }
    ]
}

AntwortResponse

HTTP/1.1 200 OK

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#teams('teamId')/channels('channelId')/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: vollständiger MigrationsmodusStep Four: Complete migration mode

Nachdem der Nachrichten Migrationsprozess abgeschlossen ist, werden sowohl das Team als auch der Kanal mithilfe der-Methode aus dem Migrationsmodus genommen completeMigration .Once the message migration process has completed, both the team and channel are taken out of migration mode using the completeMigration method. In diesem Schritt werden die Team-und Kanal Ressourcen für die allgemeine Verwendung durch Teammitglieder geöffnet.This step opens the team and channel resources for general use by team members. Die Aktion ist an die team Instanz gebunden.The action is bound to the team instance.

Anforderung (Ende Team Migrationsmodus)Request (end team migration mode)

POST https://graph.microsoft.com/beta/teams/teamId/completeMigration

AntwortResponse

HTTP/1.1 204 NoContent

Request (End Channel-Migrationsmodus)Request (end channel migration mode)

POST https://graph.microsoft.com/beta/teams/teamId/channels/channelId/completeMigration

AntwortResponse

HTTP/1.1 204 NoContent

FehlerantwortError response

400 Bad Request
  • Aktion mit dem Namen "a" team oder " channel nicht in" aufgerufen migrationMode .Action called on a team or channel that is not in migrationMode.

Schritt 5: Hinzufügen von TeammitgliedernStep Five: Add team members

Sie können ein Mitglied zu einem Team hinzufügen, indem Sie die Benutzeroberfläche von Teams oder die Add Member -API von Microsoft Graph verwenden:You can add a member to a team using the Teams UI or Microsoft Graph Add member API:

Request (Add Member)Request (add member)

POST https://graph.microsoft.com/beta/teams/{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}"
}

AntwortResponse

HTTP/1.1 204 No Content

Tipps und zusätzliche InformationenTips and additional information

  • Sie können Nachrichten von Benutzern importieren, die sich nicht in Microsoft Teams befinden.You can import messages from users who are not in Teams. Hinweis: Nachrichten, die für Benutzer importiert werden, die nicht im Mandanten vorhanden sind, können während der öffentlichen Vorschau nicht in den Teams-Client-oder Compliance-Portalen durchsucht werden.NOTE: Messages imported for users not present in the tenant will not be searchable in the Teams client or compliance portals during Public Preview.

  • Nachdem die completeMigration Anforderung gestellt wurde, können Sie keine weiteren Nachrichten in das Team importieren.Once the completeMigration request is made, you cannot import further messages into the team.

  • Teammitglieder können dem neuen Team nur hinzugefügt werden, nachdem die completeMigration Anforderung eine erfolgreiche Antwort zurückgegeben hat.Team members can only be added to the new team after the completeMigration request has returned a successful response.

  • Drosselung: Nachrichten werden mit 5 RPS pro Kanal importiert.Throttling: Messages import at 5 RPS per channel.

  • Wenn Sie eine Korrektur an den Migrations Ergebnissen vornehmen müssen, müssen Sie das Team löschen und die Schritte wiederholen, um das Team zu erstellen und die Nachrichten erneut zu migrieren.If you need to make a correction to the migration results, you need to delete the team and repeat the steps to create the team and channel and re-migrate the messages.

Hinweis

Derzeit sind Inline Bilder die einzige Art von Medien, die vom API-Schema für die Import Nachrichten unterstützt wird.Currently, inline images are the only type of media supported by the import message API schema.

Inhaltsbereich importierenImport content scope
Im BereichIn-scope Derzeit außerhalb des BereichsCurrently out-of-scope
Team-und Kanal NachrichtenTeam and channel messages 1:1-und Gruppenchatnachrichten1:1 and group chat messages
Erstellter Zeitpunkt der ursprünglichen NachrichtCreated time of the original message Private KanälePrivate channels
Inline Bilder als Teil der NachrichtInline images as part of the message Unter ErwähnungenAt mentions
Links zu vorhandenen Dateien in SpO/OneDriveLinks to existing files in SPO/OneDrive ReaktionenReactions
Nachrichten mit Rich-TextMessages with rich text VideosVideos
Nachrichten Antwort KetteMessage reply chain AnnouncementsAnnouncements
Verarbeitung mit hohem DurchsatzHigh throughput processing CodeausschnitteCode snippets
Adaptive KartenAdaptive cards
StickerStickers
EmojisEmojis
AnführungszeichenQuotes
Cross-Posts zwischen KanälenCross posts between channels