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:
- Sprawdź limity wykorzystania interfejsu API i zaplanuj z wyprzedzeniem
- Skonfiguruj autoryzację w aplikacji Google Chat.
- Tworzenie pokoju w trybie importowania
- Importowanie zasobów
- Sprawdź zaimportowane zasoby.
- Uzgadniaj różnice między zaimportowanymi zasobami a danymi źródłowymi.
- Tryb importu pełnego.
- Tworzenie zasobów dotyczących członkostwa
Wymagania wstępne
Google Apps Script
- konto Google Workspace z dostępem do Google Chat.
- Opublikowana aplikacja Google Chat. Aby utworzyć aplikację do obsługi Google Chat, postępuj zgodnie z tym quickstart.
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:
EMAIL
: adres e-mail konta użytkownika, którego używasz w całej domenie.SPACE_NAME
: nazwa pokoju utworzonego w trybie importowania.
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:
EMAIL
: adres e-mail konta użytkownika, którego używasz w całej domenie.SPACE_NAME
: nazwa pokoju utworzonego w trybie importowania.USER_ID
: unikalny identyfikator użytkownika.
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:
EMAIL
: adres e-mail konta użytkownika, którego używasz w całej domenie.SPACE_NAME
: nazwa pokoju utworzonego w trybie importowania.
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.