Список участников в пространстве

В этом руководстве объясняется, как использовать метод list() ресурса Membership API Google Chat для отображения списка участников пространства в виде постраничного, фильтруемого списка членства в пространстве.

  • При отображении списка участников с аутентификацией через приложение отображается список участников, имеющих доступ к пространствам, созданным приложением Chat, но исключаются участники самого приложения Chat, включая его собственные.
  • Отображение членства с аутентификацией пользователя показывает, к каким разделам имеет доступ авторизованный пользователь.
  • Отображение членства в качестве администратора Google Workspace с аутентификацией пользователя с использованием прав администратора позволяет отобразить членство во всех пространствах вашей организации Google Workspace.

Ресурс Membership показывает, приглашен ли пользователь (человек или приложение Google Chat) в данное пространство, является ли он его частью или отсутствует.

Предварительные требования

Node.js

Python

Java

Apps Script

Список участников пространства с аутентификацией пользователей.

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

  • При аутентификации пользователя укажите область авторизации chat.memberships.readonly или chat.memberships .
  • Вызовите метод ListMemberships() .
  • Чтобы отобразить список групп Google, установите параметр запроса showGroups в true .

В следующем примере перечислены участники группы Google, люди и пользователи приложений, видимые авторизованному пользователю.

Node.js

chat/client-libraries/cloud/list-memberships-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = [
  'https://www.googleapis.com/auth/chat.memberships.readonly',
];

// This sample shows how to list memberships with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
    // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
    // ROLE_MANAGER)
    filter: 'member.type = "HUMAN"',
  };

  // Make the request
  const pageResult = chatClient.listMembershipsAsync(request);

  // Handle the response. Iterating over pageResult will yield results and
  // resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

await main();

Python

chat/client-libraries/cloud/list_memberships_user_cred.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.memberships.readonly"]

# This sample shows how to list memberships with user credential
def list_memberships_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.ListMembershipsRequest(
        # Replace SPACE_NAME here
        parent = 'spaces/SPACE_NAME',
        # Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
        # ROLE_MANAGER)
        filter = 'member.type = "HUMAN"',
        # Number of results that will be returned at once
        page_size = 100
    )

    # Make the request
    page_result = client.list_memberships(request)

    # Handle the response. Iterating over page_result will yield results and
    # resolve additional pages automatically.
    for response in page_result:
        print(response)

list_memberships_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/ListMembershipsUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ListMembershipsRequest;
import com.google.chat.v1.ListMembershipsResponse;
import com.google.chat.v1.Membership;

// This sample shows how to list memberships with user credential.
public class ListMembershipsUserCred {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.memberships.readonly";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      ListMembershipsRequest.Builder request = ListMembershipsRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        // Filter membership by type (HUMAN or BOT) or role
        // (ROLE_MEMBER or ROLE_MANAGER).
        .setFilter("member.type = \"HUMAN\"")
        // Number of results that will be returned at once.
        .setPageSize(10);

      // Iterating over results and resolve additional pages automatically.
      for (Membership response :
          chatServiceClient.listMemberships(request.build()).iterateAll()) {
        System.out.println(JsonFormat.printer().print(response));
      }
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to list memberships with user credential
 *
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships.readonly'
 * referenced in the manifest file (appsscript.json).
 */
function listMembershipsUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here
  const parent = "spaces/SPACE_NAME";
  // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
  // ROLE_MANAGER)
  const filter = 'member.type = "HUMAN"';

  // Iterate through the response pages using page tokens
  let responsePage;
  let pageToken = null;
  do {
    // Request response pages
    responsePage = Chat.Spaces.Members.list(parent, {
      filter: filter,
      pageSize: 10,
      pageToken: pageToken,
    });
    // Handle response pages
    if (responsePage.memberships) {
      for (const membership of responsePage.memberships) {
        console.log(membership);
      }
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

Для запуска этого примера замените SPACE_NAME на идентификатор из поля name пространства. Вы можете получить идентификатор, вызвав метод ListSpaces() или из URL-адреса пространства.

API Google Chat возвращает список участников групп Google, пользователей и приложений из указанного пространства.

Список участников пространства с аутентификацией через приложение.

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

В следующем примере перечислены участники виртуального пространства (не администраторы пространства), видимые для приложения «Чат»:

Node.js

chat/client-libraries/cloud/list-memberships-app-cred.js
import {createClientWithAppCredentials} from './authentication-utils.js';

// This sample shows how to list memberships with app credential
async function main() {
  // Create a client
  const chatClient = createClientWithAppCredentials();

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
    // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
    // ROLE_MANAGER)
    filter: 'member.type = "HUMAN"',
  };

  // Make the request
  const pageResult = chatClient.listMembershipsAsync(request);

  // Handle the response. Iterating over pageResult will yield results and
  // resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

await main();

Python

chat/client-libraries/cloud/list_memberships_app_cred.py
from authentication_utils import create_client_with_app_credentials
from google.apps import chat_v1 as google_chat

# This sample shows how to list memberships with app credential
def list_memberships_app_cred():
    # Create a client
    client = create_client_with_app_credentials()

    # Initialize request argument(s)
    request = google_chat.ListMembershipsRequest(
        # Replace SPACE_NAME here
        parent = 'spaces/SPACE_NAME',
        # Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
        # ROLE_MANAGER)
        filter = 'member.type = "HUMAN"',
        # Number of results that will be returned at once
        page_size = 100
    )

    # Make the request
    page_result = client.list_memberships(request)

    # Handle the response. Iterating over page_result will yield results and
    # resolve additional pages automatically.
    for response in page_result:
        print(response)

list_memberships_app_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/ListMembershipsAppCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ListMembershipsRequest;
import com.google.chat.v1.ListMembershipsResponse;
import com.google.chat.v1.Membership;

// This sample shows how to list memberships with app credential.
public class ListMembershipsAppCred {

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithAppCredentials()) {
      ListMembershipsRequest.Builder request = ListMembershipsRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        // Filter membership by type (HUMAN or BOT) or role
        // (ROLE_MEMBER or ROLE_MANAGER).
        .setFilter("member.type = \"HUMAN\"")
        // Number of results that will be returned at once.
        .setPageSize(10);

      // Iterate over results and resolve additional pages automatically.
      for (Membership response :
          chatServiceClient.listMemberships(request.build()).iterateAll()) {
        System.out.println(JsonFormat.printer().print(response));
      }
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to list memberships with app credential
 *
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.bot'
 * used by service accounts.
 */
function listMembershipsAppCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here
  const parent = "spaces/SPACE_NAME";
  // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
  // ROLE_MANAGER)
  const filter = 'member.type = "HUMAN"';

  // Iterate through the response pages using page tokens
  let responsePage;
  let pageToken = null;
  do {
    // Request response pages
    responsePage = Chat.Spaces.Members.list(
      parent,
      {
        filter: filter,
        pageSize: 10,
        pageToken: pageToken,
      },
      getHeaderWithAppCredentials(),
    );
    // Handle response pages
    if (responsePage.memberships) {
      for (const membership of responsePage.memberships) {
        console.log(membership);
      }
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

Для запуска этого примера замените SPACE_NAME на идентификатор из поля name пространства. Вы можете получить идентификатор, вызвав метод ListSpaces() или из URL-адреса пространства.

API Google Chat возвращает список участников виртуального пространства (за исключением администраторов пространства) из указанного пространства.

Указывайте администраторов Google Workspace в качестве администраторов для добавления участников в список пользователей.

Если вы являетесь администратором Google Workspace, вы можете вызвать метод ListMemberships() , чтобы получить список членства для любого пространства в вашей организации Google Workspace. API чата возвращает только информацию о членстве пользователей — как внутренних, так и внешних — или групп Google из вашей организации, поэтому он не отображает информацию о членстве для любых приложений чата.

Чтобы вызвать этот метод от имени администратора Google Workspace, выполните следующие действия:

  • Вызовите метод, используя аутентификацию пользователя, и укажите область авторизации , которая поддерживает вызов метода с правами администратора .
  • В запросе укажите следующие параметры:
    • Установите параметр useAdminAccess в true .
    • Чтобы отображались только пользователи, установите для filter member.type значение HUMAN .
    • Чтобы отобразить пользователей и группы, установите filter для member.type , который не равен BOT AND showGroups равного true .

Для получения дополнительной информации и примеров см. раздел «Управление пространствами Google Chat в качестве администратора Google Workspace» .

Настройте пагинацию или отфильтруйте список.

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

  • pageSize : Максимальное количество возвращаемых записей о членстве. Сервис может вернуть меньше этого значения. Если значение не указано, возвращается не более 100 записей. Максимальное значение — 1000; значения больше 1000 автоматически преобразуются в 1000.
  • pageToken : Токен страницы, полученный из предыдущего вызова списка пространств. Предоставьте этот токен для получения следующей страницы. При постраничной навигации значение фильтра должно соответствовать вызову, предоставившему токен страницы. Передача другого значения может привести к неожиданным результатам.
  • filter : Фильтр запроса. Требует аутентификации пользователя . Подробную информацию о поддерживаемых запросах см. в справочнике ListMembershipsRequest .