Daten in Google Chat importieren

Mit der Google Chat API können Sie Daten von Ihren anderen Messaging-Plattformen in Google Chat importieren. Sie können vorhandene Nachrichten, Anhänge, Reaktionen, Mitgliedschaften und Gruppenbereichsentitäten von Ihren anderen Nachrichtenplattformen in entsprechende Chat API-Ressourcen importieren. Sie können diese Daten importieren, indem Sie im Importmodus Chatbereiche erstellen und Daten in diese Bereiche importieren. Nach erfolgreichem Abschluss des Vorgangs werden diese Bereiche zu Standard-Chatbereichen.

  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. Inventarunterschiede zu importierten Ressourcen aus den Quelldaten abgleichen:
  7. Importmodus „Abgeschlossen“:
  8. Mitgliedschaftsressourcen erstellen

Voraussetzungen

Apps Script

Python

  • Python 3.6 oder höher
  • Das Paketverwaltungstool pip
  • Die neuesten 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 haben, in die die App Inhalte importiert. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

API-Nutzungslimits überprüfen und vorausplanen

Die für den Import von Daten in Google Chat erforderliche Zeit kann je nach Anzahl der zu importierenden Chat-Ressourcen stark variieren. Damit Sie einen geschätzten Zeitrahmen ermitteln können, sollten Sie sich vorab die Nutzungslimits Ihrer Chat-App und die für den Import aus der Quell-Messaging-Plattform geplanten Datenmenge ansehen.

Gruppenbereich im Importmodus erstellen

Rufen Sie zum Erstellen eines Gruppenbereichs im Importmodus die Methode create für die Ressource Space auf und setzen Sie importMode auf true. Um die Erstellungszeit der entsprechenden Gruppenbereichsentität aus der Quell-Messaging-Plattform beizubehalten, können Sie die createTime des Bereichs festlegen. Für createTime muss ein Wert zwischen dem 1. Januar 2000 und heute 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 Bereich zu importieren, den Importmodus abzuschließen und Mitgliedschaftsressourcen mit dem Bereich chat.import zu erstellen. Chat-Apps können nach 30 Tagen immer noch Mitgliedschaften mit standardmäßigen Chat API-Mitgliedschaftsbereichen erstellen. Wenn sich der Gruppenbereich nach 30 Tagen noch im Importmodus befindet, wird er automatisch gelöscht und ist nicht mehr zugänglich und nicht wiederherstellbar. Prüfen Sie vorab die Nutzungslimits Ihrer Chat-App, damit alle geplanten Ressourcen innerhalb dieses Zeitraums in Chat importiert werden können.

Das folgende Beispiel zeigt, wie Sie im Importmodus einen 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 mit domainweiter Befugnis imitieren.

Ressourcen importieren

Wenn Sie Ressourcen aus anderen Messaging-Plattformen importieren möchten, erstellen Sie im Bereich im Importmodus Google Chat-Ressourcen (z. B. Nachrichten, Reaktionen, Anhänge). Wenn Sie eine Ressource im Gruppenbereich erstellen, geben Sie Daten aus der zugehörigen Ressource aus der Nachrichtenplattform an, von der Sie migrieren.

Meldungen

Ihre Chat-Apps können Nachrichten mit eigenen Befugnissen oder im Namen eines Nutzers durch Identitätsübernahme importieren. (Der Nachrichtenverfasser wird auf das Nutzerkonto festgelegt, dessen Identität gestohlen wurde.) Weitere Informationen finden Sie unter Chat-Apps autorisieren. Rufen Sie zum Importieren einer Nachricht in einen Bereich im Importmodus die Methode create für die Ressource Message auf. Um den Erstellungszeitpunkt der ursprünglichen Nachricht von der Quellplattform für Nachrichten beizubehalten, können Sie den createTime der Nachricht festlegen. Für createTime muss ein Wert festgelegt werden, der zwischen dem zuvor festgelegten Erstellungszeitpunkt des Raums und dem heutigen Zeitpunkt liegt.

Nachrichten im selben Bereich können 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 Linkvorschau in Google Chat rendern.

Wenn Sie die Nachrichten im Importmodus erstellen, werden Nutzer durch Gruppenbereiche nicht benachrichtigt und es werden keine E-Mails an sie gesendet. Dies gilt auch für Nachrichten mit Erwähnungen von Nutzern.

Das folgende Beispiel zeigt, wie Sie eine Nachricht in einem Bereich 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 mithilfe der Chat API Reaktionen auf Nachrichten importieren. Informationen zu den Ressourcenmethoden und Authentifizierungstypen in Gruppenbereichen im Importmodus finden Sie unter Chat-Apps autorisieren.

Anhänge

Ihre Chat-App kann über die Chat API Anhänge hochladen. Informationen zu den Ressourcenmethoden und Authentifizierungstypen in Gruppenbereichen im Importmodus finden Sie unter Chat-Apps autorisieren. Wir empfehlen Ihnen jedoch dringend, die Google Drive API zu verwenden, um Anhänge als Google Drive-Dateien hochzuladen und die Datei-URIs mit den entsprechenden Nachrichten in den Bereichen im Importmodus zu verknüpfen, um Anhänge von anderen Nachrichtenplattformen zu importieren. So vermeiden Sie, dass das interne Limit von Google Chat für das Hochladen von Anhängen erreicht wird.

Bisherige Mitgliedschaften

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

Wenn diese historischen Mitglieder einer Datenaufbewahrungsrichtlinie in Google unterliegen, möchten Sie in vielen Fällen die Daten (z. B. Nachrichten und Reaktionen) beibehalten, die durch historische Mitgliedschaften in einem Gruppenbereich erstellt wurden, bevor Sie sie in Google Chat importieren. Während sich der Bereich im Importmodus befindet, können Sie diese historischen Mitgliedschaften in den Bereich importieren. Dazu verwenden Sie die Methode create für die Ressource Membership. Wenn Sie die Auszeitzeit der bisherigen Mitgliedschaft beibehalten möchten, müssen Sie die deleteTime der Mitgliedschaft festlegen. Dieser Zeitraum muss korrekt sein, da er sich darauf auswirkt, welche Daten für diese Mitgliedschaften aufbewahrt werden. Darüber hinaus muss dieser deleteTime nach dem Zeitstempel für die Erstellung des Gruppenbereichs liegen und darf kein zukünftiger Zeitstempel sein.

Zusätzlich zu deleteTime können Sie auch createTime festlegen, um den ursprünglichen Beitrittszeitpunkt der bisherigen Mitgliedschaft beizubehalten. Im Gegensatz zu deleteTime ist 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 liegen und am oder nach der Erstellungszeit des Gruppenbereichs liegen. Diese createTime-Informationen werden nicht verwendet, um die Datenaufbewahrung festzulegen. Sie sind in Administratortools wie der Admin-Konsole und Google Vault nicht sichtbar.

Es kann zwar mehrere Möglichkeiten geben, wie ein Nutzer einem Gruppenbereich auf der Quell-Messaging-Plattform beitreten und ihn verlassen kann (durch Einladungen, Beitritt oder Hinzufügen eines anderen Nutzers). In Google Chat werden diese Aktionen in den Feldern createTime und deleteTime als hinzugefügt oder entfernt dargestellt.

Das folgende Beispiel zeigt, wie Sie eine bisherige Mitgliedschaft in einem Bereich im Importmodus 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

Ihre Chat-App kann den Inhalt eines Bereichs 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 der 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.

Die Chat-App kann auch einzelne Nachrichten zur Überprüfung lesen, indem sie die Methode get für die Ressource Message aufruft. Chat-Apps können diese Methode nur aufrufen, um ihre eigenen Nachrichten zu lesen, indem sie ihre eigene Berechtigung nutzen. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

Chat-Apps können auch die Methode list für die Ressource Membership aufrufen, um bisherige Mitgliedschaften aufzulisten. Nachdem der Importmodus des Gruppenbereichs beendet wurde, macht die Methode list keine historischen Mitgliedschaften mehr verfügbar. Chat-Apps können diese Methode nur im Namen eines Nutzers durch Identitätsübernahme aufrufen. Weitere Informationen finden Sie unter Chat-Apps autorisieren.

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

Unterschiede zwischen importierten Ressourcen und Quelldaten abgleichen

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 aus 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 Quellplattform für Nachrichten bearbeitet, nachdem sie in Chat erstellt wurde, können Chat-Apps die importierte Nachricht so aktualisieren, dass sie dem aktuellen Inhalt der ursprünglichen Nachricht entspricht.

Meldungen

Rufen Sie zum Aktualisieren unterstützter Felder für eine Nachricht in einem Bereich im Importmodus die Methode update in der Ressource Message auf. Chat-Apps können diese Methode nur mit derselben Berechtigung aufrufen, die bei der anfänglichen Nachrichtenerstellung verwendet wurde. Wenn Sie bei der anfänglichen Nachrichtenerstellung die Nutzeridentität übernommen haben, müssen Sie denselben imitierten Nutzer verwenden, um die Nachricht zu aktualisieren.

Wenn Sie eine Nachricht in einem Bereich im Importmodus löschen möchten, rufen Sie die Methode delete für die Ressource Message auf. Nachrichten in einem Bereich im Importmodus müssen nicht vom ursprünglichen Ersteller der Nachricht gelöscht werden. Sie können gelöscht werden, indem Sie die Identität eines beliebigen Nutzers in der Domain ausgeben. Chat-Apps können nur ihre eigenen Nachrichten löschen, wenn sie ihre eigene Zertifizierungsstelle verwenden. 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 Bereich im Importmodus zu löschen. Informationen zu den Ressourcenmethoden und Authentifizierungstypen 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 Bereich im Importmodus zu aktualisieren. Informationen zu den Ressourcenmethoden und -typen für die Authentifizierung in Gruppenbereichen im Importmodus finden Sie unter Chat-Apps autorisieren.

Bisherige Mitgliedschaften

Verwenden Sie zum Löschen einer früheren Mitgliedschaft in einem Bereich im Importmodus die Methode delete für die Ressource Membership. Nachdem der Importmodus eines Gruppenbereichs beendet wurde, können Sie mit der Methode delete keine historischen Mitgliedschaften mehr löschen.

Eine bisherige Mitgliedschaft in einem Bereich im Importmodus kann nicht aktualisiert werden. 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 zum Aktualisieren unterstützter Felder in einem Bereich im Importmodus die Methode patch für die Ressource spaces.

Verwenden Sie zum Löschen eines Importmodusbereichs die Methode delete für die Ressource spaces.

Informationen zu den Ressourcenmethoden und -typen, die in Gruppenbereichen im Importmodus unterstützt werden, finden Sie unter Chat-Apps autorisieren.

Importmodus abschließen

Bevor Sie die Methode completeImport aufrufen, sollten Sie prüfen, ob die Validierung und der Abgleich der Ressourcenunterschiede abgeschlossen sind. Das Beenden eines Bereichs außerhalb des Importmodus kann nicht rückgängig gemacht werden und wandelt den Bereich im Importmodus in einen regulären Bereich um. In Google Chat gibt es keinen Indikator, der diese Bereiche 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 im Namen eines Nutzers durch Identitätsübernahme aufrufen. Weitere Informationen finden Sie unter Chat-Apps autorisieren. Der Nutzer, dessen Identität gestohlen wurde, wird dem Gruppenbereich nach Abschluss dieser Methode als Bereichsmanager hinzugefügt. Diese Methode muss innerhalb von 30 Tagen nach dem ersten Aufruf der create.space-Methode 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 nicht mehr für die Chat-App zugänglich ist.

Der imitierte Nutzer in der Methode completeImport muss nicht der Ersteller des Gruppenbereichs sein.

Das folgende Beispiel zeigt, wie der Importmodus ausgeführt wird:

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:

Ressourcen für Mitglieder erstellen

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

Nach Ablauf der 30 Tage benötigen Chat-Apps zusätzliche Mitgliedschaftsbereiche, um diese Methode aufzurufen.

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