Importer des messages de plateforme tierces pour les équipes à l’aide de Microsoft Graph
Avec le graphique Microsoft, vous pouvez migrer l'historique des messages et les données des utilisateurs d'un système externe vers un canal Teams. En permettant la recréation d'une hiérarchie de messagerie d'une plateforme tierce au sein de Teams, les utilisateurs peuvent poursuivre leurs communications de manière transparente et sans interruption.
Notes
À l’avenir, Microsoft pourra exiger que vous ou vos clients payiez des frais supplémentaires en fonction du volume de données importées.
Aperçu des importations
À un niveau élevé, le processus d'importation se compose des éléments suivants :
- Créer une équipe avec un horodatage de retour dans le temps.
- Créer un canal avec un horodatage de retour dans le temps.
- Importation de messages externes datés dans le temps.
- Compléter le processus de migration des équipes et des canaux.
- Ajouter des membres de l'équipe.
Configuration requise
Analyser et préparer les données des messages
- Passez en revue les données tierces pour déterminer ce qui est migré.
- Extraire les données sélectionnées du système de conversation tiers.
- Mettez en correspondance la structure de conversation de la tierce partie avec la structure de Teams.
- Convertissez les données d'importation dans le format nécessaire à la migration.
Configurer votre client Microsoft 365
- Vérifiez qu’il existe un locataire Microsoft 365 pour les données d’importation. Pour plus d’informations sur la configuration d’une location Microsoft 365 pour Teams, consultez Préparer votre locataire Microsoft 365.
- Assurez-vous que les membres de l’équipe se trouvent dans l’ID Microsoft Entra. Pour plus d’informations, consultez Ajouter un nouvel utilisateur à l’ID Microsoft Entra.
Étape 1 : Créer une équipe
Puisque vous migrez des données existantes, le maintien des horodatages originaux des messages et la prévention de l'activité de messagerie pendant le processus de migration sont essentiels pour recréer le flux de messages existant de l'utilisateur dans Teams. Cet objectif est atteint de la manière suivante :
Créez une nouvelle équipe avec un horodatage rétroactif en utilisant la
createdDateTime
propriété de ressource de l'équipe. Placez la nouvelle équipe enmigration mode
, un état spécial qui restreint les utilisateurs de la plupart des activités au sein de l'équipe jusqu'à ce que le processus de migration soit terminé. Incluez l'attributteamCreationMode
instance avec la valeur dansmigration
la requête POST pour identifier explicitement la nouvelle équipe comme étant créée pour la migration.
Notes
Le createdDateTime
champ est rempli uniquement pour les instances d’une équipe ou d’un canal qui sont migrées.
Autorisation
ScopeName | DisplayName | Description | Type | Consentement de l'administration ? | Entités/API couvertes |
---|---|---|---|---|---|
Teamwork.Migrate.All |
Gérer la migration vers Microsoft Teams | Création et gestion des ressources pour la migration vers Teams. | Application uniquement | Oui | POST /teams |
Demande (créer une équipe dans l'état de migration)
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"
}
Réponse
HTTP/1.1 202 Accepted
Location: /teams/{team-id}/operations/{operation-id}
Content-Location: /teams/{team-id}
Message d’erreur
400 Bad Request
Vous pouvez recevoir le message d'erreur dans les scénarios suivants :
- Si
createdDateTime
est défini pour l’avenir. - Si
createdDateTime
est correctement spécifiéteamCreationMode
, mais l'attribut d'instance est manquant ou a une valeur invalide.
Étape 2 : Créer un canal
La création d'un canal pour les messages importés est similaire à la création d'un canal d'équipe :
Créer un nouveau canal avec un horodatage rétroactif en utilisant la
createdDateTime
propriété de ressource du canal. Placez le nouveau canal enmigration mode
, un état spécial qui restreint les utilisateurs de la plupart des activités de conversation dans le canal jusqu'à ce que le processus de migration soit terminé. Incluez l'attributchannelCreationMode
instance avec la valeur dansmigration
la requête POST pour identifier explicitement la nouvelle équipe comme étant créée pour la migration.
Autorisation
ScopeName | DisplayName | Description | Type | Consentement de l'administration ? | Entités/API couvertes |
---|---|---|---|---|---|
Teamwork.Migrate.All |
Gérer la migration vers Microsoft Teams | Création et gestion des ressources pour la migration vers Teams. | Application uniquement | Oui | POST /teams |
Demande (créer un canal en état de migration)
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"
}
Réponse
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
}
Message d’erreur
400 Bad Request
Vous pouvez recevoir le message d'erreur dans les scénarios suivants :
- Si
createdDateTime
est défini pour l’avenir. - Si
createdDateTime
le produit est correctementchannelCreationMode
spécifié mais que l'attribut d'instance est absent ou a une valeur non valide.
Étape 3 : Importer des messages
Une fois l’équipe et le canal créés, vous pouvez commencer à envoyer des messages de retour dans le temps à l’aide des createdDateTime
clés et from
dans le corps de la demande.
Notes
- Les messages importés avec
createdDateTime
une date antérieure à celle du fil de messages ne sont pascreatedDateTime
pris en charge. -
createdDateTime
doit être unique pour tous les messages d'un même fil. -
createdDateTime
prend en charge les horodatages avec une précision de l'ordre de la milliseconde. Par exemple, si la valeur du message de demande entrant estcreatedDateTime
fixée à 2020-09-16T05:50:31.0025302Z, elle sera convertie en 2020-09-16T05:50:31.002Z lorsque le message sera ingéré.
Demande (message POST en texte seul)
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"
}
}
Réponse
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":[
]
}
Message d’erreur
400 Bad Request
Demande (POST un message avec une image en ligne)
Notes
- Il n'y a pas d'autorisations spéciales dans ce scénario, car la demande fait partie de l'application
chatMessage
. - Les champs d'application
chatMessage
s'appliquent ici.
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"
}
]
}
Réponse
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": []
}
Étape 4 : Terminer le mode de migration
Une fois le processus de migration de message terminé, l’équipe et le canal sont sortis du mode de migration à l’aide de la completeMigration
méthode . Cette étape ouvre les ressources de l'équipe et du canal pour une utilisation générale par les membres de l'équipe. L'action est liée à team
l'instance. Avant que l'équipe ne termine, tous les canaux doivent être sortis du mode de migration.
Demande (mode de migration de fin de canal)
POST https://graph.microsoft.com/v1.0/teams/team-id/channels/channel-id/completeMigration
Réponse
HTTP/1.1 204 NoContent
Demande (fin du mode de migration des équipes)
POST https://graph.microsoft.com/v1.0/teams/team-id/completeMigration
Réponse
HTTP/1.1 204 NoContent
Action appelée sur un team
ou channel
qui n’est pas dans migrationMode
.
Étape 5 : Ajouter des membres d’équipe
Vous pouvez ajouter un membre à une équipe en utilisant l'interface utilisateur Teams ou l'API d'ajout de membre du graphique Microsoft :
Demande (ajouter un membre)
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}"
}
Réponse
HTTP/1.1 204 No Content
Conseils et informations supplémentaires
Une fois la demande
completeMigration
effectuée, vous ne pouvez pas importer d’autres messages dans l’équipe.Vous ne pouvez ajouter des membres de l'équipe à la nouvelle équipe qu'après que la
completeMigration
demande a renvoyé une réponse positive.Limitation : Importation des messages à cinq RPS par canal.
Si vous devez apporter une correction aux résultats de la migration, vous devez supprimer l’équipe, répéter les étapes pour créer l’équipe et le canal, puis migrer à nouveau les messages.
Notes
Les images inline sont le seul type de média pris en charge par le schéma d’API de message d’importation.
Importation de la portée du contenu
Le tableau suivant présente l'étendue du contenu :
Dans l’étendue | Hors de l’étendue |
---|---|
Messages de l'équipe et du canal | Messages de conversation 1:1 et de groupe |
Heure de création du message original | Canaux privés |
Images en ligne faisant partie du message | Aux mentions |
Liens vers des fichiers existants dans SPO ou OneDrive | Réactions |
Messages avec du texte enrichi | Vidéos |
Chaîne de réponse aux messages | Annonces |
Traitement à haut débit | Extraits de code |
Autocollants | |
Emojis | |
Devis | |
Postes croisés entre les canaux | |
Canaux partagés |