Находите чат-группы Google Chat для своей организации в Google Workspace и управляйте ими.

В этом руководстве объясняется, как администратор Google Workspace может использовать метод search() на ресурсе Space API Google Chat для управления именованными пространствами в своей организации и выполнения административных задач.

Как администратор Google Workspace, вы можете использовать API чата только для управления именованными пространствами, которые определяются как SpaceType со значением SPACE . Именованные пространства — это постоянные места, где пользователи отправляют сообщения, обмениваются файлами и работают вместе. API чата нельзя использовать для управления прямыми сообщениями (DM) или групповыми чатами.

Ресурс Space представляет собой место, где пользователи и чат-приложения могут отправлять сообщения, обмениваться файлами и работать вместе. Существует несколько типов пространств:

  • Прямые сообщения (ЛС) — это беседы между двумя пользователями или пользователем и приложением чата.
  • Групповые чаты — это беседы между тремя и более пользователями и приложениями чата.
  • Именованные пространства — это постоянные места, где люди отправляют сообщения, обмениваются файлами и сотрудничают.

Как администратор Google Workspace, вы можете использовать API чата для поиска и управления именованными пространствами в вашей организации следующими способами:

  • Аудит пространств в организации. Используя метод search() , вы можете получить список всех пространств в организации с подробной информацией о настройках каждого пространства и метаданными, такими как дата создания, дата последней активности, количество участников, статус настройки истории и возможность приглашать внешних гостей.
  • Поиск и удаление неактивных пробелов. Метод search() позволяет найти пробелы, не используемые с указанной даты и времени, а затем удалить их. Подробнее и пример кода см. в статье Поиск и удаление неактивных пробелов .
  • Экспортируйте список пространств на основе критериев поиска. Используя метод search() , вы можете получить список пространств, соответствующих критериям, указанным в query , и экспортировать результаты в CSV-файл для анализа.
  • Найдите менеджеров пространств и свяжитесь с ними. С помощью метода search() вы можете получить список всех пространств в организации, а затем с помощью метода members.list() получить список всех участников пространства, являющихся менеджерами.
  • Найти пространства без назначенных менеджеров. С помощью метода search() можно получить список всех пространств в организации, а затем использовать метод members.list() для получения списка пространств, у которых нет менеджеров.

Предпосылки

Питон

  • У вас должны быть права администратора по управлению чатами и пространствами в вашей организации Google Workspace.

Вызовите API Google Chat от имени администратора

Чтобы пройти аутентификацию как пользователь с правами администратора , необходимо передать в запросе следующее:

  • Укажите область авторизации , поддерживающую использование аутентификации пользователя с правами администратора.
  • Установите для поля useAdminAccess значение true .

В этом разделе показаны следующие примеры вызова API чата от имени администратора:

Поиск пространств в вашей организации

В этом примере объясняется, как администраторы Google Workspace могут использовать метод search() в ресурсе Space API чата для поиска пространств в организации на основе указанных критериев.

Для вызова метода search() с аутентификацией пользователя и привилегиями администратора необходимо указать в запросе следующее:

  • Укажите область авторизации chat.admin.spaces или chat.admin.spaces.readonly .
  • Укажите useAdminAccess=true .
  • Укажите параметры поискового query для фильтрации результатов:
    • customer = "customers/my_customer" — обязательное и единственное поддерживаемое значение — customers/my_customer
    • spaceType = "SPACE" — обязательное и единственное поддерживаемое значение — SPACE
    • При необходимости один или несколько дополнительных запросов для дальнейшей фильтрации поиска пространства, например, по ключевым словам в отображаемых именах ( displayName ), по дате создания ( createTime ) или по активности пространства ( lastActiveTime ).

В следующем коде показан пример использования прав администратора для поиска пространств с отображаемым именем, содержащим «Hello» и «World» в любой комбинации:

Питон

  1. В рабочем каталоге создайте файл с именем search_spaces_for_hello_world.py .
  2. Включите следующий код в search_spaces_for_hello_world.py :

    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. В вашем рабочем каталоге соберите и запустите пример:

    python3 search_spaces_for_hello_world.py

Найти и удалить неактивные пространства

В этом примере объясняется, как администраторы Google Workspace могут использовать метод search() в ресурсе Space API чата для поиска неактивных пространств, а затем удалять их с помощью метода delete() с параметром useAdminAccess .

Неактивные чат-группы Google Chat, которые больше не используются активно, могут занимать ценное дисковое пространство и создавать беспорядок в пользовательском интерфейсе. Используя метод search() , администраторы могут найти чат-группы, которые не использовались с указанной даты и времени, например, два месяца назад. После того, как список чат-групп будет пронумерован, администраторы могут предпринять над ними действия, например, обновить или удалить их.

Чтобы выполнить поиск списка неактивных пространств, а затем удалить их с аутентификацией пользователя и правами администратора , передайте в своих запросах следующее:

  • Для поиска неактивных пространств укажите следующее:
    • Укажите область авторизации chat.admin.spaces или chat.admin.spaces.readonly .
    • Вызовите метод search() на ресурсе Spaces .
    • Установите INACTIVE_SPACE_DEADLINE на дату и время последней активности, определяющей возвращаемые пробелы.
    • Укажите useAdminAccess=true .
    • Укажите параметры поискового query для фильтрации результатов:
      • customer = "customers/my_customer" — обязательное и единственное поддерживаемое значение — customers/my_customer
      • spaceType = "SPACE" — обязательное и единственное поддерживаемое значение — SPACE
      • lastActiveTime — чтобы отфильтровать запрос и вернуть только неактивные пространства, укажите lastActiveTime
  • Чтобы удалить неактивные пробелы из результатов поиска, укажите следующее:
    • Укажите область авторизации chat.admin.delete .
    • Вызовите метод delete() для ресурса Spaces .
    • Укажите useAdminAccess=true .

В следующем коде показан пример поиска неактивных пространств и их удаления с использованием прав администратора:

Питон

  1. В рабочем каталоге создайте файл с именем find_and_delete_inactive_spaces.py .

  2. Включите следующий код в find_and_delete_inactive_spaces.py :

    
    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. В коде замените INACTIVE_DATE на дату и время в формате ГГГГ-ММ-ДДТЧЧ:ММ:СС+ЧЧ:ММ. Например, «2024-06-01T00:00:00+00:00».

  4. В вашем рабочем каталоге соберите и запустите пример:

    python3 find_and_delete_inactive_spaces.py