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:
- API-Nutzungslimits prüfen und vorausplanen
- Konfigurieren Sie die Autorisierung für die Chat-App.
- Erstellen Sie einen Gruppenbereich im Importmodus.
- Ressourcen importieren
- Importierte Ressourcen validieren
- Vergleichen Sie importierte Ressourcenunterschiede aus Quelldaten.
- Importmodus „Vollständig“:
- Erstellen Sie Mitgliedschaftsressourcen.
Voraussetzungen
Apps Script
- Ein Google Workspace-Konto mit Zugriff auf Google Chat.
- Eine veröffentlichte Chat-App. Folgen Sie dieser quickstart, um eine Chat-App zu erstellen.
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:
EMAIL
: die E-Mail-Adresse des Nutzerkontos, das Sie für die domainweite Befugnis ausgeben.SPACE_NAME
: der Name des im Importmodus erstellten Gruppenbereichs.
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:
EMAIL
: die E-Mail-Adresse des Nutzerkontos, das Sie für die domainweite Befugnis ausgeben.SPACE_NAME
: der Name des im Importmodus erstellten Gruppenbereichs.USER_ID
: Die eindeutige ID für den Nutzer.
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:
EMAIL
: die E-Mail-Adresse des Nutzerkontos, das Sie für die domainweite Befugnis ausgeben.SPACE_NAME
: der Name des im Importmodus erstellten Gruppenbereichs.
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.