Listar os participantes de um espaço

Neste guia, explicamos como usar o método list() no recurso Membership da API Google Chat para listar os participantes em um espaço como uma lista paginada e filtrável de associações a um espaço.

  • A listagem de participantes com autenticação de app mostra os participantes nos espaços a que o app Chat tem acesso, mas exclui os participantes do app Chat, incluindo o próprio app.
  • A listagem de associações com autenticação do usuário lista as associações em espaços a que o usuário autenticado tem acesso.
  • Listar as assinaturas como administrador do Google Workspace com autenticação de usuário usando privilégios de administrador lista as assinaturas em todos os espaços na sua organização do Google Workspace.

O recurso Membership representa se um usuário humano ou um app do Google Chat foi convidado para um espaço, faz parte dele ou está ausente.

Pré-requisitos

Node.js

Python

Java

Apps Script

Listar membros em um espaço com autenticação do usuário

Para listar usuários, grupos do Google e o app Chat em um espaço a que o usuário autenticado tem acesso, transmita o seguinte na sua solicitação:

O exemplo a seguir lista os membros do Grupo do Google, humanos e do aplicativo visíveis para o usuário autenticado.

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);
  }
}

main().catch(console.error);

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) {
      responsePage.memberships.forEach((membership) => console.log(membership));
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

Para executar este exemplo, substitua SPACE_NAME pelo ID do campo name do espaço. Para conseguir o ID, chame o método ListSpaces() ou o URL do espaço.

A API Google Chat retorna uma lista de membros do Google Group, humanos e de apps do espaço especificado.

Listar os membros de um espaço com autenticação de app

Para listar usuários e o app Chat em um espaço a que o app autenticado tem acesso, transmita o seguinte na sua solicitação:

O exemplo a seguir lista os participantes humanos do espaço (não os administradores) visíveis para o app do Chat:

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);
  }
}

main().catch(console.error);

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) {
      responsePage.memberships.forEach((membership) => console.log(membership));
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

Para executar este exemplo, substitua SPACE_NAME pelo ID do campo name do espaço. Para conseguir o ID, chame o método ListSpaces() ou o URL do espaço.

A API Google Chat retorna uma lista de membros do espaço (exceto administradores) do espaço especificado.

Listar participantes como administradores do Google Workspace

Se você for administrador do Google Workspace, poderá chamar o método ListMemberships() para listar as assinaturas de qualquer espaço na sua organização do Google Workspace. A API Chat só retorna as associações de usuários, internas e externas, ou de Grupos do Google da sua organização e, portanto, omite as associações de todos os apps do Chat.

Para chamar esse método como administrador do Google Workspace, faça o seguinte:

  • Chame o método usando a autenticação do usuário e especifique um escopo de autorização que permita chamar o método usando privilégios de administrador.
  • Na solicitação, especifique os seguintes parâmetros de consulta:
    • Defina useAdminAccess como true.
    • Para retornar apenas usuários, defina filter para member.type igual a HUMAN.
    • Para retornar usuários e grupos, defina filter para member.type diferente de BOT AND showGroups igual a true.

Para mais informações e exemplos, consulte Gerenciar espaços do Google Chat como administrador do Google Workspace.

Personalizar a paginação ou filtrar a lista

Para listar as assinaturas, transmita os seguintes parâmetros de consulta para personalizar a paginação ou filtrar as assinaturas listadas:

  • pageSize: o número máximo de assinaturas a serem retornadas. O serviço pode retornar menos que esse valor. Se não for especificado, serão retornados no máximo 100 espaços. O valor máximo é 1.000. Valores maiores são automaticamente alterados para 1.000.
  • pageToken: um token de página recebido de uma chamada de lista de espaços anterior. Forneça este token para recuperar a página seguinte. Ao fazer a paginação, o valor do filtro precisa corresponder à chamada que forneceu o token da página. Transmitir um valor diferente pode levar a resultados inesperados.
  • filter: um filtro de consulta. Requer autenticação do usuário. Para saber mais sobre as consultas compatíveis, consulte a referência ListMembershipsRequest.