Importowanie danych do Google Chat

Interfejs Google Chat API umożliwia importowanie danych z innych platform komunikacyjnych do Google Chat. Możesz importować istniejące wiadomości, załączniki, reakcje, członkostwa i elementy w pokojach z innych platform komunikacji 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 trzeba wykonać, aby importować dane z użyciem spacji w trybie importowania:

  1. Sprawdź limity wykorzystania interfejsu API i zaplanuj z wyprzedzeniem
  2. Skonfiguruj autoryzację w aplikacji Google Chat.
  3. Tworzenie pokoju w trybie importowania
  4. Importowanie zasobów
  5. Sprawdź zaimportowane zasoby.
  6. Uzgadniaj różnice między zaimportowanymi zasobami a danymi źródłowymi.
  7. Tryb importu pełnego.
  8. Tworzenie zasobów dotyczących członkostwa

Wymagania wstępne

Google Apps Script

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
    
  • Opublikowana aplikacja Google Chat. Informacje o tworzeniu i publikowaniu aplikacji Google Chat znajdziesz w artykule Tworzenie aplikacji Google Chat.

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

Sprawdź 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. Zaplanuj z wyprzedzeniem 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, 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 równoważnego elementu pokoju ze źródłowej platformy do obsługi wiadomości, możesz ustawić createTime pokoju. Ta createTime musi być ustawiona na wartość od 1 stycznia 2000 r. do teraz.

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

Od wywołania metody create aplikacje Google Chat mają 30 dni na zaimportowanie zasobów do pokoju, do trybu importowania i tworzenia zasobów subskrypcji za pomocą zakresu chat.import. Po 30 dniach w aplikacjach do obsługi czatu nadal można tworzyć subskrypcje za pomocą standardowych zakresów członkostwa interfejsu Chat API. Jeśli po 30 dniach pokój będzie nadal w trybie importowania, zostanie automatycznie usunięty, przez co aplikacja Google Chat nie będzie mogła go odzyskać. Zaplanuj z wyprzedzeniem limity wykorzystania aplikacji Google Chat, aby mieć pewność, że wszystkie zaplanowane zasoby zostaną zaimportowane 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 się podszywasz, z uprawnieniami w całej domenie.

Importowanie zasobów

Aby importować zasoby z innych platform do przesyłania wiadomości, tworzysz zasoby Google Chat (takie jak wiadomości, reakcje czy załączniki) w pokoju w trybie importowania. Tworząc zasób 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 za pomocą 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ę); Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat. Aby zaimportować wiadomość w pokoju w trybie importowania, wywołaj metodę create w zasobie Message. Aby zachować czas utworzenia oryginalnej wiadomości z platformy źródłowej, możesz ustawić jej createTime. Ta wartość createTime musi być ustawiona na wartość pomiędzy ustawioną wcześniej godziną utworzenia pokoju a czasem bieżącą.

Wiadomości w tym samym pokoju nie mogą zawierać tych samych createTime, nawet wcześniejsze wiadomości z tym czasem zostały 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ą powiadamiać ani wysyłać e-maili do żadnych użytkowników, w tym e-maili zawierających wzmianki o użytkownikach.

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

Twoja aplikacja do obsługi czatu 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 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ż pierwotny element pokoju na platformie czatu, 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 członkostwa.

W wielu przypadkach, gdy tacy użytkownicy są objęci zasadami przechowywania danych w Google, warto przed zaimportowaniem ich do Google Chat zachować dane utworzone przez ich historyczne członkostwo w pokoju (np. wiadomości i reakcje). Gdy pokój jest w trybie importowania, możesz zaimportować do niego historyczne informacje o członkostwie za pomocą metody create w zasobie Membership. Aby zachować czas rezygnacji z historycznej subskrypcji, musisz ustawić jej deleteTime. Musi on być dokładny, ponieważ ma wpływ na to, jakie dane będą przechowywane w związku z subskrypcją. Dodatkowo ten parametr deleteTime musi przypadać po sygnaturze czasowej utworzenia pokoju i nie może być datą przyszłą.

Oprócz deleteTime możesz też ustawić createTime, aby zachować pierwotny czas dołączenia z historycznego członkostwa. W przeciwieństwie do deleteTime właściwość createTime jest opcjonalna. Jeśli nie jest skonfigurowana, funkcja createTime jest obliczana automatycznie przez odjęcie 1 mikrosekundy od wartości deleteTime. Jeśli zasada jest skonfigurowana, createTime musi przypadać przed datą deleteTime i musi przypadać nie wcześniej niż w momencie utworzenia pokoju. 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.

Chociaż użytkownik może na różne sposoby dołączyć do pokoju i go opuścić (za pomocą zaproszeń, samodzielnego dołączenia lub dodania innego użytkownika), w Google Chat działania te są reprezentowane przez pola historyczne dotyczące członkostwa createTime i deleteTime jako dodane lub usunięte.

Z przykładu poniżej dowiesz się, jak utworzyć historyczne członkostwo w pokoju w trybie 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:

Sprawdź zaimportowane zasoby

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 zwróconej wiadomości. Aplikacje do obsługi czatu mogą wywoływać tę metodę w imieniu użytkownika tylko przez przyjęcie tożsamości. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Aplikacja do obsługi czatu może też odczytywać poszczególne wiadomości do weryfikacji, wywołując metodę get w zasobie Message. Aplikacje do obsługi czatu mogą wywoływać tę metodę tylko do 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 wyjdziesz z trybu importowania pokoju, metoda list nie będzie już udostępniać wcześniejszych subskrypcji pokoju. Aplikacje do obsługi czatu mogą wywoływać tę metodę w imieniu użytkownika tylko przez podszywanie się pod inną osobę. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

Właściwości pokoju w trybie importu możesz odczytać, wywołując 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 Google Chat.

Uzgadniaj różnice między zaimportowanymi zasobami a danymi źródłowymi

Jeśli z powodu zmian w pierwotnym elemencie podczas importowania okaże się, że którykolwiek z zaimportowanych zasobów nie jest już zgodny z pierwotnym elementem 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 Google Chat mogą zaktualizować zaimportowaną wiadomość, aby odzwierciedlała jej aktualną treść.

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 z użyciem tych samych uprawnień, które zostały użyte podczas tworzenia wiadomości. Jeśli podczas tworzenia wiadomości najpierw użyto podszywania się pod innego użytkownika, musisz ją zaktualizować, korzystając z tego samego użytkownika.

Aby usunąć wiadomość w pokoju w trybie importowania, wywołaj metodę delete w zasobie Message. Wiadomości w pokoju w trybie importowania nie muszą być usuwane przez ich autora. 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 uprawnień. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat.

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 dotyczącej zasobu Membership. Gdy pokój wyjdzie z trybu importowania, metoda delete nie pozwoli już usuwać historycznych subskrypcji.

Nie możesz zaktualizować historycznego członkostwa w pokoju w trybie importowania. Jeśli chcesz poprawić nieprawidłowo zaimportowane historyczne członkostwo, musisz je 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 dla zasobu 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ńczony

Przed wywołaniem metody completeImport ukończ weryfikację i uzgadnianie różnic zasobów. Wyjście z trybu importowania jest nieodwracalne i spowoduje przekształcenie przestrzeni trybu importowania w zwykłą przestrzeń. W Google Chat nie ma wskaźnika, który przypisuje 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 przyjęcie tożsamości. Więcej informacji znajdziesz w artykule Autoryzowanie aplikacji Google Chat. Po zakończeniu działania tej metody użytkownik, pod którego ktoś się podszywa, zostaje dodany do pokoju jako menedżer pokoju. Metodę należy wywołać w ciągu 30 dni od jej początkowego create.space wywołania metody. Jeśli spróbujesz wywołać tę metodę po upływie 30 dni, wywołanie zakończy się niepowodzeniem, ponieważ obszar trybu importowania 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.

Z przykładu poniżej dowiesz się, jak wykonać 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 subskrypcji

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 podszywania się pod użytkownika do wywoływania tej metody przez 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 będą wymagać dodatkowych zakresów członkostwa w celu wywołania tej metody.

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