Importowanie danych do Google Chat

Interfejs Google Chat API umożliwia importowanie do Google Chat danych z innych platform komunikacyjnych. Możesz importować istniejące wiadomości, załączniki, reakcje, subskrypcje i elementy pokoju z innych platform do obsługi wiadomości do odpowiednich zasobów interfejsu Chat API. Możesz zaimportować te dane, tworząc pokoje czatu w trybie importowania i importując dane do tych pokoi. Po pomyślnym zakończeniu tego procesu pokoje te staną się standardowymi pokojami czatu.

  1. Sprawdź limity wykorzystania interfejsów API i planuj z wyprzedzeniem
  2. Skonfiguruj autoryzację aplikacji Google Chat.
  3. Utwórz pokój w trybie importowania.
  4. Importuj zasoby.
  5. Zweryfikuj zaimportowane zasoby
  6. Uzgadniaj zaimportowane zasoby z danymi źródłowymi.
  7. Zakończ tryb importowania.
  8. Utwórz zasoby dla wspierających.

Wymagania wstępne

Google Apps Script

Python

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

    pip3 install --upgrade google-api-python-client google-auth
    
  • Opublikowaną aplikację Google Chat. Aby utworzyć i opublikować aplikację do obsługi czatu, przeczytaj artykuł Tworzenie aplikacji Google Chat.

  • Autoryzacja skonfigurowana dla aplikacji Google Chat. Aplikacja Google Chat musi mieć delegowane uprawnienia w całej domenie we wszystkich domenach, w których importuje treści. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Sprawdzanie limitów wykorzystania interfejsu API i planowanie z wyprzedzeniem

Czas potrzebny na zaimportowanie danych do Google Chat może się znacznie różnić w zależności od liczby zasobów Google Chat do zaimportowania. Planuj z wyprzedzeniem, sprawdzając limity wykorzystania aplikacji Google Chat oraz ilość danych zaplanowanych do zaimportowania ze źródłowej platformy do obsługi wiadomości, aby określić szacunkowy harmonogram.

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 odpowiadającej mu encji ze źródłowej platformy do obsługi wiadomości, możesz ustawić createTime pokoju. Ta właściwość createTime musi mieć wartość z okresu od 1 stycznia 2000 r. do chwili obecnej.

Zanotuj name utworzonego pokoju, aby móc się do niego odwołać w kolejnych krokach podczas importowania treści do pokoju.

Od momentu wywołania metody create aplikacje Google Chat mają 30 dni na zaimportowanie zasobów do pokoju, ukończenie trybu importowania i utworzenie zasobów członkostwa z użyciem zakresu chat.import. Po 30 dniach aplikacje do obsługi czatu mogą nadal tworzyć subskrypcje w standardowych zakresach subskrypcji interfejsu Chat API. Jeśli po 30 dniach pokój nadal będzie w trybie importowania, zostanie automatycznie usunięty, a Ty nie będziesz mieć do niego dostępu i nie będzie go można odzyskać. Planuj z wyprzedzeniem, sprawdzając limity wykorzystania aplikacji Google Chat i upewnij się, że wszystkie zaplanowane zasoby można zaimportować do Google Chat w tym czasie.

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

Google 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)

Zastąp następujące elementy:

  • EMAIL: adres e-mail konta użytkownika, którego używasz z uprawnieniami w całej domenie.

Importuj zasoby

Aby zaimportować zasoby z innych platform do przesyłania wiadomości, musisz utworzyć zasoby Google Chat (takie jak wiadomości, reakcje, załączniki) w pokoju trybu importu. Podczas tworzenia zasobu w pokoju określasz dane z powiązanego zasobu z platformy 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 przez podszywanie się pod inne osoby. (Autorem wiadomości jest konto użytkownika, którego ktoś podszywa się pod inną osobę). Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat. Aby zaimportować wiadomość do pokoju trybu importu, wywołaj metodę create w zasobie Message. Aby zachować czas utworzenia oryginalnej wiadomości z platformy komunikacyjnej, możesz ustawić createTime wiadomości. W polu createTime należy ustawić wartość z okresu między wcześniej ustawionym czasem utworzenia pokoju a godziną bieżącą.

Wiadomości w tym samym pokoju nie mogą zawierać tego samego elementu createTime, nawet jeśli wcześniejsze wiadomości z tego okresu zostały usunięte.

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

Gdy tworzysz wiadomości w trybie importowania, pokoje nie wysyłają powiadomień ani nie wysyłają e-maili do żadnych użytkowników, w tym wiadomości zawierających wzmianki użytkowników.

Z przykładu poniżej dowiesz się, jak utworzyć wiadomość w pokoju w trybie importowania:

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)

Zastąp następujące elementy:

Reakcje

Aplikacja Google Chat może importować reakcje na wiadomości za pomocą interfejsu Chat API. Informacje o metodach zasobów i typach obsługi uwierzytelniania w pokojach w trybie importowania znajdziesz w artykule o autoryzowaniu aplikacji Google Chat.

Załączniki

Twoja aplikacja Google Chat 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 o autoryzowaniu aplikacji Google Chat. Zdecydowanie zalecamy jednak korzystanie z interfejsu Google Drive API do przesyłania załączników jako plików na Dysku Google i powiązanie identyfikatorów URI plików z odpowiednimi wiadomościami w pokojach w trybie importowania. Pozwoli to importować załączniki z innych platform komunikacyjnych i uniknąć osiągnięcia wewnętrznego limitu przesyłania załączników w Google Chat.

Wcześniejsze subskrypcje

Subskrypcje historyczne są przeznaczone dla użytkowników, którzy opuścili już pierwotny obszar kosmiczny ze źródłowej platformy komunikacyjnej, ale chcesz zachować swoje dane w Google Chat. Informacje na temat dodawania nowych użytkowników, gdy pokój przestanie być w trybie importowania, znajdziesz w artykule Tworzenie zasobu subskrypcji.

W wielu przypadkach, gdy ci dawni członkowie podlegają zasadom przechowywania danych w Google, warto zachować dane (takie jak wiadomości i reakcje) utworzone przez historyczne członkostwo w pokoju przed zaimportowaniem ich do Google Chat. Kiedy pokój jest w trybie importowania, możesz zaimportować do niego wcześniejsze subskrypcje przy użyciu metody create w zasobie Membership. Aby zachować czas opuszczenia historycznej subskrypcji, musisz ustawić jej deleteTime. Informacja o czasie urlopu musi być prawidłowa, ponieważ ma wpływ na dane dotyczące wspierania. Co więcej, ten deleteTime musi być późniejszy niż sygnatura czasowa utworzenia pokoju i nie może być sygnaturą czasową w przyszłości.

Oprócz ustawienia deleteTime możesz też ustawić zasadę 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 ustawiona, wartość createTime musi być wcześniejsza niż deleteTime i musi przypadać w dniu utworzenia pokoju lub później. Informacje te createTime nie służą do określania zasad przechowywania danych i nie są widoczne w narzędziach administracyjnych, takich jak konsola administracyjna Google czy Google Vault.

Chociaż użytkownik może na wiele sposobów dołączyć do pokoju i go opuścić (za pomocą zaproszeń, dołączania samodzielnie lub dodania przez innego użytkownika), w Google Chat wszystkie te działania są reprezentowane przez pola historyczne członkostwa createTime i deleteTime podczas dodawania lub usuwania.

Ten przykład pokazuje, jak utworzyć historyczne członkostwo w pokoju trybu importu:

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)

Zastąp następujące elementy:

Zweryfikuj zaimportowane zasoby

Twoja aplikacja Google Chat może odczytywać i weryfikować zawartość pokoju trybu importu przez wywołanie metody 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ę tylko w imieniu użytkownika przez przejmowanie tożsamości. Więcej informacji znajdziesz w artykule o autoryzowaniu aplikacji Google Chat.

Twoja aplikacja Google Chat 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łać tę metodę tylko w celu odczytywania własnych wiadomości, korzystając z własnych uprawnień. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

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

Właściwości pokoju w trybie importowania możesz odczytać, wywołując metodę get w zasobie Space. Aplikacje do obsługi czatu mogą wywoływać tę metodę tylko przy użyciu własnych uprawnień. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Uzgadniaj zaimportowane zasoby z danymi źródłowymi

Jeśli dowolny zaimportowany zasób nie pasuje do pierwotnego elementu z platformy komunikacyjnej w źródle z powodu zmian w oryginalnym elemencie podczas importu, aplikacje Google Chat mogą wywołać interfejs Chat API, aby zmodyfikować zaimportowany zasób czatu. Jeśli na przykład użytkownik edytuje wiadomość na źródłowej platformie komunikacyjnej po utworzeniu tej wiadomości w Google Chat, aplikacje Google Chat mogą zaktualizować zaimportowaną wiadomość, aby odzwierciedlała aktualną treść oryginalnej wiadomości.

Wiadomości

Aby zaktualizować obsługiwane pola wiadomości w przestrzeni trybu importu, wywołaj metodę update w zasobie Message. Aplikacje do obsługi czatu mogą wywoływać tę metodę tylko z użyciem tych samych uprawnień, które zostały użyte podczas tworzenia pierwszej wiadomości. Jeśli podczas tworzenia wiadomości przejęto rolę użytkownika, do zaktualizowania wiadomości musisz użyć tego samego użytkownika, którego rolę odgrywasz.

Aby usunąć wiadomość z pokoju trybu importu, wywołaj metodę delete w zasobie Message. Wiadomości w pokoju w trybie importowania nie muszą być usuwane przez autora pierwotnej wiadomości. Można je usunąć, podszywając się pod dowolnego użytkownika w domenie. Aplikacje do obsługi czatu mogą usuwać własne wiadomości tylko za pomocą własnego upoważnienia. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Reakcje

Aby usunąć reakcję na wiadomość z pokoju trybu importu, 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 o autoryzowaniu aplikacji Google Chat.

Załączniki

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

Wcześniejsze subskrypcje

Aby usunąć historyczne członkostwo w pokoju trybu importu, użyj metody delete z zasobu Membership. Gdy pokój wyjdzie z trybu importowania, metoda delete nie będzie już mogła usuwać historycznych subskrypcji.

W pokoju trybu importu nie można aktualizować danych historycznych dotyczących członkostwa. 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ąć przestrzeń trybu importu, użyj metody delete w zasobie spaces.

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

Zakończ tryb importowania

Przed wywołaniem metody completeImport musisz zakończyć weryfikację i uzgadnianie różnic zasobów. Wyjście z trybu importu poza trybem importu jest procesem nieodwracalnym i przekształca przestrzeń trybu importu w zwykłą przestrzeń. W Google Chat nie ma wskaźnika, który przypisywał 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ę tylko w imieniu użytkownika przez przyjęcie tożsamości. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat. Po zakończeniu tej metody użytkownik, którego rolę odgrywasz w roli użytkownika, zostanie dodany do pokoju jako menedżer pokoju. Tę metodę należy wywołać w ciągu 30 dni od jej początkowego wywołania create.space. Jeśli spróbujesz wywołać tę metodę po upłynięciu 30 dni, wywołanie zakończy się niepowodzeniem, ponieważ pokój trybu importu zostanie usunięty i nie będzie już dostępny dla aplikacji Google Chat.

Użytkownik, pod który podszywa się użytkownik, używając metody completeImport, nie musi być twórcą pokoju.

Poniższy przykład pokazuje, jak zakończyć tryb importowania:

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)

Zastąp następujące elementy:

Tworzenie zasobów członkostwa

Aby dodać użytkowników do pokoju, w którym zakończono tryb importowania, wywołaj metodę create w zasobie Membership. Aplikacje do obsługi czatu mogą nadal używać zakresu chat.import i przyjmowania tożsamości użytkownika do wywoływania tej metody w ciągu 30 dni od pierwszego 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 wymagają dodatkowych zakresów subskrypcji do wywołania tej metody.

Zalecamy, aby aplikacje Google Chat utworzyły zasoby członkostwa natychmiast po zakończeniu importu, aby aplikacje Google Chat mogły nadal używać zakresu chat.import do tworzenia członkostwa i zapewniały wszystkim użytkownikom dostęp do zaimportowanego pokoju.