Importer des données dans Google Chat

L'API Google Chat vous permet d'importer les données de vos autres plates-formes de messagerie dans Google Chat. Vous pouvez importer des messages, des pièces jointes, des réactions, des adhésions et des entités d'espaces existants depuis vos autres plates-formes de messagerie vers les ressources de l'API Chat correspondantes. Vous pouvez importer ces données en créant des espaces Chat en mode importation et en y important des données. Une fois le processus terminé, ces espaces deviennent des espaces Chat standards.

Voici un aperçu du processus d'importation complet :

  1. Planifier votre importation
  2. Configurer les autorisations pour l'application Chat
  3. Créer un espace en mode importation
  4. Importer des ressources
  5. Valider les ressources importées
  6. Synchroniser les différences de ressources importées avec les données sources
  7. Mode d'importation complet
  8. Accorder l'accès à l'espace après le mode importation
  9. Dépannage

Prérequis

Apps Script

Python

Planifier l'importation

Planifiez en conséquence la quantité de données à importer, comprenez comment les limites d'utilisation et les quotas peuvent avoir un impact sur le processus d'importation, et tenez compte des types d'espaces Chat compatibles lors de l'importation vers un nouvel espace.

Examiner les limites d'utilisation de l'API

Le temps nécessaire pour importer des données dans Chat peut varier considérablement en fonction de la quantité de ressources Chat à importer. Consultez les limites d'utilisation de votre application Chat et la quantité de données planifiée pour l'importation depuis la plate-forme de messagerie source afin de déterminer un calendrier estimé.

Lorsque vous importez des messages dans un espace, nous vous recommandons de répartir les appels à la méthode messages.create() sur différents fils de discussion.

Identifier les espaces compatibles à importer

Le mode d'importation n'est compatible qu'avec les SpaceType de SPACE et GROUP_CHAT. Il n'est pas compatible avec DIRECT_MESSAGE. Pour en savoir plus, consultez la documentation sur SpaceType.

Créer un espace en mode importation

Pour créer un espace en mode importation, appelez la méthode create sur la ressource Space et définissez importMode sur true.

Lorsque vous créez l'espace en mode importation, tenez compte des points suivants.

  • Date et heure : n'oubliez pas que le mode importation doit être terminé sous 30 jours. Si l'espace est toujours en mode importation au bout de 30 jours à compter de l'appel de la méthode spaces.create(), il est automatiquement supprimé, et devient inaccessible et irrécupérable.
    • N'utilisez pas la valeur du champ createTime pour suivre l'expiration du délai de 30 jours. Ce n'est pas toujours la même chose que lorsque vous appelez la méthode spaces.create(). Lorsque vous utilisez le mode d'importation, le champ createTime peut être défini sur l'horodatage historique à partir duquel l'espace a été créé dans la source afin de préserver l'heure de création d'origine.
  • Nom de la ressource de l'espace (name) : identifiant unique utilisé pour récupérer des informations sur l'espace spécifique et référencé lors des étapes ultérieures lors de l'importation de contenu dans l'espace.

Pour conserver l'heure de création de l'entité espace équivalente de la plate-forme de messagerie source, vous pouvez définir le createTime de l'espace. Cette valeur createTime doit être définie sur une valeur comprise entre le 1er janvier 2000 et le moment présent.

Pour créer un espace externe en mode importation, définissez externalUserAllowed sur true. Une fois l'importation terminée, vous pouvez ajouter des utilisateurs externes.

L'exemple suivant montre comment créer un espace en mode importation:

Apps Script

function createSpaceInImportMode() {
  const space = Chat.Spaces.create({
      spaceType: 'SPACE',
      displayName: 'DISPLAY_NAME',
      importMode: true,
      createTime: (new Date('January 1, 2000')).toJSON()
  });
  console.log(space.name);
}

Python

"""Create a space in import mode."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

result = (
    service.spaces()
    .create(
        body={
            'spaceType': 'SPACE',
            'displayName': 'DISPLAY_NAME',
            'importMode': True,
            'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
        }
    )
    .execute()
)

print(result)

Remplacez les éléments suivants :

  • EMAIL : adresse e-mail du compte utilisateur que vous usurpez avec une autorité au niveau du domaine.
  • DISPLAY_NAME : nom de l'espace créé en mode importation. Il doit s'agir d'un nom unique pour l'espace qui s'affiche auprès des utilisateurs de Chat. Nous vous recommandons d'utiliser le même nom à afficher que celui de l'espace à partir duquel vous importez des données.

Importer des ressources

Pour importer des ressources à partir d'autres plates-formes de messagerie, vous devez créer des ressources Google Chat (comme des messages, des réactions et des pièces jointes) dans l'espace en mode importation. Lorsque vous créez une ressource dans l'espace, vous spécifiez les données de la ressource associée de la plate-forme de messagerie à partir de laquelle vous effectuez la migration.

Messages

Vos applications Chat peuvent importer des messages à l'aide de leur propre autorité ou au nom d'un utilisateur par usurpation d'identité. L'auteur du message est défini sur le compte utilisateur usurpé. Pour en savoir plus, consultez la section Autoriser les applications Chat. Pour importer un message dans un espace en mode importation, appelez la méthode create sur la ressource Message. Pour conserver l'heure de création du message d'origine à partir de la plate-forme de messagerie source, vous pouvez définir le createTime du message. Cette valeur createTime doit être définie sur une valeur comprise entre l'heure de création de l'espace que vous avez définie précédemment et l'heure actuelle.

Les messages d'un même espace ne peuvent pas contenir la même createTime, même si les messages précédents avec cette heure sont supprimés.

Les messages contenant des URL tierces dans les espaces en mode importation ne peuvent pas afficher d'aperçus de liens dans Google Chat.

Lorsque vous créez les messages en mode importation, les espaces n'en avertissent aucun utilisateur et n'en envoient aucun e-mail, y compris les messages contenant des mentions utilisateur.

L'exemple suivant montre comment créer un message dans un espace en mode importation :

Python

"""Create a message in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = (
    service.spaces()
    .messages()
    .create(
        parent=NAME,
        body={
            'text': 'Hello, world!',
            'createTime': f'{datetime.datetime(2000, 1, 2).isoformat()}Z',
        },
    )
    .execute()
)

print(result)

Remplacez les éléments suivants :

Réactions

Votre application Chat peut importer des réactions pour les messages à l'aide de l'API Chat. Pour en savoir plus sur les méthodes de ressources et les types d'authentification compatibles dans les espaces en mode importation, consultez Autoriser les applications Chat.

Pièces jointes

Votre application Chat peut importer des pièces jointes à l'aide de l'API Chat. Pour en savoir plus sur les méthodes de ressources et les types d'authentification compatibles dans les espaces en mode importation, consultez Autoriser les applications Chat. Toutefois, nous vous recommandons vivement d'utiliser l'API Google Drive pour importer les pièces jointes en tant que fichiers Google Drive et de lier les URI des fichiers aux messages respectifs dans les espaces en mode importation. Vous pourrez ainsi importer des pièces jointes depuis d'autres plates-formes de messagerie pour éviter d'atteindre la limite interne de Google Chat pour l'importation de pièces jointes.

Abonnements historiques

Les anciens droits d'accès sont des droits d'accès créés pour les utilisateurs qui ont déjà quitté l'entité d'espace d'origine de la plate-forme de messagerie source, mais que vous souhaitez conserver leurs données dans Chat. Pour savoir comment ajouter des membres une fois que l'espace n'est plus en mode importation, consultez Créer une ressource d'appartenance.

Dans de nombreux cas, lorsque ces membres historiques sont soumis à une règle de conservation des données dans Google, il est préférable de conserver les données (telles que les messages et les réactions) créées par les membres historiques d'un espace avant de les importer dans Chat. Lorsque l'espace est en mode importation, vous pouvez importer ces adhésions historiques dans l'espace à l'aide de la méthode create sur la ressource Membership. Pour conserver la date de départ de l'abonnement historique, vous devez définir le deleteTime de l'abonnement. Cette date de départ doit être exacte, car elle détermine les données à conserver pour ces abonnements. De plus, cet deleteTime doit être postérieur à l'horodatage de création de l'espace et ne doit pas être un code temporel futur.

En plus de deleteTime, vous pouvez également définir createTime pour conserver l'heure d'adhésion d'origine de l'appartenance historique. Contrairement à deleteTime, createTime est facultatif. Si elle n'est pas définie, createTime est calculée automatiquement en soustrayant 1 microseconde de deleteTime. Si cette valeur est définie, createTime doit être antérieur à deleteTime et doit être identique ou postérieure à l'heure de création de l'espace. Ces informations createTime ne sont pas utilisées pour déterminer la conservation des données et ne sont pas visibles dans les outils d'administration tels que la console d'administration Google et Google Vault.

Bien qu'un utilisateur puisse rejoindre et quitter un espace de plusieurs manières dans la plate-forme de messagerie source (par le biais d'invitations, de son propre initiative ou en étant ajouté par un autre utilisateur), dans Chat, ces actions sont toutes représentées par les champs createTime et deleteTime de l'historique des membres comme étant ajoutées ou supprimées.

L'exemple suivant montre comment créer une ancienne appartenance dans un espace en mode importation :

Python

"""Create a historical membership in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
USER = 'users/USER_ID'
result = (
    service.spaces()
    .members()
    .create(
        parent=NAME,
        body={
            'createTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z',
            'deleteTime': f'{datetime.datetime(2000, 1, 4).isoformat()}Z',
            'member': {'name': USER, 'type': 'HUMAN'},
        },
    )
    .execute()
)

print(result)

Remplacez les éléments suivants :

Importer des ressources dans un espace externe

Vous ne pouvez créer un espace externe en mode importation qu'à l'aide des identifiants des utilisateurs de votre organisation Workspace. Cela ne s'applique que lorsque l'espace est en mode importation. Une fois que l'espace a terminé le mode importation, vous pouvez inviter des utilisateurs externes à rejoindre les espaces importés (voir la section sur l'accès) et utiliser leurs identifiants pour appeler l'API Chat.

Valider les ressources importées

Votre application Chat peut lire et valider le contenu d'un espace en mode importation en appelant la méthode list sur la ressource Message. Vous pouvez lire les ressources Reaction et Attachment à partir des champs emojiReactionSummaries et attachment de n'importe quel message renvoyé. Les applications de chat ne peuvent appeler cette méthode qu'au nom d'un utilisateur par emprunt d'identité. Pour en savoir plus, consultez Autoriser des applications Chat.

Votre application Chat peut également lire des messages individuels pour validation en appelant la méthode get sur la ressource Message. Les applications de chat ne peuvent appeler cette méthode que pour lire leurs propres messages en utilisant leur propre autorité. Pour en savoir plus, consultez la section Autoriser les applications Chat.

Les applications de chat peuvent également lister l'historique des adhésions en appelant la méthode list sur la ressource Membership. Une fois que l'espace est sorti du mode importation, la méthode list n'expose plus les adhésions historiques. Les applications de chat ne peuvent appeler cette méthode que pour le compte d'un utilisateur par usurpation d'identité. Pour en savoir plus, consultez Autoriser les applications Chat.

Vous pouvez lire les propriétés d'un espace en mode importation en appelant la méthode get sur la ressource Space. Les applications de chat ne peuvent appeler cette méthode qu'avec leur propre autorité. Pour en savoir plus, consultez la section Autoriser les applications Chat.

Réconcilier les différences entre les ressources importées et les données sources

Si une ressource importée ne correspond plus à l'entité d'origine de la plate-forme de messagerie source en raison de modifications apportées à l'entité d'origine lors de l'importation, les applications Chat peuvent appeler l'API Chat pour modifier la ressource de chat importée. Par exemple, si un utilisateur modifie un message dans la plate-forme de messagerie source après sa création dans Chat, les applications Chat peuvent mettre à jour le message importé afin qu'il reflète le contenu actuel du message d'origine.

Messages

Pour mettre à jour les champs compatibles sur un message dans un espace en mode importation, appelez la méthode update sur la ressource Message. Les applications de chat ne peuvent appeler cette méthode qu'à l'aide de la même autorité que celle utilisée lors de la création initiale du message. Si vous avez utilisé l'usurpation d'identité d'un utilisateur lors de la création initiale du message, vous devez utiliser le même utilisateur usurpé pour mettre à jour ce message.

Pour supprimer un message dans un espace en mode importation, appelez la méthode delete sur la ressource Message. Les messages d'un espace en mode importation n'ont pas besoin d'être supprimés par le créateur d'origine et peuvent être supprimés en usurpant l'identité de n'importe quel utilisateur du domaine. Les applications de chat ne peuvent supprimer leurs propres messages que s'ils disposent de leur propre autorité. Pour en savoir plus, consultez Autoriser les applications Chat.

Réactions

Pour supprimer une réaction à un message dans un espace en mode importation, utilisez la méthode delete sur la ressource reactions. Pour en savoir plus sur les méthodes de ressources et les types d'authentification dans les espaces en mode importation, consultez la section Autoriser les applications Chat.

Pièces jointes

Pour mettre à jour les pièces jointes d'un message dans un espace en mode importation, utilisez la méthode upload sur la ressource media. Pour en savoir plus sur les méthodes de ressources et les types d'authentification dans les espaces en mode importation, consultez la section Autoriser les applications Chat.

Abonnements historiques

Pour supprimer un ancien abonnement dans un espace en mode importation, utilisez la méthode delete sur la ressource Membership. Lorsqu'un espace quitte le mode importation, la méthode delete ne vous permet plus de supprimer l'historique des abonnements.

Vous ne pouvez pas mettre à jour une adhésion historique dans un espace en mode importation. Si vous souhaitez corriger une adhésion historique importée de manière incorrecte, vous devez d'abord la supprimer, puis la recréer lorsque l'espace est toujours en mode importation.

Spaces

Pour mettre à jour les champs compatibles dans un espace en mode importation, utilisez la méthode patch sur la ressource spaces.

Pour supprimer un espace en mode importation, utilisez la méthode delete sur la ressource spaces.

Pour en savoir plus sur les méthodes de ressources et les types d'authentification compatibles dans les espaces en mode importation, consultez la section Autoriser les applications Chat.

Mode d'importation complet

Avant d'appeler la méthode completeImport, vous devez vous assurer que la validation et le rapprochement des différences de ressources sont terminés. Sortir d'un espace en mode importation est un processus irréversible qui convertit l'espace en mode importation en un espace standard. Aucun indicateur dans Chat n'attribue ces espaces à une importation de données.

Notez la date et l'heure auxquelles vous appelez completeImport, le nom de ressource de l'utilisateur ayant effectué l'appel et la réponse renvoyée. Cela peut être utile si vous rencontrez des problèmes et devez les examiner.

Pour terminer le mode importation et rendre l'espace accessible aux utilisateurs, l'application Chat peut appeler la méthode completeImport sur la ressource Space. Les applications de chat ne peuvent appeler cette méthode qu'au nom d'un utilisateur par emprunt d'identité. Pour en savoir plus, consultez la section Autoriser les applications Chat. Une fois cette méthode terminée, l'utilisateur usurpé est ajouté à l'espace en tant que gestionnaire de l'espace. Cette méthode doit être appelée dans les 30 jours suivant l'appel initial de la méthode create.space. Si vous essayez d'appeler cette méthode après 30 jours, l'appel échoue, car l'espace en mode importation est supprimé et n'est plus accessible à l'application Chat.

L'utilisateur usurpé dans la méthode completeImport n'a pas besoin d'être le créateur de l'espace.

L'exemple suivant montre comment utiliser le mode d'importation:

Python

"""Complete import."""

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = service.spaces().completeImport(name=NAME).execute()

print(result)

Remplacez les éléments suivants :

Accorder l'accès à l'espace après le mode importation

Pour permettre aux utilisateurs Chat d'accéder à l'espace récemment importé, les applications Chat peuvent continuer à utiliser le champ d'application chat.import et l'emprunt d'identité des utilisateurs dans les 30 jours suivant l'appel initial de la méthode create.space() pour effectuer les opérations suivantes:

Pour utiliser ces méthodes avec le champ d'application chat.import, l'utilisateur usurpé doit être un administrateur d'espace.

Pour les espaces externes, la méthode create() d'adhésion permet également d'inviter des utilisateurs externes à votre organisation Workspace. Assurez-vous de bien comprendre toutes les limites connues pour les utilisateurs externes.

Dépannage

Si vous rencontrez un problème lors de l'importation d'espaces Chat, consultez les problèmes suivants pour obtenir de l'aide. Si vous rencontrez une réponse d'erreur, prenez-en note (copiez-collez le texte dans un document ou enregistrez une capture d'écran) pour pouvoir vous y référer ultérieurement et le résoudre.

Lorsqu'un espace est importé, CompleteImportSpace se termine avec un état OK.

N'a pas terminé l'importation avant l'expiration du délai de 30 jours

Comme décrit précédemment dans Créer un espace en mode importation, si l'espace est toujours en mode importation au bout de 30 jours à compter de l'appel de la méthode de création, il est automatiquement supprimé, et devient inaccessible et irrécupérable.

Malheureusement, l'espace supprimé n'est plus disponible ni récupérable, et le processus d'importation doit être redémarré.

Rechercher des espaces manquants

Si vous ne parvenez pas à trouver le nouvel espace Chat, consultez le tableau suivant pour trouver la réponse que vous avez reçue de CompleteImportSpace, ainsi que l'explication et la procédure à suivre pour résoudre le problème.

Réponse reçue Étapes de l'enquête Explication Solution
CompleteImportSpace génère une exception et l'appel de GetSpace renvoie PERMISSION_DENIED. Vérifiez la date de création de l'espace dans vos enregistrements. S'il date de plus de 30 jours, il a été automatiquement supprimé. De plus, aucun enregistrement de l'espace importé n'est disponible dans l'outil de gestion des espaces ni dans le journal d'audit. Plus de 30 jours se sont écoulés depuis le début du processus d'importation, et la migration de l'espace n'a pas pu être finalisée. Créez un espace et exécutez à nouveau le processus d'importation.
CompleteImportSpace renvoie OK et l'appel de GetSpace renvoie PERMISSION_DENIED. L'espace importé n'est pas enregistré dans l'outil de gestion de l'espace, mais il apparaît comme supprimé dans le journal d'audit. L'espace a bien été importé, puis supprimé par la suite. Créez un espace et exécutez à nouveau le processus d'importation.