Tworzenie subskrypcji Google Workspace

Z tego artykułu dowiesz się, jak utworzyć subskrypcję zasobu Google Workspace za pomocą interfejsu Google Workspace Events API. Abonament Google Workspace umożliwia aplikacji otrzymywanie informacji o zdarzeniach Google Workspace, które reprezentują zmiany w zasobie Google Workspace. Aby dowiedzieć się, jakie zasoby i typy zdarzeń obsługuje interfejs Google Workspace Events API, zapoznaj się z omówieniem interfejsu Google Workspace Events API.

Na tej stronie znajdziesz te czynności związane z tworzeniem subskrypcji Google Workspace:

  1. skonfigurować środowisko,
  2. utworzysz temat Google Cloud Pub/Sub i zasubskrybujesz go, Użyj tego dokumentu jako punktu końcowego do odbierania zdarzeń Google Workspace.
  3. Wywołaj metodę interfejsu Google Workspace Events APIcreate w zasobieSubscription.
  4. Przetestuj subskrypcję Google Workspace, aby sprawdzić, czy temat Pub/Sub otrzymuje zdarzenia, które subskrybujesz.
  5. Opcjonalnie skonfiguruj sposób przesyłania zdarzeń do punktu końcowego aplikacji, aby mogła ona przetwarzać zdarzenia i w razie potrzeby podejmować odpowiednie działania.

Wymagania wstępne

Google Apps Script

  • Aby używać poleceń interfejsu wiersza poleceń Google Cloud w tym przewodniku:
    1. Zainstaluj Google Cloud CLI.
    2. Aby zainicjować interfejs wiersza poleceń gcloud, uruchom ten kod:
    3.   gcloud init
        
  • Projekt Apps Script:
    • Używaj projektu Google Cloud zamiast domyślnego projektu utworzonego automatycznie przez Apps Script.
    • Wszystkie zakresy dodane w celu skonfigurowania ekranu zgody OAuth musisz też dodać do pliku appsscript.json w projekcie Apps Script. Jeśli na przykład określono zakres chat.messages, dodaj ten kod:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Włącz Google Workspace Events usługę zaawansowaną.

Python

  • Python 3.6 lub nowszy
  • Narzędzie do zarządzania pakietami pip
  • Najnowsze biblioteki klienta Google dla Pythona. Aby je zainstalować lub zaktualizować, w interfejsie wiersza poleceń uruchom to polecenie:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      
  • Aby używać poleceń interfejsu wiersza poleceń Google Cloud w tym przewodniku:
    1. Zainstaluj Google Cloud CLI.
    2. Aby zainicjować interfejs wiersza poleceń gcloud, uruchom ten kod:
    3.   gcloud init
        

Konfigurowanie środowiska

W tej sekcji dowiesz się, jak skonfigurować środowisko przed utworzeniem subskrypcji Google Workspace.

Włącz interfejsy Google Workspace Events API i Google Cloud Pub/Sub API.

Zanim zaczniesz korzystać z interfejsów API Google, musisz je włączyć w projekcie w chmurze Google. W jednym projekcie Google Cloud możesz włączyć co najmniej 1 interfejs API.

Konsola Google Cloud

W konsoli Google Cloud otwórz projekt w chmurze Google Cloud dla swojej aplikacji i włącz interfejsy Google Workspace Events API i Pub/Sub API:

Włączanie interfejsów API

gcloud

  1. W katalogu roboczym zaloguj się na konto Google:

    gcloud auth login
  2. Ustaw projekt w chmurze dla aplikacji:

    gcloud config set project PROJECT_ID

    Zastąp PROJECT_ID identyfikatorem projektu projektu w chmurze dla Twojej aplikacji.

  3. Włącz interfejs Google Workspace Events API i Google Cloud Pub/Sub API:

    gcloud services enable pubsub.googleapis.com workspaceevents.googleapis.com

Tworzenie danych logowania identyfikatora klienta OAuth

Wybierz typ aplikacji, aby uzyskać szczegółowe instrukcje tworzenia identyfikatora klienta OAuth:

Aplikacja internetowa

  1. W konsoli Google Cloud otwórz Menu  > Platforma uwierzytelniania Google > Klienci.

    Otwórz stronę Klienci

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > Aplikacja internetowa.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Dodaj autoryzowane identyfikatory URI związane z aplikacją:
    • Aplikacje po stronie klienta (JavaScript) – w sekcji Autoryzowane źródła JavaScriptu kliknij Dodaj URI. Następnie wpisz identyfikator URI, który będzie używany w żądaniach przeglądarki. Określa domeny, z których aplikacja może wysyłać żądania do interfejsu API do serwera OAuth 2.0.
    • Aplikacje po stronie serwera (Java, Python i inne) – w sekcji Autoryzowane identyfikatory URI przekierowania kliknij Dodaj URI. Następnie wpisz identyfikator URI punktu końcowego, do którego serwer OAuth 2.0 może wysyłać odpowiedzi.
  6. Kliknij Utwórz.

    Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klientów OAuth 2.0.

    Pamiętaj, że tajne klucze klienta nie są używane w przypadku aplikacji internetowych.

Android

  1. W konsoli Google Cloud otwórz Menu  > Platforma uwierzytelniania Google > Klienci.

    Otwórz stronę Klienci

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > Android.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. W polu Nazwa pakietu wpisz nazwę pakietu z pliku AndroidManifest.xml.
  6. W polu Odcisk cyfrowy certyfikatu SHA-1 wpisz wygenerowany odcisk cyfrowy certyfikatu SHA-1.
  7. Kliknij Utwórz.

    Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klientów OAuth 2.0”.

iOS

  1. W konsoli Google Cloud otwórz Menu  > Platforma uwierzytelniania Google > Klienci.

    Otwórz stronę Klienci

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > iOS.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. W polu Identyfikator pakietu wpisz identyfikator pakietu podany w pliku Info.plist aplikacji.
  6. Opcjonalnie: jeśli Twoja aplikacja jest dostępna w Apple App Store, wpisz identyfikator sklepu App Store.
  7. Opcjonalnie: w polu Identyfikator zespołu wpisz unikalny 10-znakowy ciąg znaków wygenerowany przez Apple i przypisany do Twojego zespołu.
  8. Kliknij Utwórz.

    Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klientów OAuth 2.0”.

Aplikacja Chrome

  1. W konsoli Google Cloud otwórz Menu  > Platforma uwierzytelniania Google > Klienci.

    Otwórz stronę Klienci

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > Rozszerzenie do Chrome.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. W polu Identyfikator produktu wpisz unikalny 32-znakowy ciąg identyfikatora aplikacji. Wartość tego identyfikatora znajdziesz w adresie URL aplikacji w Chrome Web Store oraz w Panelu dewelopera Chrome Web Store.
  6. Kliknij Utwórz.

    Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klientów OAuth 2.0”.

Aplikacja komputerowa

  1. W konsoli Google Cloud otwórz Menu  > Platforma uwierzytelniania Google > Klienci.

    Otwórz stronę Klienci

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > Aplikacja komputerowa.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Kliknij Utwórz.

    Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klientów OAuth 2.0”.

Telewizory i urządzenia wejściowe z ograniczoną możliwością wpisywania

  1. W konsoli Google Cloud otwórz Menu  > Platforma uwierzytelniania Google > Klienci.

    Otwórz stronę Klienci

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > Telewizory i urządzenia wejściowe z ograniczonymi możliwościami.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Kliknij Utwórz.

    Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klientów OAuth 2.0”.

Universal Windows Platform (UWP)

  1. W konsoli interfejsów API Google otwórz Menu  > > Klienci.

    Otwórz stronę Klienci

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > Uniwersalna platforma Windows (UWP).
  4. W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w Konsoli interfejsów API Google.
  5. W polu „Identyfikator sklepu” wpisz unikalny 12-znakowy identyfikator aplikacji w Microsoft Store. Ten identyfikator znajdziesz w adresie URL aplikacji w Microsoft Store i w Centrum partnerów.
  6. Kliknij Utwórz.

    Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klientów OAuth 2.0”.

Pobieranie pliku JSON z tajnym kluczem klienta

Plik tajnego klucza klienta to reprezentacja JSON danych logowania identyfikatora klienta OAuth, do których aplikacja może się odwoływać podczas podawania danych logowania.

  1. W konsoli interfejsów API Google otwórz Menu  > Interfejsy API i usługi > Dane logowania.

    Przejdź do danych logowania

  2. W sekcji Identyfikatory klienta OAuth 2.0 kliknij utworzony identyfikator klienta.

  3. Kliknij Pobierz JSON.

  4. Zapisz plik jako credentials.json.

Tworzenie tematu Pub/Sub i subskrybowanie go

W tej sekcji utworzysz temat Pub/Sub i subskrypcję tego tematu. Temat Pub/Sub służy jako punkt końcowy powiadomień, w którym subskrypcja Google Workspace otrzymuje zdarzenia.

Więcej informacji o tworzeniu tematów Pub/Sub i zarządzaniu nimi znajdziesz w dokumentacji Pub/Sub.

Aby utworzyć temat Pub/Sub i zasubskrybować go:

Konsola interfejsów API Google

  1. W konsoli interfejsów API Google otwórz stronę Pub/Sub:

    Otwórz Google Cloud Pub/Sub

    Sprawdź, czy wybrany jest projekt w chmurze dla Twojej aplikacji.

  2. Kliknij  Utwórz temat i wykonaj te czynności:

    1. Wpisz nazwę tematu, np. workspace-events-topic.
    2. Pozostaw zaznaczoną opcję Dodaj subskrypcję domyślną. Pub/Sub nadaje tej domyślnej subskrypcji nazwę podobną do nazwy tematu, np. workspace-events-topic-sub.
    3. Opcjonalnie: zaktualizuj lub skonfiguruj dodatkowe właściwości tematu.
  3. Kliknij Utwórz. Pełna nazwa tematu ma format projects/PROJECT_ID/topics/TOPIC_ID. Użyj tego imienia i nazwiska w późniejszym kroku.

  4. Przyznaj dostęp do publikowania wiadomości Pub/Sub w temacie:

    1. Na stronie tematu otwórz panel boczny i kliknij kartę Uprawnienia.
    2. Kliknij Dodaj podmiot zabezpieczeń.
    3. W polu Dodaj podmioty zabezpieczeń dodaj konto usługi aplikacji Google Workspace, która dostarcza wydarzenia do Twojej subskrypcji:
      1. W przypadku wydarzeń na czacie:
      2. W przypadku wydarzeń na Dysku:drive-api-event-push@system.gserviceaccount.com
      3. W przypadku wydarzeń w Meet:meet-api-event-push@system.gserviceaccount.com
    4. W menu Przypisz role wybierz Pub/Sub Publisher.
    5. Kliknij Zapisz. Aktualizacja uprawnień do tematu może potrwać kilka minut.

gcloud

  1. W projekcie w chmurze utwórz temat, uruchamiając to polecenie:

    gcloud pubsub topics create TOPIC_ID

    Zastąp TOPIC_ID unikalnym identyfikatorem tematu, np. workspace-events-topic.

    Dane wyjściowe zawierają pełną nazwę tematu w formacie projects/PROJECT_ID/topics/TOPIC_ID. Zanotuj nazwę i upewnij się, że wartość PROJECT_ID to identyfikator projektu w chmurze dla Twojej aplikacji. Użyj nazwy tematu w następnym kroku i później, aby utworzyć subskrypcję Google Workspace.

  2. Przyznaj uprawnienia do publikowania wiadomości w temacie:

    gcloud pubsub topics add-iam-policy-binding TOPIC_NAME --member='serviceAccount:GOOGLE_WORKSPACE_APPLICATION' --role='roles/pubsub.publisher'

    Zastąp te elementy:

    • TOPIC_NAME: pełna nazwa tematu, która jest wynikiem poprzedniego kroku. Sformatowano jako projects/PROJECT_ID/topics/TOPIC_ID.
    • GOOGLE_WORKSPACE_APPLICATION: aplikacja Google Workspace, która musi dostarczać zdarzenia do Twojej subskrypcji:

    Aktualizacja uprawnień do tematu może potrwać kilka minut.

  3. Utwórz subskrypcję Pub/Sub dla tematu:

     gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME

    Zastąp te elementy:

    • SUBSCRIPTION_NAME: Nazwa subskrypcji, np. workspace-events-subscription.
    • TOPIC_NAME: Nazwa tematu utworzonego w poprzednim kroku.

Subskrybowanie zasobu Google Workspace

W tej sekcji możesz zasubskrybować zasób Google Workspace, który chcesz monitorować pod kątem zdarzeń.

Wybierz i określ zasób docelowy

W subskrypcji Google Workspace zasób docelowy to zasób Google Workspace, który monitorujesz pod kątem zdarzeń. Zasób docelowy jest reprezentowany w polu targetResource subskrypcji w formacie pełnej nazwy zasobu. Na przykład w przypadku subskrypcji, która monitoruje pokój na czacie (spaces/AAAABBBBBBB), wartość targetResource to //chat.googleapis.com/spaces/AAAABBBBBBB.

Określanie zasobu docelowego dla Google Chat

Zasób docelowy Format Ograniczenia
Spacja

//chat.googleapis.com/spaces/SPACE

gdzie SPACE to identyfikator w nazwie zasobu zasobu interfejsu Chat API space. Możesz go uzyskać z adresu URL przestrzeni lub za pomocą metody spaces.list().

Użytkownik Google Chat lub aplikacja Google Chat, która autoryzuje subskrypcję, musi być członkiem pokoju na koncie Google Workspace lub Google. Obsługuje:
Wszystkie przestrzenie użytkownika

//chat.googleapis.com/spaces/-

Subskrypcja otrzymuje tylko wydarzenia dotyczące pokoi, w których użytkownik jest członkiem za pomocą konta Google Workspace lub konta Google. Obsługuje tylko uwierzytelnianie użytkownika.
Użytkownik

//cloudidentity.googleapis.com/users/USER

gdzie USER to identyfikator w nazwie zasobu zasobu interfejsu Chat API user. Szczegółowe informacje znajdziesz w artykule Identyfikowanie i określanie użytkowników Google Chat.

Subskrypcja otrzymuje tylko zdarzenia dotyczące użytkownika, który ją autoryzował. Użytkownik nie może autoryzować subskrypcji w imieniu innych użytkowników. Obsługuje tylko uwierzytelnianie użytkownika.

Klient ( wersja przedpremierowa dla programistów)

//admin.googleapis.com/customers/CUSTOMER

gdzie CUSTOMER to identyfikator klienta. Możesz też użyć aliasu my_customer dla własnej domeny klienta aplikacji do obsługi czatu.

Subskrypcja otrzymuje wydarzenia dotyczące wszystkich przestrzeni i użytkowników zarządzanych przez domenę klienta. Obsługuje tylko uwierzytelnianie aplikacji z zatwierdzeniem przez administratora.

Określanie zasobu docelowego na Dysku

Zasób docelowy Format Ograniczenia (jeśli dotyczy)
Plik //drive.googleapis.com/files/FILE

gdzie FILE to identyfikator w nazwie zasobu interfejsu Drive API files. Możesz go uzyskać z adresu URL pliku lub za pomocą metody files.list.

Użytkownik, który autoryzuje subskrypcję, musi mieć uprawnienia do pliku w ramach subskrypcji w odniesieniu do subskrybowanego zdarzenia.
Dysk współdzielony //drive.googleapis.com/drives/DRIVE

gdzie DRIVE to identyfikator w nazwie zasobu zasobu drives interfejsu Drive API. Możesz go uzyskać z adresu URL Dysku lub za pomocą metody drives.list.

Subskrypcja otrzymuje tylko zdarzenia dotyczące elementów na dysku współdzielonym, na którym użytkownik jest członkiem za pomocą konta Google Workspace lub konta Google.

Określanie zasobu docelowego dla Meet

Zasób docelowy Format Ograniczenia (jeśli dotyczy)
Miejsce spotkań //meet.googleapis.com/spaces/SPACE

gdzie SPACE to identyfikator w nazwie zasobu zasobu spaces interfejsu Meet REST API. Więcej informacji znajdziesz w artykule Jak Meet identyfikuje miejsce spotkania.

Użytkownik //cloudidentity.googleapis.com/users/USER

gdzie USER to identyfikator w polu signedinUser.user zasobu participants interfejsu Meet REST API. Więcej informacji znajdziesz w artykule Praca z uczestnikami.

Subskrypcja otrzymuje wydarzenia dotyczące wszystkich miejsc spotkań, których właścicielem jest użytkownik. Zwykle właściciel przestrzeni do spotkań jest też organizatorem wydarzenia w Kalendarzu Google powiązanego z tą przestrzenią.

Tworzenie subskrypcji Google Workspace

Aby utworzyć subskrypcję, użyj metody subscriptions.create interfejsu Google Workspace Events API, aby utworzyć zasób Subscription. Wypełnij te pola:

  • targetResource: Google Workspace zidentyfikowana w poprzedniej sekcji, sformatowana przy użyciu pełnej nazwy zasobu.
  • eventTypes: tablica zawierająca co najmniej 1 typ zdarzenia, o którym chcesz otrzymywać informacje dotyczące zasobu. Jeśli na przykład Twoja aplikacja musi tylko wiedzieć o nowych wiadomościach opublikowanych w pokoju w Google Chat, może subskrybować tylko zdarzenia dotyczące utworzonych wiadomości.
  • notificationEndpoint: punkt końcowy powiadomień, do którego subskrypcja Google Workspace dostarcza zdarzenia. Użyj tematu Pub/Sub utworzonego w poprzedniej sekcji.
  • payloadOptions: opcje określania, ile danych o zasobach ma być uwzględnionych w ładunku zdarzenia. Ta konfiguracja wpływa na czas wygaśnięcia subskrypcji. Więcej informacji znajdziesz w sekcji Dane zdarzenia.

Aby utworzyć subskrypcję Google Workspace:

Google Apps Script

  1. W projekcie Apps Script utwórz nowy plik skryptu o nazwie createSubscription i dodaj ten kod:

    function createSubscription() {
      // The Google Workspace resource to monitor for events.
      const targetResource = 'TARGET_RESOURCE';
    
      // The types of events to receive.
      const eventTypes = [EVENT_TYPES];
    
      // The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
      const pubsubTopic = 'TOPIC_NAME';
    
      // Whether to include resource data or not.
      const resourceData = RESOURCE_DATA;
    
      // Call the Workspace Events API using the advanced service.
      const response = WorkspaceEvents.Subscriptions.create({
        targetResource: targetResource,
        eventTypes: eventTypes,
        notificationEndpoint: {
          pubsubTopic: pubsubTopic,
        },
        payloadOptions: {
          includeResource: resourceData
        }
      });
      console.log(response);
    }
    

    Zastąp te elementy:

    • TARGET_RESOURCE: zasób Google Workspace, który subskrybujesz, w formacie pełnej nazwy zasobu. Aby na przykład zasubskrybować pokój Google Chat o identyfikatorze AAAABBBB, użyj //chat.googleapis.com/spaces/AAAABBBB.
    • EVENT_TYPES: co najmniej 1 typ zdarzenia, który chcesz subskrybować w zasobie docelowym. Sformatuj jako tablicę ciągów znaków, np. 'google.workspace.chat.message.v1.created'.
    • TOPIC_NAME: pełna nazwa tematu Pub/Sub utworzonego w projekcie w chmurze. Sformatowano jako projects/PROJECT_ID/topics/TOPIC_ID.
    • RESOURCE_DATA: wartość logiczna określająca, czy subskrypcja zawiera dane zasobów w ładunku:

      • True: zawiera wszystkie dane zasobów. Aby ograniczyć liczbę uwzględnianych pól, dodaj pole fieldMask i określ co najmniej 1 pole dla zmienionego zasobu. Tylko subskrypcje zasobów Google Chat obsługują uwzględnianie danych zasobów.
      • False: nie obejmuje danych o zasobach.
  2. Aby utworzyć subskrypcję Google Workspace, uruchom funkcję createSubscription w projekcie Apps Script.

Python

  1. W katalogu roboczym utwórz plik o nazwie create_subscription.py i dodaj ten kod:

    """Create subscription."""
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = [SCOPES]
    
    # Authenticate with Google Workspace and get user authentication.
    flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
    CREDENTIALS = flow.run_local_server()
    
    # The Google Workspace resource to monitor for events.
    TARGET_RESOURCE = 'TARGET_RESOURCE'
    
    # The types of events to receive.
    EVENT_TYPES = [EVENT_TYPES]
    
    # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
    TOPIC = 'TOPIC_NAME'
    
    # Call the Workspace Events API using the service endpoint.
    service = build(
        'workspaceevents',
        'v1',
        credentials=CREDENTIALS,
    )
    
    BODY = {
        'target_resource': TARGET_RESOURCE,
        'event_types': EVENT_TYPES,
        'notification_endpoint': {'pubsub_topic': TOPIC},
        'payload_options': {'include_resource': RESOURCE_DATA},
    }
    response = service.subscriptions().create(body=BODY).execute()
    print(response)
    

    Zastąp te elementy:

    • SCOPES: co najmniej 1 zakres OAuth, który obsługuje każdy typ zdarzenia w przypadku subskrypcji. Sformatowane jako tablica ciągów znaków. Aby podać kilka zakresów, oddziel je przecinkami. Na przykład: 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • TARGET_RESOURCE: zasób Google Workspace, który subskrybujesz, w formacie pełnej nazwy zasobu. Aby na przykład zasubskrybować pokój Google Chat o identyfikatorze AAAABBBB, użyj //chat.googleapis.com/spaces/AAAABBBB.
    • EVENT_TYPES: co najmniej 1 typ zdarzenia, który chcesz subskrybować w zasobie docelowym. Sformatuj jako tablicę ciągów znaków, np. 'google.workspace.chat.message.v1.created'.
    • TOPIC_NAME: pełna nazwa tematu Pub/Sub utworzonego w projekcie w chmurze. Sformatowano jako projects/PROJECT_ID/topics/TOPIC_ID.
    • RESOURCE_DATA: wartość logiczna określająca, czy subskrypcja zawiera dane zasobów w ładunku:

      • True: obejmuje wszystkie dane zasobów. Aby ograniczyć liczbę uwzględnianych pól, dodaj pole fieldMask i określ co najmniej 1 pole dla zmienionego zasobu. Tylko subskrypcje zasobów Google Chat obsługują uwzględnianie danych zasobów.
      • False: nie obejmuje danych o zasobach.
  2. Aby utworzyć subskrypcję Google Workspace, uruchom w terminalu to polecenie:

    python3 create_subscription.py

Interfejs Google Workspace Events API zwraca ukończoną długotrwałą operację, która zawiera instancję utworzonego zasobu Subscription.

Testowanie subskrypcji Google Workspace

Aby sprawdzić, czy otrzymujesz zdarzenia Google Workspace, możesz wywołać zdarzenie i pobrać wiadomości do subskrypcji Pub/Sub.

Aby przetestować abonament Google Workspace:

Konsola interfejsów API Google

  1. Uruchamiać co najmniej 1 rodzaj zdarzeń w zasobie docelowym subskrypcji Google Workspace. Jeśli na przykład subskrybujesz nowe wiadomości w pokoju czatu, opublikuj w nim wiadomość.

  2. W konsoli interfejsów API Google otwórz stronę Pub/Sub:

    Otwórz stronę Pub/Sub

    Sprawdź, czy wybrany jest projekt w chmurze dla Twojej aplikacji.

  3. W menu Pub/Sub kliknij Subskrypcje.

  4. W tabeli znajdź subskrypcję Pub/Sub dla swojego tematu i kliknij nazwę subskrypcji.

  5. Kliknij kartę Wiadomości.

  6. Kliknij Pobierz. Wygenerowanie wiadomości Pub/Sub przez zdarzenie może potrwać kilka minut.

gcloud

  1. Uruchamiać co najmniej 1 rodzaj zdarzeń w zasobie docelowym subskrypcji Google Workspace. Jeśli na przykład subskrybujesz nowe wiadomości w pokoju czatu, opublikuj w nim wiadomość.

  2. Uruchom to polecenie:

    gcloud pubsub subscriptions pull PUBSUB_SUBSCRIPTION_NAME --format=json --limit=MESSAGE_COUNT --auto-ack

    Zastąp te elementy:

    • PUBSUB_SUBSCRIPTION_NAME: Pełna nazwa subskrypcji Pub/Sub w formacie projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID.
    • MESSAGE_COUNT: maksymalna liczba wiadomości Pub/Sub, które chcesz pobrać.

    Wygenerowanie wiadomości Pub/Sub przez zdarzenie może potrwać kilka minut.

W przypadku każdego wywołanego zdarzenia Google Workspace do subskrypcji Pub/Sub jest dostarczany komunikat zawierający to zdarzenie. Szczegółowe informacje znajdziesz w artykule Otrzymywanie zdarzeń jako wiadomości Google Cloud Pub/Sub.

Konfigurowanie sposobu, w jaki aplikacja otrzymuje zdarzenia

Utworzona subskrypcja Pub/Sub jest oparta na pobieraniu. Po przetestowaniu subskrypcji Pub/Sub możesz zaktualizować typ dostawy, aby zmienić sposób, w jaki aplikacja otrzymuje zdarzenia. Możesz na przykład skonfigurować subskrypcję Pub/Sub na typ dostawy push, aby aplikacja mogła odbierać zdarzenia bezpośrednio w punkcie końcowym aplikacji.

Więcej informacji o konfigurowaniu subskrypcji Pub/Sub znajdziesz w dokumentacji Pub/Sub.

Subskrybowanie zdarzeń w pokoju Google Chat jako aplikacja Google Chat

Aplikacja do obsługi czatu może subskrybować zdarzenia w Google Chat w pokoju, w którym jest członkiem. Aplikacje Google Chat nie mogą subskrybować zdarzeń użytkownika.

Napisz skrypt, który wywołuje interfejs Google Workspace Events API

Aby utworzyć subskrypcję zdarzeń w pokoju Google Chat z uwierzytelnianiem aplikacji i zatwierdzeniem przez administratora:

  1. W razie potrzeby utwórz aplikację Google Chat.
  2. subskrybować zasób w Google Chat, ale:

    1. Zamiast uwierzytelniania użytkownika uwierzytelnij się jako aplikacja do obsługi czatu za pomocą jednorazowej zgody administratora.
    2. Określ zakresy autoryzacji, które umożliwiają aplikacji Google Chat subskrybowanie zdarzeń w Google Chat. Zakresy autoryzacji zawsze zaczynają się od chat.app i obejmują:

      • https://www.googleapis.com/auth/chat.app.memberships: subskrybuj zdarzenia dotyczące użytkowników pokoju czatu.
      • https://www.googleapis.com/auth/chat.app.memberships.readonly: subskrybuj zdarzenia dotyczące użytkowników pokoju czatu.
      • https://www.googleapis.com/auth/chat.app.messages.readonly: subskrybuj wiadomości w pokoju na czacie i zdarzenia związane z reakcjami.
      • https://www.googleapis.com/auth/chat.app.spaces: subskrybuj zdarzenia w pokoju czatu.
      • https://www.googleapis.com/auth/chat.app.spaces.readonly: subskrybuj zdarzenia w pokoju czatu.

Poniższy przykładowy kod subskrybuje zdarzenia wiadomości w określonym pokoju na czacie:

Python

  """Create subscription."""

  from google.oauth2 import service_account
  from apiclient.discovery import build

  # Specify required scopes.
  SCOPES = ['https://www.googleapis.com/auth/chat.app.messages.readonly']

  # Specify service account details.
  CREDENTIALS = (
      service_account.Credentials.from_service_account_file('credentials.json')
      .with_scopes(SCOPES)
  )

  # The Google Workspace resource to monitor for events.
  TARGET_RESOURCE = '//chat.googleapis.com/spaces/SPACE_ID'

  # The types of events to receive.
  EVENT_TYPES = [
                  'google.workspace.chat.message.v1.created',
                  'google.workspace.chat.message.v1.updated',
                  'google.workspace.chat.message.v1.deleted',
                ]

  # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
  TOPIC = 'TOPIC_NAME'

  # Call the Workspace Events API using the service endpoint.
  service = build(
      'workspaceevents',
      'v1',
      credentials=CREDENTIALS,
  )

  BODY = {
      'target_resource': TARGET_RESOURCE,
      'event_types': EVENT_TYPES,
      'notification_endpoint': {'pubsub_topic': TOPIC},
      'payload_options': {'include_resource': RESOURCE_DATA},
  }
  response = service.subscriptions().create(body=BODY).execute()
  print(response)

Zastąp te elementy:

  • SPACE_ID: nazwa pokoju, którą możesz uzyskać za pomocą spaces.list metody w interfejsie Chat API lub z adresu URL pokoju.
  • TOPIC_NAME: pełna nazwa tematu Pub/Sub utworzonego w projekcie w chmurze. Sformatowano jako projects/PROJECT_ID/topics/TOPIC_ID.
  • RESOURCE_DATA: wartość logiczna określająca, czy subskrypcja zawiera dane zasobów w ładunku:

    • True: zawiera wszystkie dane zasobów. Aby ograniczyć liczbę uwzględnianych pól, dodaj pole fieldMask i określ co najmniej 1 pole dla zmienionego zasobu. Tylko subskrypcje zasobów Google Chat obsługują uwzględnianie danych zasobów.
    • False: nie obejmuje danych o zasobach.

Subskrybowanie wszystkich zdarzeń w Google Chat w organizacji Google Workspace jako aplikacja do obsługi czatu

Subskrypcja klienta umożliwia aplikacji Google Chat monitorowanie zdarzeń w pokoju i zdarzeń użytkownika w całej organizacji Google Workspace.

Szczegółowe informacje o tym, jak zdarzenia są dostarczane w przypadku subskrypcji klientów, w tym o dostarczaniu zdarzeń w przestrzeniach zarządzanych przez organizacje zewnętrzne, znajdziesz w artykule Ograniczenia subskrypcji klientów i sposób dostarczania zdarzeń.

Wymagania i ograniczenia

  • Uwierzytelnianie: uwierzytelnianie jako aplikacja do obsługi czatu z jednorazowym zatwierdzeniem przez administratora
  • SKU organizacja Google Workspace musi mieć co najmniej 1 licencję SKU Enterprise. Pamiętaj, że to wymaganie nie jest ściśle egzekwowane na etapie programu wczesnego dostępu dla deweloperów, ale będzie egzekwowane w przyszłości (o czym poinformujemy osobno).
  • Unikalność: aplikacja do obsługi czatu może utworzyć tylko jedną subskrypcję klienta dla danej organizacji Google Workspace. Organizacja Google Workspace może mieć łącznie maksymalnie 5 subskrypcji klienta (utworzonych przez różne aplikacje do obsługi czatu).
  • Zakresy: wymaga co najmniej jednego z tych zakresów w zależności od typów zdarzeń, które chcesz otrzymywać:
    • https://www.googleapis.com/auth/chat.app.all.spaces.readonly: aby otrzymywać zdarzenia dotyczące pokoi.
    • https://www.googleapis.com/auth/chat.app.all.memberships.readonly: aby otrzymywać zdarzenia dotyczące pakietów wspierania.
    • https://www.googleapis.com/auth/chat.app.all.messages.readonly: aby otrzymywać zdarzenia dotyczące wiadomości i reakcji.
    • https://www.googleapis.com/auth/chat.app.all.users.readstate.readonly ( wersja przedpremierowa dla programistów): aby otrzymywać zdarzenia dotyczące stanu odczytu użytkowników.

Tworzenie subskrypcji klienta

Aby utworzyć subskrypcję klienta, wywołaj metodę subscriptions.create.

Ten przykładowy kod w Pythonie tworzy subskrypcję klienta:

Python

"""Create a customer subscription."""

from google.oauth2 import service_account
from apiclient.discovery import build

# Specify required scopes.
# Replace with the scopes needed for the event types you want to receive.
SCOPES = ['https://www.googleapis.com/auth/chat.app.all.messages.readonly']

# Specify service account details.
CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
)

# Monitor all events for the Google Workspace organization.
TARGET_RESOURCE = '//admin.googleapis.com/customers/CUSTOMER_ID'

# The types of events to receive.
EVENT_TYPES = [
    'google.workspace.chat.message.v1.created',
    'google.workspace.chat.message.v1.updated',
    'google.workspace.chat.message.v1.deleted',
]

# The endpoint to deliver events to.
TOPIC = 'TOPIC_NAME'

# Call the Workspace Events API.
# Note: Use the v1beta endpoint for Developer Preview features.
service = build(
    'workspaceevents',
    'v1beta',
    credentials=CREDENTIALS,
)

BODY = {
    'target_resource': TARGET_RESOURCE,
    'event_types': EVENT_TYPES,
    'notification_endpoint': {'pubsub_topic': TOPIC},
    'payload_options': {'include_resource': RESOURCE_DATA},
}

response = service.subscriptions().create(body=BODY).execute()
print(response)

Zastąp te elementy:

  • CUSTOMER_ID: identyfikator klienta. Możesz też użyć aliasu my_customer dla organizacji Google Workspace aplikacji do obsługi czatu.
  • TOPIC_NAME: pełna nazwa tematu Pub/Sub utworzonego w projekcie w chmurze. Sformatowano jako projects/PROJECT_ID/topics/TOPIC_ID.
  • RESOURCE_DATA: wartość logiczna określająca, czy subskrypcja zawiera dane zasobu w ładunku:
    • True: obejmuje wszystkie dane zasobów. Aby ograniczyć liczbę uwzględnianych pól, dodaj pole fieldMask i określ co najmniej 1 pole dla zmienionego zasobu. Tylko subskrypcje zasobów Google Chat obsługują uwzględnianie danych zasobów.
    • False: nie obejmuje danych o zasobach.