Wyszukiwanie pokoi Google Chat w organizacji Google Workspace i zarządzanie nimi

Z tego przewodnika dowiesz się, jak administrator Google Workspace może używać metody search() w zasobie Space interfejsu Google Chat API do zarządzania nazwanymi pokojami w organizacji i wykonywania zadań administracyjnych.

Jako administrator Google Workspace możesz używać interfejsu Chat API tylko do zarządzania nazwanymi pokojami, które są zdefiniowane jako SpaceType o wartości SPACE. Nazwane pokoje to trwałe miejsca, w których użytkownicy mogą wysyłać wiadomości, udostępniać pliki i współpracować. Nie możesz używać interfejsu Chat API do zarządzania wiadomościami na czacie ani czatami grupowymi.

Zasób Space reprezentuje miejsce, w którym użytkownicy i aplikacje Chat mogą wysyłać wiadomości, udostępniać pliki i współpracować. Istnieje kilka rodzajów pokoi:

  • Wiadomości na czacie to rozmowy między 2 użytkownikami lub między użytkownikiem a aplikacją Chat.
  • Czaty grupowe to rozmowy między co najmniej 3 użytkownikami a aplikacjami Chat.
  • Nazwane pokoje to trwałe miejsca, w których użytkownicy mogą wysyłać wiadomości, udostępniać pliki i współpracować.

Jako administrator Google Workspace możesz używać interfejsu Chat API do wyszukiwania nazwanych pokoi w organizacji i zarządzania nimi na te sposoby:

  • Sprawdzanie pokoi w organizacji. Za pomocą metody search() możesz pobrać listę wszystkich pokoi w organizacji ze szczegółowymi informacjami o ustawieniach i metadanych każdego pokoju, takimi jak data utworzenia, data ostatniej aktywności, liczba użytkowników, stan ustawienia historii i możliwość zapraszania gości zewnętrznych.
  • Znajdowanie i usuwanie nieaktywnych pokoi. Za pomocą metody search() możesz znaleźć pokoje, które nie były używane od określonej daty i godziny, a następnie je usunąć. Więcej informacji i przykładowy kod znajdziesz w artykule Znajdowanie i usuwanie nieaktywnych pokoi.
  • Eksportowanie listy pokoi na podstawie kryteriów wyszukiwania. Za pomocą metody search() możesz pobrać listę pokoi, które spełniają kryteria określone w query, i wyeksportować wyniki do pliku CSV w celu analizy.
  • Znajdowanie menedżerów pokoi i kontaktowanie się z nimi. Za pomocą metody search() możesz pobrać listę wszystkich pokoi w organizacji, a następnie użyć metody members.list() aby pobrać listę wszystkich użytkowników pokoju, którzy są menedżerami.
  • Znajdowanie pokoi bez wyznaczonych menedżerów. Za pomocą metody search() możesz pobrać listę wszystkich pokoi w organizacji, a następnie użyć metody members.list() , aby pobrać listę pokoi, które nie mają menedżerów.

Wymagania wstępne

Python

  • Musisz mieć uprawnienia administratora Zarządzanie czatem i rozmowami w pokoju w organizacji Google Workspace.

Wywoływanie interfejsu Google Chat API jako administrator

Aby uwierzytelnić się jako użytkownik z uprawnieniami administratora, musisz przekazać w żądaniu te informacje:

  • Określ zakres autoryzacji który obsługuje uwierzytelnianie użytkownika z uprawnieniami administratora.
  • Ustaw pole useAdminAccess na true.

W tej sekcji znajdziesz te przykłady wywoływania interfejsu Chat API jako administrator:

Wyszukiwanie pokoi w organizacji

Z tego przykładu dowiesz się, jak administratorzy Google Workspace mogą używać metody search() w zasobie Space interfejsu Chat API do wyszukiwania pokoi w organizacji na podstawie określonych kryteriów.

Aby wywołać metodę search() z uwierzytelnianiem użytkownika i uprawnieniami administratora, musisz w żądaniu określić te informacje:

  • Określ zakres autoryzacji chat.admin.spaces lub chat.admin.spaces.readonly.
  • Określ useAdminAccess=true.
  • Określ parametry query wyszukiwania, aby filtrować wyniki:
    • customer = "customers/my_customer" – wymagana wartość, a jedyną obsługiwaną wartością jest customers/my_customer.
    • spaceType = "SPACE" – wymagana wartość, a jedyną obsługiwaną wartością jest SPACE.
    • Opcjonalnie możesz dodać co najmniej 1 dodatkowe zapytanie, aby dokładniej filtrować wyszukiwanie pokoi, np. słowa kluczowe w nazwach wyświetlanych (displayName), datę utworzenia (createTime) lub na podstawie aktywności w pokoju (lastActiveTime).

Poniższy kod pokazuje, jak używać uprawnień administratora do wyszukiwania pokoi, których nazwa wyświetlana zawiera słowa „Hello” i „World” w dowolnej kombinacji:

Python

  1. W katalogu roboczym utwórz plik o nazwie search_spaces_for_hello_world.py.
  2. W pliku search_spaces_for_hello_world.py umieść ten kod:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    SCOPES = [
      'https://www.googleapis.com/auth/chat.admin.spaces.readonly',
    ]
    
    def main():
    # Authenticate with Google Workspace
    # and get user authorization.
    flow = InstalledAppFlow.from_client_secrets_file(
        'credentials.json',
        SCOPES,
    )
    creds = flow.run_local_server()
    
    # Build a service endpoint for Chat API.
    chat = build('chat', 'v1', credentials=creds)
    
    spaces = []
    page_token = ''
    
    # Search for all spaces.
    while True:
      result = (
          chat.spaces()
          .search(
              useAdminAccess=True,
              query=(
                'customer = "customers/my_customer"'
                'AND spaceType = "SPACE"'
                'AND displayName:"Hello World"'
                )
    pageToken=page_token,
          )
          .execute()
      )
      if 'spaces' not in result:
        print('No spaces found named Hello World.')
        return
      spaces.extend(result['spaces'])
      if 'nextPageToken' in result:
        page_token = result['nextPageToken']
      else:
        break
    
    print(str(len(spaces)) + ' spaces found:')
    # Prints the list of spaces.
    print(spaces)
    
  3. W katalogu roboczym skompiluj i uruchom przykład:

    python3 search_spaces_for_hello_world.py

Znajdowanie i usuwanie nieaktywnych pokoi

Z tego przykładu dowiesz się, jak administratorzy Google Workspace mogą używać metody search() w zasobie Space interfejsu Chat API do znajdowania nieaktywnych pokoi, a następnie usuwać je za pomocą metody delete() z parametrem useAdminAccess.

Nieaktywne pokoje Google Chat – te, które nie są już aktywnie używane – mogą zajmować cenne miejsce na dysku i powodować bałagan w interfejsie użytkownika. Za pomocą metody search() administratorzy mogą znaleźć pokoje, które nie były używane od określonej daty i godziny, np. od 2 miesięcy. Po wyświetleniu listy pokoi administratorzy mogą podjąć działania, np. zaktualizować lub usunąć pokoje.

Aby wyszukać listę nieaktywnych pokoi, a następnie je usunąć za pomocą uwierzytelniania użytkownika i uprawnień administratora, w żądaniach musisz przekazać te informacje:

  • Aby wyszukać nieaktywne pokoje, określ te informacje:
    • Określ zakres autoryzacji chat.admin.spaces lub chat.admin.spaces.readonly.
    • Wywołaj metodę search() w zasobie Spaces.
    • Ustaw INACTIVE_SPACE_DEADLINE na datę i godzinę ostatniej aktywności, która określa, które pokoje mają zostać zwrócone.
    • Określ useAdminAccess=true.
    • Określ parametry query wyszukiwania, aby filtrować wyniki:
      • customer = "customers/my_customer" – wymagana wartość, a jedyną obsługiwaną wartością jest customers/my_customer.
      • spaceType = "SPACE" – wymagana wartość, a jedyną obsługiwaną wartością jest SPACE.
      • lastActiveTime – aby filtrować żądanie i zwracać tylko nieaktywne pokoje, określ lastActiveTime.
  • Aby usunąć nieaktywne pokoje z wyników wyszukiwania, określ te informacje:
    • Określ zakres autoryzacji chat.admin.delete.
    • Wywołaj metodę delete() w zasobie Spaces.
    • Określ useAdminAccess=true.

Poniższy kod pokazuje, jak wyszukiwać nieaktywne pokoje i usuwać je za pomocą uprawnień administratora:

Python

  1. W katalogu roboczym utwórz plik o nazwie find_and_delete_inactive_spaces.py.

  2. W pliku find_and_delete_inactive_spaces.py umieść ten kod:

    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    SCOPES = [
        'https://www.googleapis.com/auth/chat.admin.spaces.readonly',
        'https://www.googleapis.com/auth/chat.admin.delete',
    ]
    
    # Any spaces that have not been active since this time will be deleted.
    INACTIVE_SPACE_DEADLINE = '"INACTIVE_DATE"'
    
    def main():
      # Authenticate with Google Workspace
      # and get user authorization.
      flow = InstalledAppFlow.from_client_secrets_file(
          'credentials.json',
          SCOPES,
      )
      creds = flow.run_local_server()
    
      # Build a service endpoint for Chat API.
      chat = build('chat', 'v1', credentials=creds)
    
      spaces = []
      page_token = ''
    
      # Search for all inactive spaces.
      while True:
        result = (
            chat.spaces()
            .search(
                useAdminAccess=True,
                query=(
                    'customer = "customers/my_customer" AND spaceType = "SPACE" AND'
                    ' lastActiveTime < '
                )
                + INACTIVE_SPACE_DEADLINE,
                pageToken=page_token,
            )
            .execute()
        )
        if 'spaces' not in result:
          print('No inactive spaces found.')
          return
        spaces.extend(result['spaces'])
        if 'nextPageToken' in result:
          page_token = result['nextPageToken']
        else:
          break
    
      print(str(len(spaces)) + ' inactive spaces found:')
      # Prints the list of inactive spaces.
      print(spaces)
    
      # Delete all inactive spaces.
      for space in spaces:
        (
            chat.spaces()
            .delete(
                useAdminAccess=True,
                name=space['name'],
            )
            .execute()
        )
        print(
            'Deleted space: '
            + space['displayName']
            + ', Resource Name: '
            + space['name']
        )
    
    if __name__ == '__main__':
      main()
    
  3. W kodzie zastąp INACTIVE_DATE datą i godziną w formacie RRRR-MM-DDTGG:MM:SS+GG:MM. Na przykład „2024-06-01T00:00:00+00:00”.

  4. W katalogu roboczym skompiluj i uruchom przykład:

    python3 find_and_delete_inactive_spaces.py