Importowanie danych do Google Chat

Interfejs Google Chat API umożliwia importowanie danych z innych platform do przesyłania wiadomości do Google Chat. Możesz importować istniejące wiadomości, załączniki, reakcje, członkostwa i elementy w pokojach z innych platform komunikacyjnych do odpowiednich zasobów interfejsu Chat API. Aby zaimportować te dane, utwórz pokoje czatu w trybie importowania i zaimportuj dane do tych pokoi.

Poniżej znajdziesz omówienie czynności, które musisz wykonać, by importować dane z użyciem przestrzeni trybu importowania:

  1. Sprawdź limity wykorzystania interfejsu API i zaplanuj z wyprzedzeniem
  2. Skonfiguruj autoryzację dla aplikacji Google Chat.
  3. Utwórz pokój w trybie importowania.
  4. Importuj zasoby.
  5. Sprawdź zaimportowane zasoby
  6. Uzgadnianie różnic między zaimportowanymi zasobami z danych źródłowych.
  7. Tryb importu pełnego.
  8. Tworzenie zasobów dotyczących członkostwa

Wymagania wstępne

Python

  • Python 3.6 lub nowszy
  • Narzędzie do zarządzania pakietami pip
  • Najnowsze biblioteki klienta Google dla języka Python. Aby je zainstalować lub zaktualizować, uruchom w interfejsie wiersza poleceń to polecenie:

    pip3 install --upgrade google-api-python-client google-auth
    
  • Aplikacja do obsługi czatu. Informacje o tym, jak utworzyć aplikację Google Chat, znajdziesz w artykule Tworzenie aplikacji do obsługi czatu.

  • Autoryzacja dla aplikacji Google Chat została skonfigurowana. Aplikacja Google Chat musi mieć uprawnienia obejmujące całą domenę we wszystkich domenach, do których importuje treści. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji do obsługi czatu.

Przejrzyj limity wykorzystania interfejsu API i planuj z wyprzedzeniem

Czas potrzebny na importowanie danych do Google Chat może się znacznie różnić w zależności od ilości zasobów Google Chat do zaimportowania. Zanim to zrobisz, sprawdź limity wykorzystania aplikacji do obsługi czatu oraz ilość danych, które mają zostać zaimportowane ze źródłowej platformy do obsługi wiadomości.

Tworzenie pokoju w trybie importowania

Aby utworzyć pokój w trybie importowania, wywołaj metodę create w zasobie Space i ustaw importMode na true. Aby zachować czas utworzenia równoważnego elementu pokoju ze źródłowej platformy do obsługi wiadomości, możesz ustawić createTime pokoju. Ta wartość createTime musi mieć wartość od 1 stycznia 2000 r. do chwili obecnej.

Zanotuj wartość name tworzonego pokoju, aby móc się do niej odwołać w późniejszych krokach podczas importowania treści do pokoju.

Od wywołania metody create aplikacje do obsługi czatu mają 30 dni na zaimportowanie zasobów bez członkostwa do pokoju, do trybu importu i tworzenie zasobów związanych z członkostwem za pomocą zakresu chat.import. Aplikacje do obsługi czatu mogą nadal dodawać wspieranie po 30 dniach za pomocą standardowych zakresów członkostwa w interfejsie Chat API. Jeśli po 30 dniach pokój nadal będzie w trybie importowania, zostanie automatycznie usunięty, przez co będzie niedostępny i nie będzie można go odzyskać. Zaplanuj to z wyprzedzeniem, sprawdzając limity wykorzystania aplikacji Google Chat, aby mieć pewność, że w tym czasie wszystkie zaplanowane zasoby zostaną zaimportowane do Google Chat.

Z przykładu poniżej dowiesz się, jak utworzyć pokój w trybie importowania:

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.
DISCOVERY_SERVICE_URL = 'https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY'

service = build(
    'chat',
    'v1',
    credentials=CREDENTIALS,
    discoveryServiceUrl=DISCOVERY_SERVICE_URL,
)

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)

Zastąp następujące elementy:

  • EMAIL: adres e-mail konta użytkownika, pod które się podszywasz, oraz uprawnienia obejmujące całą domenę.
  • API_KEY: klucz interfejsu API.

Importowanie zasobów

Aby importować zasoby z innych platform do przesyłania wiadomości, musisz utworzyć zasoby Google Chat (takie jak wiadomości, reakcje czy załączniki) w pokoju w trybie importowania. Podczas tworzenia zasobu w pokoju określasz dane z powiązanego zasobu z platformy do wysyłania wiadomości, z której przenosisz dane.

Wiadomości

Aplikacje do obsługi czatu mogą importować wiadomości, korzystając z własnych uprawnień lub w imieniu użytkownika, podszywając się pod inne osoby. (Autorem wiadomości jest konto użytkownika, którego ktoś używa). Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji do obsługi czatu. Aby zaimportować wiadomość do pokoju w trybie importowania, wywołaj metodę create w zasobie Message. Aby zachować czas utworzenia oryginalnej wiadomości ze źródłowej platformy komunikacji, możesz ustawić jej createTime. Ta wartość createTime musi być ustawiona na wartość pomiędzy ustawioną wcześniej godziną utworzenia pokoju a czasem obecnym.

Wiadomości w tym samym pokoju nie mogą zawierać tego samego elementu createTime nawet wtedy, gdy wcześniejsze wiadomości z tym terminem zostaną usunięte.

Wiadomości zawierające adresy URL innych firm w pokojach w trybie importowania nie mogą renderować podglądu linków w Google Chat.

Gdy utworzysz wiadomości w trybie importowania, pokoje nie będą otrzymywać powiadomień ani wysyłać e-maili do żadnych użytkowników, w tym wiadomości zawierających wzmianki o użytkownikach.

Reakcje

Aplikacja do obsługi czatu może importować reakcje na wiadomości przy użyciu interfejsu Chat API. Informacje o metodach zasobów i typach obsługi uwierzytelniania w pokojach w trybie importowania znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Załączniki

Twoja aplikacja do obsługi czatu może przesyłać załączniki za pomocą interfejsu Chat API. Informacje o metodach zasobów i typach obsługi uwierzytelniania w pokojach w trybie importowania znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Subskrypcje historyczne

Historyczne subskrypcje to subskrypcje tworzone dla użytkowników, którzy opuścili już oryginalny pokój na źródłowej platformie do obsługi wiadomości, ale chcesz zachować ich dane w Google Chat. Informacje o dodawaniu nowych użytkowników, gdy pokój nie będzie już w trybie importowania, znajdziesz w artykule Tworzenie zasobu subskrypcji.

W wielu przypadkach, gdy ci historycy członkowie podlegają zasadom przechowywania danych w Google, warto przed zaimportowaniem ich do Google Chat zachować dane (takie jak Wiadomości i reakcje) utworzone przez historyczne osoby członkowskie w pokoju. W trybie importowania pokoju możesz zaimportować do niego historyczne dane o członkostwie, korzystając z metody create dotyczącej zasobu Membership. Aby zachować czas rezygnacji z historycznej subskrypcji, musisz ustawić deleteTime subskrypcji. Godzina rezygnacji musi być precyzyjna, ponieważ wpływa na to, jakie dane należy przechowywać w związku z subskrypcją. Dodatkowo ten parametr deleteTime musi przypadać po sygnaturze czasowej utworzenia pokoju i nie może być przyszłej sygnatury czasowej.

Oprócz deleteTime możesz też ustawić createTime, aby zachować pierwotny czas dołączenia historycznego członkostwa. W przeciwieństwie do deleteTime właściwość createTime jest opcjonalna. Jeśli zasada jest nieskonfigurowana, wartość createTime jest obliczana automatycznie przez odjęcie 1 mikrosekundy od wartości deleteTime. Jeśli jest ustawiony, createTime musi być przed datą deleteTime i musi przypadać przed datą utworzenia pokoju lub później. Te informacje (createTime) nie służą do określania przechowywania danych i nie są widoczne w narzędziach administracyjnych, takich jak konsola administracyjna Google i Google Vault.

Mimo że użytkownik może w różny sposób dołączyć do pokoju w źródłowej platformie do komunikacji i opuścić go (za pomocą zaproszeń, samodzielnie dołączając lub dodając go przez innego użytkownika), w Google Chat te działania są reprezentowane przez pola historyczne członkostwa createTime i deleteTime jako dodane lub usunięte.

Zweryfikuj zaimportowane zasoby

Twoja aplikacja do obsługi czatu może odczytywać i weryfikować zawartość pokoju w trybie importowania, wywołując metodę list w zasobie Message. Możesz odczytać zasoby Reaction i Attachment z pól emojiReactionSummaries i attachment każdej zwróconej wiadomości. Aplikacje do obsługi czatu mogą wywoływać tę metodę w imieniu użytkownika tylko przez podszywanie się pod inne osoby. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji do obsługi czatu.

Aplikacja do obsługi czatu może też odczytywać poszczególne wiadomości w celu weryfikacji, wywołując metodę get w zasobie Message. Aplikacje do obsługi czatu mogą wywoływać tę metodę tylko w celu odczytania własnych wiadomości, korzystając z własnych uprawnień. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji do obsługi czatu.

Aplikacje do obsługi czatu mogą też wyświetlać listę historycznych użytkowników, wywołując metodę list w zasobie Membership. Gdy pokój wyjdzie z trybu importowania, metoda list przestanie udostępniać historyczne informacje o członkostwie. Aplikacje do obsługi czatu mogą wywoływać tę metodę w imieniu użytkownika tylko przez podszywanie się pod inne osoby. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji do obsługi czatu.

Aby odczytać właściwości pokoju w trybie importowania, wywołaj metodę get w zasobie Space. Aplikacje do obsługi czatu mogą wywoływać tę metodę tylko za pomocą własnych uprawnień. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji do obsługi czatu.

Uzgadniaj różnice między zaimportowanymi zasobami z danych źródłowych

Jeśli z powodu zmian w pierwotnym elemencie w czasie importowania nie odpowiada on już elementowi ze źródłowej platformy komunikacyjnej, aplikacje do obsługi czatu mogą wywołać interfejs Chat API, aby zmodyfikować zaimportowany zasób czatu. Jeśli na przykład użytkownik zmodyfikuje wiadomość na źródłowej platformie do obsługi wiadomości po jej utworzeniu w Google Chat, aplikacje do obsługi czatu mogą zaktualizować zaimportowaną wiadomość, tak aby odzwierciedlała aktualną treść oryginalnej wiadomości.

Wiadomości

Aby zaktualizować obsługiwane pola wiadomości w pokoju w trybie importowania, wywołaj metodę update w zasobie Message. Aplikacje do obsługi czatu mogą wywoływać tę metodę tylko przy użyciu tych samych uprawnień, które zostały użyte podczas tworzenia wiadomości. Jeśli podczas tworzenia wiadomości użyty został inny użytkownik, musisz użyć do tego tego samego użytkownika, aby ją zaktualizować.

Aby usunąć wiadomość z pokoju w trybie importowania, wywołaj metodę delete w zasobie Message. Wiadomości w pokoju w trybie importowania nie muszą być usuwane przez ich twórców. Można je usunąć, podszywając się pod dowolnego użytkownika w domenie. Aplikacje do obsługi czatu mogą usuwać tylko własne wiadomości, korzystając z własnych informacji. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji do obsługi czatu.

Reakcje

Aby usunąć reakcję na wiadomość w pokoju w trybie importowania, użyj metody delete w zasobie reactions. Informacje o metodach zasobów i typach obsługi uwierzytelniania w pokojach w trybie importowania znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Załączniki

Aby zaktualizować załączniki do wiadomości w pokoju w trybie importowania, użyj metody upload w zasobie media. Informacje o metodach zasobów i typach uwierzytelniania w pokojach w trybie importowania znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Subskrypcje historyczne

Aby usunąć historyczne członkostwo w pokoju w trybie importowania, użyj metody delete w zasobie Membership. Gdy pokój wyjdzie z trybu importowania, metoda delete nie będzie już umożliwiała usuwania wcześniejszych subskrypcji.

Nie możesz aktualizować danych o historycznej przynależności do pokoju w trybie importowania. Jeśli chcesz poprawić nieprawidłowo zaimportowaną historyczną subskrypcję, musisz ją najpierw usunąć, a następnie utworzyć ponownie, gdy pokój jest nadal w trybie importowania.

Pokoje

Aby zaktualizować obsługiwane pola w przestrzeni trybu importu, użyj metody patch w zasobie spaces.

Aby usunąć pokój w trybie importowania, użyj metody delete w zasobie spaces.

Informacje o metodach zasobów i typach obsługi uwierzytelniania w pokojach w trybie importowania znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Tryb importu ukończenia

Zanim wywołasz metodę completeImport, musisz ukończyć weryfikację i uzgodnienie różnic zasobów. Wyjście z trybu importowania jest nieodwracalne i spowoduje przekształcenie przestrzeni trybu importu w standardową przestrzeń. W Google Chat nie ma wskaźnika, który mógłby przypisać te pokoje do importu danych.

Aby zakończyć tryb importowania i udostępnić pokój użytkownikom, aplikacja Google Chat może wywołać metodę completeImport w zasobie Space. Aplikacje do obsługi czatu mogą wywoływać tę metodę w imieniu użytkownika tylko przez przyjmowanie innej tożsamości. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji do obsługi czatu. Po zakończeniu wykonywania tej metody użytkownik, pod którego ktoś się podszywa, jest dodawany do pokoju jako menedżer pokoju. Metodę należy wywołać w ciągu 30 dni od początkowego wywołania metody create.space. Jeśli spróbujesz wywołać tę metodę po upływie 30 dni, wywołanie zakończy się niepowodzeniem, ponieważ obszar trybu importu zostanie usunięty i nie będzie już dostępny dla aplikacji Google Chat.

Użytkownik, pod którego ktoś się podszywa w metodzie completeImport, nie musi być twórcą pokoju.

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.
DISCOVERY_SERVICE_URL = 'https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY'

service = build(
    'chat',
    'v1',
    credentials=CREDENTIALS,
    discoveryServiceUrl=DISCOVERY_SERVICE_URL,
)

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

print(result)

Zastąp następujące elementy:

Tworzenie zasobów dotyczących członkostwa

Aby dodać użytkowników do pokoju, w którym ukończono tryb importowania, wywołaj metodę create w zasobie Membership. Aplikacje do obsługi czatu mogą nadal korzystać z zakresu chat.import i podszywania się pod inne osoby do wywoływania tej metody w ciągu 30 dni od początkowego wywołania metody create.space. Użytkownik, którego rolę odgrywasz, musi być menedżerem pokoju.

Po upływie 30 dni aplikacje do obsługi czatu będą wymagać dodatkowych zakresów członkostwa, aby wywołać tę metodę.

Zalecamy, aby aplikacje do obsługi czatu utworzyły zasoby dotyczące subskrypcji zaraz po zakończeniu importowania, aby aplikacje do obsługi czatu mogły nadal korzystać z zakresu chat.import przy tworzeniu subskrypcji i zapewniały wszystkim użytkownikom dostęp do zaimportowanego pokoju.