Daten in Google Chat importieren

Mit der Google Chat API können Sie Daten aus Ihren anderen Messaging-Plattformen in Google Chat importieren. Sie können vorhandene Nachrichten, Anhänge, Reaktionen, Mitgliedschaften und Gruppenbereiche von Ihren anderen Kommunikationsplattformen in entsprechende Chat API-Ressourcen importieren. Sie können diese Daten importieren, indem Sie Chatbereiche im Importmodus erstellen und Daten in diese Bereiche importieren.

Im Folgenden finden Sie eine Übersicht über die Schritte zum Importieren von Daten mithilfe eines Importmodus-Bereichs:

  1. API-Nutzungslimits prüfen und vorausplanen
  2. Konfigurieren Sie die Autorisierung für die Chat-App.
  3. Erstellen Sie einen Gruppenbereich im Importmodus.
  4. Ressourcen importieren
  5. Importierte Ressourcen validieren
  6. Vergleichen Sie importierte Ressourcenunterschiede aus Quelldaten.
  7. Importmodus „Vollständig“:
  8. Erstellen Sie Mitgliedschaftsressourcen.

Voraussetzungen

Apps Script

Python

  • Python 3.6 oder höher
  • Das Paketverwaltungstool pip
  • Die aktuellen Google-Clientbibliotheken für Python. Führen Sie den folgenden Befehl in der Befehlszeile aus, um sie zu installieren oder zu aktualisieren:

    pip3 install --upgrade google-api-python-client google-auth
    
  • Eine veröffentlichte Chat-App. Informationen zum Erstellen und Veröffentlichen einer Chat-App finden Sie unter Google Chat-App erstellen.

  • Für die Chat-App konfigurierte Autorisierung. Die Chat-App muss domainweite Befugnisse in allen Domains delegiert werden, in die die App Inhalte importiert. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

API-Nutzungslimits prüfen und vorausplanen

Die erforderliche Zeit für den Import von Daten in Google Chat kann je nach Anzahl der zu importierenden Chat-Ressourcen stark variieren. Prüfen Sie die Nutzungslimits Ihrer Chat-Anwendung und die für den Import aus der Quell-Messaging-Plattform geplante Datenmenge, um einen geschätzten Zeitplan zu ermitteln.

Gruppenbereiche im Importmodus erstellen

Wenn Sie einen Bereich im Importmodus erstellen möchten, rufen Sie die Methode create für die Ressource Space auf und setzen Sie importMode auf true. Um die Erstellungszeit der entsprechenden Gruppenbereichsentität von der Quell-Messaging-Plattform beizubehalten, können Sie den createTime des Gruppenbereichs festlegen. createTime muss auf einen Wert zwischen dem 1. Januar 2000 und dem aktuellen Zeitpunkt festgelegt werden.

Notieren Sie sich die name des von Ihnen erstellten Gruppenbereichs, damit Sie in späteren Schritten beim Importieren von Inhalten in den Gruppenbereich darauf verweisen können.

Ab dem Zeitpunkt des Aufrufs der Methode create haben Chat-Apps 30 Tage Zeit, um Ressourcen in den Gruppenbereich zu importieren, den Importmodus abzuschließen und Mitgliedschaftsressourcen im Bereich chat.import zu erstellen. Chat-Apps können nach 30 Tagen weiterhin Mitgliedschaften mit den standardmäßigen Mitgliedschaftsbereichen der Chat API erstellen. Wenn sich der Gruppenbereich nach 30 Tagen noch im Importmodus befindet, wird er automatisch gelöscht, ist dann nicht mehr zugänglich und kann von der Chat-App nicht wiederhergestellt werden. Prüfen Sie im Voraus die Nutzungslimits Ihrer Chat-App, damit alle geplanten Ressourcen innerhalb dieses Zeitraums in Google Chat importiert werden können.

Das folgende Beispiel zeigt, wie Sie im Importmodus ein Gruppenbereich erstellen:

Apps Script

function createSpaceInImportMode() {
  const space = Chat.Spaces.create({
      spaceType: 'SPACE',
      displayName: 'Import Mode Space',
      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': 'Import Mode Space',
            'importMode': True,
            'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
        }
    )
    .execute()
)

print(result)

Ersetzen Sie Folgendes:

  • EMAIL: die E-Mail-Adresse des Nutzerkontos, das Sie für die domainweite Befugnis ausgeben.

Ressourcen importieren

Wenn Sie Ressourcen von anderen Kommunikationsplattformen importieren möchten, erstellen Sie im Importmodus-Bereich Google Chat-Ressourcen wie Nachrichten, Reaktionen und Anhänge. Wenn Sie eine Ressource im Gruppenbereich erstellen, geben Sie Daten aus der zugehörigen Ressource von der Nachrichtenplattform an, von der Sie migrieren.

Meldungen

Ihre Chat-Apps können Nachrichten mit ihren eigenen Befugnissen oder im Namen eines Nutzers durch Identitätsdiebstahl importieren. Der Nachrichtenautor ist auf das Nutzerkonto mit Identitätsübernahme festgelegt. Weitere Informationen finden Sie unter Chat-Apps autorisieren. Rufen Sie die Methode create für die Ressource Message auf, um eine Nachricht in einen Gruppenbereich im Importmodus zu importieren. Um den Erstellungszeitpunkt der ursprünglichen Nachricht von der Quellnachrichtenplattform beizubehalten, können Sie den createTime der Nachricht festlegen. Für createTime muss ein Wert zwischen der zuvor festgelegten Erstellungszeit des Gruppenbereichs und dem aktuellen Zeitpunkt festgelegt werden.

Nachrichten im selben Bereich dürfen nicht dieselbe createTime enthalten, auch wenn vorherige Nachrichten mit diesem Zeitpunkt gelöscht werden.

Nachrichten mit Drittanbieter-URLs in Gruppenbereichen im Importmodus können keine Linkvorschauen in Google Chat rendern.

Wenn Sie die Nachrichten im Importmodus erstellen, werden Nutzer von Gruppenbereichen weder benachrichtigt noch werden E-Mails an sie gesendet. Das gilt auch für Nachrichten, die Nutzererwähnungen enthalten.

Das folgende Beispiel zeigt, wie Sie eine Nachricht in einem Gruppenbereich im Importmodus erstellen:

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)

Ersetzen Sie Folgendes:

Reaktionen

Ihre Chat-App kann Reaktionen auf Nachrichten mithilfe der Chat API importieren. Informationen zu den Ressourcenmethoden und den unterstützten Authentifizierungsarten in Gruppenbereichen im Importmodus finden Sie unter Chat-Apps autorisieren.

Anhänge

Ihre Chat-App kann mithilfe der Chat API Anhänge hochladen. Informationen zu den Ressourcenmethoden und den unterstützten Authentifizierungsarten in Gruppenbereichen im Importmodus finden Sie unter Chat-Apps autorisieren.

Bisherige Mitgliedschaften

Bisherige Mitgliedschaften sind Mitgliedschaften, die für Nutzer erstellt wurden, die die ursprüngliche Gruppenbereichsentität bereits von der Quell-Messaging-Plattform verlassen haben, deren Daten in Google Chat beibehalten werden sollen. Informationen zum Hinzufügen neuer Mitglieder, nachdem sich der Gruppenbereich nicht mehr im Importmodus befindet, finden Sie unter Mitgliedschaftsressource erstellen.

Wenn diese Mitglieder einer Datenaufbewahrungsrichtlinie in Google unterliegen, sind die Daten (z. B. Nachrichten und Reaktionen), die durch Mitgliedschaften im Verlauf erstellt wurden, in einem Gruppenbereich erhalten, bevor sie in Google Chat importiert werden. Während sich der Gruppenbereich im Importmodus befindet, können Sie diese bisherigen Mitgliedschaften in den Gruppenbereich mit der Methode create für die Ressource Membership importieren. Wenn du die Ausstiegszeit der bisherigen Mitgliedschaft beibehalten möchtest, musst du die deleteTime der Mitgliedschaft festlegen. Dieser Zeitraum muss korrekt sein, da er sich darauf auswirkt, welche Daten für diese Mitgliedschaften aufbewahrt werden. Außerdem muss diese deleteTime nach dem Zeitstempel der Gruppenbereicherstellung liegen und darf kein Zeitstempel in der Zukunft sein.

Zusätzlich zu deleteTime können Sie auch createTime festlegen, um die ursprüngliche Beitrittszeit der bisherigen Mitgliedschaft beizubehalten. Im Gegensatz zu deleteTime ist der createTime optional. Wenn die Richtlinie nicht konfiguriert ist, wird createTime automatisch berechnet, indem von deleteTime 1 Mikrosekunde abgezogen wird. Wenn festgelegt, muss createTime vor deleteTime und am oder nach dem Erstellungszeitpunkt des Gruppenbereichs liegen. Diese createTime-Informationen werden nicht verwendet, um die Datenaufbewahrung zu ermitteln, und sind in Administratortools wie der Admin-Konsole und Google Vault nicht sichtbar.

Es kann zwar mehrere Möglichkeiten geben, wie ein Nutzer einem Bereich in der Quell-Messaging-Plattform beitreten und ihn verlassen kann (über Einladungen, selbst beitreten, durch einen anderen Nutzer hinzugefügt), in Google Chat werden diese Aktionen jedoch alle durch die Felder createTime und deleteTime als entweder hinzugefügt oder entfernt dargestellt.

Das folgende Beispiel zeigt, wie Sie eine Verlaufsmitgliedschaft in einem Importmodus-Bereich erstellen:

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)

Ersetzen Sie Folgendes:

Importierte Ressourcen validieren

Die Chat-App kann den Inhalt eines Gruppenbereichs im Importmodus zurücklesen und validieren, indem sie die Methode list für die Ressource Message aufruft. Sie können die Ressourcen Reaction und Attachment aus den Feldern emojiReactionSummaries und attachment jeder zurückgegebenen Nachricht lesen. Chat-Apps können diese Methode nur im Namen eines Nutzers durch Identitätsübernahme aufrufen. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

Ihre Chat-App kann auch einzelne Nachrichten zur Validierung lesen. Dazu ruft sie die Methode get für die Ressource Message auf. Chat-Apps können diese Methode nur aufrufen, um ihre eigenen Nachrichten zu lesen. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

Chat-Apps können auch bisherige Mitgliedschaften auflisten, indem Sie die Methode list für die Ressource Membership aufrufen. Nachdem der Importmodus des Gruppenbereichs beendet wurde, sind bisherige Mitgliedschaften durch die Methode list nicht mehr verfügbar. Chat-Apps können diese Methode nur im Namen eines Nutzers durch Identitätsdiebstahl aufrufen. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

Sie können die Attribute eines Gruppenbereichs im Importmodus lesen, indem Sie die Methode get für die Ressource Space aufrufen. Chat-Apps können diese Methode nur mit ihrer eigenen Autorisierung aufrufen. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

Unterschiede zwischen importierten Ressourcen und Quelldaten ausgleichen

Wenn eine importierte Ressource aufgrund von Änderungen an der ursprünglichen Entität während des Imports nicht mehr mit der ursprünglichen Entität der Quellnachrichtenplattform übereinstimmt, können Chat-Apps die Chat API aufrufen, um die importierte Chatressource zu ändern. Wenn ein Nutzer beispielsweise eine Nachricht auf der Quell-Messaging-Plattform bearbeitet, nachdem diese Nachricht in Chat erstellt wurde, können Chat-Apps die importierte Nachricht so aktualisieren, dass sie dem aktuellen Inhalt der ursprünglichen Nachricht entspricht.

Meldungen

Zum Aktualisieren unterstützter Felder in einer Nachricht in einem Gruppenbereich im Importmodus rufen Sie die Methode update für die Ressource Message auf. Chat-Apps können diese Methode nur mit derselben Autorisierung aufrufen, die bei der ursprünglichen Nachrichtenerstellung verwendet wurde. Wenn Sie bei der anfänglichen Nachrichtenerstellung einen Nutzeridentitätswechsel verwendet haben, müssen Sie denselben imitierten Nutzer zum Aktualisieren der Nachricht verwenden.

Wenn Sie eine Nachricht in einem Gruppenbereich im Importmodus löschen möchten, rufen Sie die Methode delete für die Ressource Message auf. Nachrichten in einem Gruppenbereich im Importmodus müssen nicht vom ursprünglichen Nachrichtenersteller gelöscht werden. Sie können gelöscht werden, indem Sie einen beliebigen Nutzer in der Domain ausgeben. Chat-Apps können ihre eigenen Nachrichten nur mit ihrer eigenen Autorisierung löschen. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

Reaktionen

Verwenden Sie die Methode delete für die Ressource reactions, um eine Reaktion für eine Nachricht in einem Gruppenbereich im Importmodus zu löschen. Informationen zu den Ressourcenmethoden und den unterstützten Authentifizierungsarten in Gruppenbereichen im Importmodus finden Sie unter Chat-Apps autorisieren.

Anhänge

Verwenden Sie die Methode upload für die Ressource media, um Anhänge für eine Nachricht in einem Gruppenbereich im Importmodus zu aktualisieren. Informationen zu den Ressourcenmethoden und den unterstützten Authentifizierungstypen in Gruppenbereichen im Importmodus finden Sie unter Chat-Apps autorisieren.

Bisherige Mitgliedschaften

Wenn Sie eine bisherige Mitgliedschaft in einem Gruppenbereich im Importmodus löschen möchten, verwenden Sie die Methode delete für die Ressource Membership. Nachdem der Importmodus eines Gruppenbereichs beendet wurde, können Sie mit der Methode delete keine bisherigen Mitgliedschaften mehr löschen.

Sie können bisherige Mitgliedschaften in einem Gruppenbereich im Importmodus nicht aktualisieren. Wenn Sie eine falsch importierte bisherige Mitgliedschaft korrigieren möchten, müssen Sie sie zuerst löschen und dann neu erstellen, während sich der Bereich noch im Importmodus befindet.

Gruppenbereiche

Verwenden Sie die Methode patch für die Ressource spaces, um unterstützte Felder in einem Gruppenbereich im Importmodus zu aktualisieren.

Verwenden Sie die Methode delete für die Ressource spaces, um einen Gruppenbereich im Importmodus zu löschen.

Informationen zu den Ressourcenmethoden und den unterstützten Authentifizierungsarten in Gruppenbereichen im Importmodus finden Sie unter Chat-Apps autorisieren.

Importmodus abschließen

Bevor Sie die Methode completeImport aufrufen, muss die Validierung und der Abgleich der Ressourcenunterschiede abgeschlossen sein. Das Beenden eines Gruppenbereichs aus dem Importmodus kann nicht rückgängig gemacht werden und der Importmodus wird in einen normalen Bereich umgewandelt. Es gibt in Chat keinen Indikator, der diese Gruppenbereiche einem Datenimport zuordnet.

Um den Importmodus abzuschließen und den Gruppenbereich für Nutzer zugänglich zu machen, kann die Chat-App die Methode completeImport für die Ressource Space aufrufen. Chat-Apps können diese Methode nur durch Identitätsübernahme im Namen eines Nutzers aufrufen. Weitere Informationen finden Sie unter Chat-Apps autorisieren. Der Nutzer mit der Identität wird dem Gruppenbereich nach Abschluss dieser Methode als Administrator des Gruppenbereichs hinzugefügt. Diese Methode muss innerhalb von 30 Tagen nach dem anfänglichen create.space-Methodenaufruf aufgerufen werden. Wenn Sie versuchen, diese Methode nach Ablauf der 30 Tage aufzurufen, führt der Aufruf zu Fehlern, da der Bereich im Importmodus gelöscht wird und für die Chat-App nicht mehr zugänglich ist.

Der Nutzer, dessen Identität in der Methode completeImport übernommen wurde, muss nicht der Ersteller des Gruppenbereichs sein.

Das folgende Beispiel zeigt, wie Sie den Importmodus abschließen:

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)

Ersetzen Sie Folgendes:

Mitgliedschaftsressourcen erstellen

Wenn Sie einem Gruppenbereich mit abgeschlossenem Importmodus Nutzermitgliedschaften hinzufügen möchten, rufen Sie die Methode create für die Ressource Membership auf. Chat-Apps können innerhalb von 30 Tagen nach dem ersten Aufruf der create.space-Methode weiterhin den Bereich chat.import und die Nutzeridentität verwenden, um diese Methode aufzurufen. Der Nutzer, dessen Identität gestohlen wurde, muss ein Administrator des Gruppenbereichs sein.

Nach Ablauf der 30 Tage sind für den Aufruf dieser Methode Chat-Apps zusätzliche Mitgliedschaftsbereiche erforderlich.

Chat-Apps sollten Mitgliedschaftsressourcen sofort nach Abschluss des Imports erstellen, damit Chat-Apps den Bereich chat.import weiterhin zum Erstellen von Mitgliedschaften verwenden und allen Mitgliedern Zugriff auf den importierten Gruppenbereich gewähren können.