Elenca i membri in uno spazio

Questa guida spiega come utilizzare il metodo list() nella risorsa Membership dell'API Google Chat per elencare i membri di uno spazio come elenco filtrabile e paginato delle adesioni a uno spazio.

  • L'elenco delle iscrizioni con autenticazione app elenca le iscrizioni negli spazi a cui l'app Chat ha accesso, ma esclude quelle all'app di Chat, inclusi i suoi.
  • L'elenco delle iscrizioni con autenticazione dell'utente elenca le iscrizioni negli spazi a cui l'utente autenticato ha accesso.
  • Se elenchi le iscrizioni come amministratore di Google Workspace con autenticazione utente utilizzando i privilegi amministrativi, vengono elencate le iscrizioni in tutti gli spazi della tua organizzazione Google Workspace.

La risorsa Membership indica se un utente o un'app Google Chat è invitato a un ingegno, fa parte di uno spazio o è assente da uno spazio.

Prerequisiti

Node.js

Python

Java

Apps Script

Elencare i membri di uno spazio con l'autenticazione utente

Per elencare gli utenti, Google Gruppi e l'app Chat in uno spazio a cui l'utente autenticato ha accesso, passa quanto segue nella richiesta:

  • Con l'autenticazione dell'utente, specifica l'ambito dell'autorizzazione chat.memberships.readonly o chat.memberships.
  • Chiama il metodo ListMemberships().
  • Per elencare i gruppi Google, imposta il parametro di query showGroups su true.

L'esempio seguente elenca i membri di Gruppi Google, persone e app visibili all'utente autenticato.

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

Per eseguire questo esempio, sostituisci SPACE_NAME con l'ID del campo name dello spazio. Puoi ottenere l'ID chiamando il metodo ListSpaces() o dall'URL dello spazio.

L'API Google Chat restituisce un elenco di membri di gruppi Google, persone e app dello spazio specificato.

Elenco dei membri di uno spazio con autenticazione tramite app

Per elencare gli utenti e l'app di Chat in uno spazio a cui ha accesso l'app autenticata, passa quanto segue nella richiesta:

L'esempio seguente elenca i membri umani dello spazio (non i gestori dello spazio) visibili all'app 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);
}

Per eseguire questo esempio, sostituisci SPACE_NAME con l'ID del campo name dello spazio. Puoi ottenere l'ID chiamando il metodo ListSpaces() o dall'URL dello spazio.

L'API Google Chat restituisce un elenco di membri dello spazio umani (esclusi i gestori dello spazio) dello spazio specificato.

Elencare i membri come amministratore di Google Workspace

Se sei un amministratore di Google Workspace, puoi chiamare il metodo ListMemberships() per elencare le iscrizioni per qualsiasi spazio della tua organizzazione Google Workspace. L'API Chat restituisce solo i membri degli utenti, sia interni che esterni, o dei gruppi Google della tua organizzazione e, pertanto, omette i membri di qualsiasi app di Chat.

Per chiamare questo metodo in qualità di amministratore di Google Workspace:

  • Chiama il metodo utilizzando l'autenticazione utente e specifica un ambito di autorizzazione che supporti la chiamata del metodo utilizzando privilegi di amministratore.
  • Nella richiesta, specifica i seguenti parametri di query:
    • Imposta useAdminAccess su true.
    • Per restituire solo gli utenti, imposta il filter per member.type su HUMAN.
    • Per restituire utenti e gruppi, imposta filter per member.type non uguale a BOT AND showGroups uguale a true.

Per ulteriori informazioni ed esempi, vedi Gestire gli spazi di Google Chat come amministratore di Google Workspace.

Personalizzare la paginazione o filtrare l'elenco

Per elencare gli abbonamenti, passa i seguenti parametri di query per personalizzare la paginazione o filtrare gli abbonamenti elencati:

  • pageSize: il numero massimo di adesioni da restituire. Il servizio potrebbe restituire un valore inferiore a questo valore. Se non specificati, vengono restituiti al massimo 100 spazi. Il valore massimo è 1000; i valori superiori a 1000 vengono modificati automaticamente in 1000.
  • pageToken: un token di pagina ricevuto da una precedente chiamata di spazi di elenco. Fornisci questo token per recuperare la pagina successiva. Quando viene visualizzata la paginazione, il valore del filtro deve corrispondere alla chiamata che ha fornito il token pagina. Se passi un valore diverso, potresti ottenere risultati imprevisti.
  • filter: un filtro delle query. Richiede l'autenticazione utente. Per i dettagli delle query supportate, consulta la documentazione di riferimento di ListMembershipsRequest.