Importer des messages de plateforme tierces pour les équipes à l’aide de Microsoft GraphImport third-party platform messages to Teams using Microsoft Graph

Important

Les aperçus publics de Microsoft Graph et Microsoft teams sont disponibles pour l’accès anticipé et les commentaires.Microsoft Graph and Microsoft Teams public previews are available for early-access and feedback. Bien que cette version ait subi des tests approfondis, elle n’est pas destinée à être utilisée en production.Although this release has undergone extensive testing, it is not intended for use in production.

Avec Microsoft Graph, vous pouvez migrer l’historique et les données des messages existants d’un système externe vers un canal Teams.With Microsoft Graph, you can migrate users' existing message history and data from an external system into a Teams channel. En activant la récréation d’une hiérarchie de messagerie de plateforme tierce dans Teams, les utilisateurs peuvent continuer leurs communications de manière transparente et continuer sans interruption.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.

Vue d’ensemble de l’importationImport overview

À un niveau élevé, le processus d’importation se compose des éléments suivants :At a high level, the import process consists of the following:

  1. Créer une équipe avec un horodatage à l’arrièreCreate a team with a back-in-time timestamp
  2. Créer un canal avec un horodatage à la date d’expirationCreate a channel with a back-in-time timestamp
  3. Importer des messages à l’arrière--Import external back-in-time dated messages
  4. Effectuer le processus de migration d’équipe et de canalComplete the team and channel migration process
  5. Ajouter des membres de l’équipeAdd team members

Conditions requisesNecessary requirements

Analyser et préparer les données de messageAnalyze and prepare message data

✔ Passer en revue les données tierces pour déterminer les éléments qui seront migrés.✔ Review the third-party data to decide what will be migrated.
✔ Extraire les données sélectionnées du système de conversation tiers.✔ Extract the selected data from the third-party chat system.
✔ Convertir les données d’importation au format requis pour la migration.✔ Convert import data into format needed for migration.
✔ Mapper la structure de conversation tierce à la structure Teams.✔ Map the third-party chat structure to the Teams structure.

Configuration de votre client Office 365Set up your Office 365 tenant

✔ Vous assurer qu’un client Office 365 existe pour les données d’importation.✔ Ensure that an Office 365 tenant exists for the import data. Pour plus d’informations sur la configuration d’une location Office 365 pour Teams, reportez-vousà la rubrique prepare Your Office 365 client.For more information on setting up an Office 365 tenancy for Teams, see, Prepare your Office 365 tenant.
✔ Vous assurer que les membres de l’équipe sont dans Azure Active Directory (AAD).✔ Make sure that team members are in Azure Active Directory (AAD). Pour plus d’informations, consultez la rubrique Ajouter un nouvel utilisateur à Azure Active Directory.For more information see Add a new user to Azure Active Directory.

Étape 1 : créer une équipeStep One: Create a team

Étant donné que les données existantes sont migrées, il est essentiel de conserver les estampilles du message d’origine et d’empêcher l’activité de messagerie pendant le processus de migration de recréer le flux de messages existant de l’utilisateur dans Teams.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. Pour ce faire, procédez comme suit :This is achieved as follows:

  1. Créer une nouvelle équipe avec un horodatage à l’arrière-dernière à l’aide de la propriété de ressource d’équipe createdDateTime .Create a new team with a back-in-time timestamp using the team resource createdDateTime property.

  2. Placez la nouvelle équipe dans migration mode , un état spécial qui barre les utilisateurs de la plupart des activités au sein de l’équipe jusqu’à ce que le processus de migration soit terminé.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. Incluez l' teamCreationMode attribut instance avec la migration valeur de la requête post pour identifier explicitement la nouvelle équipe comme étant créée pour la migration.Include the teamCreationMode instance attribute with the migration value in the POST request to explicitly identify the new team as being created for migration.

AutorisationsPermissions

ScopeNameScopeName DisplayNameDisplayName DescriptionDescription TypeType Consentement de l’administrateur ?Admin Consent? Entités/API couvertesEntities/APIs covered
Teamwork.Migrate.All Gérer la migration vers Microsoft teamsManage migration to Microsoft Teams Création, gestion de ressources pour la migration vers Microsoft teamsCreating, managing resources for migration to Microsoft Teams Application uniquementApplication-only OuiYes POST /teams

Demande (créer une équipe dans l’état de migration)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.067Z"
}

RéponseResponse

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

Messages d’erreurError messages

400 Bad Request
  • createdDateTime défini pour le futur.createdDateTime set for future.
  • createdDateTime correctement spécifié, mais l' teamCreationMode attribut instance est manquant ou sa valeur n’est pas valide.createdDateTime correctly specified, but teamCreationMode instance attribute is missing or set to invalid value.

Étape 2 : créer un canalStep Two: Create a channel

La création d’un canal pour les messages importés est similaire au scénario créer une équipe :Creating a channel for the imported messages is similar to the create team scenario:

  1. Créez un canal avec un horodatage à l’arrière-dernière à l’aide de la propriété Channel Resource createdDateTime .Create a new channel with a back-in-time timestamp using the channel resource createdDateTime property.

  2. Placez le nouveau canal dans migration mode , un état spécial qui barre les utilisateurs de la plupart des activités de conversation au sein du canal jusqu’à ce que le processus de migration soit terminé.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. Incluez l' channelCreationMode attribut instance avec la migration valeur de la requête post pour identifier explicitement la nouvelle équipe comme étant créée pour la migration.Include the channelCreationMode instance attribute with the migration value in the POST request to explicitly identify the new team as being created for migration.

AutorisationsPermissions

ScopeNameScopeName DisplayNameDisplayName DescriptionDescription TypeType Consentement de l’administrateur ?Admin Consent? Entités/API couvertesEntities/APIs covered
Teamwork.Migrate.All Gérer la migration vers Microsoft teamsManage migration to Microsoft Teams Création, gestion de ressources pour la migration vers Microsoft teamsCreating, managing resources for migration to Microsoft Teams Application uniquementApplication-only OuiYes POST /teams

Demande (créer un canal dans l’état de migration)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.067Z"
}

RéponseResponse

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

Message d’erreurError message

400 Bad Request
  • createdDateTime défini pour le futur.createdDateTime set for future.
  • createdDateTime correctement spécifié mais l' channelCreationMode attribut instance est manquant ou sa valeur n’est pas valide.createdDateTime correctly specified but channelCreationMode instance attribute is missing or set to invalid value.

Étape 3 : importer des messagesStep Three: Import messages

Après avoir créé l’équipe et le canal, vous pouvez commencer à envoyer des messages à l’heure à l’aide des createdDateTime from touches et dans le corps de la demande.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.

Demande (POST-message en texte seul)Request (POST message that is text-only)

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

{
    "replyToId": null,
    "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": "Hello World"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}

RéponseResponse

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": "Hello World"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}

Demande (publier un message avec l’image insérée)Request (POST a message with inline `image)

Remarque: il n’existe pas d’étendues d’autorisation spéciales dans ce scénario, car la demande fait partie de collectionchatmessage ; les étendues pour Collectionchatmessage s’appliquent également ici.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"
        }
    ]
}

RéponseResponse

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": []
}

Étape 4 : terminer le mode de migrationStep Four: Complete migration mode

Une fois le processus de migration des messages terminé, l’équipe et le canal sont sortis du mode de migration à l’aide de la completeMigration méthode.Once the message migration process has completed, both the team and channel are taken out of migration mode using the completeMigration method. Cette étape ouvre les ressources de l’équipe et du canal pour une utilisation générale par les membres de l’équipe.This step opens the team and channel resources for general use by team members. L’action est liée à l' team instance.The action is bound to the team instance.

Demande (mode fin de migration de l’équipe)Request (end team migration mode)

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

RéponseResponse

HTTP/1.1 204 NoContent

Request (mode de migration de canal de fin)Request (end channel migration mode)

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

RéponseResponse

HTTP/1.1 204 NoContent

Réponse d’erreurError response

400 Bad Request
  • Action appelée sur un team ou channel qui n’est pas dans migrationMode .Action called on a team or channel that is not in migrationMode.

Étape 5 : ajouter des membres de l’équipeStep Five: Add team members

Vous pouvez ajouter un membre à une équipe à l’aide de l’interface utilisateur de teams ou de l’API de membre Add de Microsoft Graph :You can add a member to a team using the Teams UI or Microsoft Graph Add member API:

Demande (ajouter un membre)Request (add member)

POST https://graph.microsoft.com/beta/groups/{id}/members/$ref
Content-type: application/json
Content-length: 30

{
  "@odata.id": "https://graph.microsoft.com/beta/directoryObjects/{id}"
}

RéponseResponse

HTTP/1.1 204 No Content

Conseils et informations supplémentairesTips and additional information

  • Vous pouvez importer des messages à partir d’utilisateurs qui ne sont pas dans Teams.You can import messages from users who are not in Teams.

  • Une fois la completeMigration demande effectuée, vous ne pouvez pas importer d’autres messages dans l’équipe.Once the completeMigration request is made, you cannot import further messages into the team.

  • Les membres d’équipe ne peuvent être ajoutés à la nouvelle équipe qu’une fois que la completeMigration demande a renvoyé une réponse.Team members can only be added to the new team after the completeMigration request has returned a successful response.

  • Limitation : importation de messages à 5 RPS par canal.Throttling: Messages import at 5 RPS per channel.

  • Si vous devez corriger les résultats de la migration, vous devez supprimer l’équipe et répéter les étapes de création de l’équipe et du canal et de la remigration des messages.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.

Notes

Actuellement, les images associées sont le seul type de média pris en charge par le schéma de l’API de message d’importation.Currently, Inline images is the only type of media supported by the import message API schema.

Importer une étendue de contenuImport content scope
Dans l’étendueIn-scope Hors de portéeCurrently out-of-scope
Messages d’équipe et de canalTeam and channel messages 1:1 et messages de conversation de groupe1:1 and group chat messages
Heure de création du message d’origineCreated time of the original message Canaux privésPrivate channels
Images incorporées dans le cadre du messageInline images as part of the message Aux mentionsAt mentions
Liens vers des fichiers existants dans SPO/OneDriveLinks to existing files in SPO/OneDrive RéactionsReactions
Messages avec un texte enrichiMessages with rich text VidéosVideos
Chaîne de réponse aux messagesMessage reply chain AnnoncesAnnouncements
Traitement à haut débitHigh throughput processing Extraits de codeCode snippets
Cartes adaptativesAdaptive cards
AuprèsStickers
EmojisEmojis
FranceQuotes
Billets entre les canauxCross posts between channels