איך מציגים את רשימת המשתתפים במרחבים משותפים

במדריך הזה מוסבר איך להשתמש בשיטה list() במשאב Membership של Google Chat API כדי ליצור רשימה של חברים במרחב. הרשימה מחולקת לדפים, ואפשר לסנן אותה לפי חברות במרחב.

  • הצגת חברות עם אימות אפליקציה מציגה חברות במרחבים שאפליקציית Chat יכולה לגשת אליהם, אבל לא כוללת חברות באפליקציית Chat, כולל חברות משלה.
  • רשימת חברויות עם אימות משתמשים מציגה חברויות במרחבים שלמשתמש המאומת יש גישה אליהם.
  • אדמינים ב-Google Workspace יכולים להשתמש בהרשאות אדמין כדי להציג רשימה של כל החברים בכל המרחבים בארגון Google Workspace שלהם.

המשאב Membership מייצג אם משתמש אנושי או אפליקציית Google Chat הוזמנו למרחב, הם חלק ממנו או שהם לא נמצאים בו.

דרישות מוקדמות

Node.js

Python

Java

Apps Script

הצגת רשימת המשתתפים במרחב עם אימות משתמשים

כדי להציג רשימה של משתמשים, קבוצות Google ואפליקציית Chat במרחב שלמשתמש המאומת יש גישה אליו, צריך להעביר את הפרטים הבאים בבקשה:

  • באימות משתמש, מציינים את היקף ההרשאות של chat.memberships.readonly או chat.memberships.
  • מבצעים קריאה ל-method‏ 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);
  }
}

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

כדי להריץ את הדוגמה הזו, מחליפים את SPACE_NAME במזהה מהשדה name של המרחב. אפשר לקבל את המזהה על ידי הפעלת השיטה ListSpaces() או מכתובת ה-URL של המרחב.

‫Google Chat API מחזיר רשימה של חברים בקבוצות Google, משתמשים ואפליקציות מהמרחב שצוין.

הצגת רשימת המשתתפים במרחב עם אימות אפליקציה

כדי להציג רשימה של משתמשים ואפליקציית Chat במרחב שלאפליקציה המאומתת יש גישה אליו, צריך להעביר את הפרטים הבאים בבקשה:

  • באימות אפליקציות, מציינים את היקף ההרשאה chat.bot.
  • מבצעים קריאה ל-method‏ ListMemberships().
  • כדי להציג רשימה של קבוצות Google, מגדירים את פרמטר השאילתה showGroups לערך true.

בדוגמה הבאה מפורטים משתתפים במרחב (לא מנהלי המרחב) שאפליקציית 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);
}

כדי להריץ את הדוגמה הזו, מחליפים את SPACE_NAME במזהה מהשדה name של המרחב. אפשר לקבל את המזהה על ידי הפעלת השיטה ListSpaces() או מכתובת ה-URL של המרחב.

‫Google Chat API מחזיר רשימה של משתתפים אנושיים במרחב (לא כולל מנהלי המרחב) מהמרחב שצוין.

הצגת רשימת חברים כאדמין ב-Google Workspace

אדמינים ב-Google Workspace יכולים להתקשר לשיטה ListMemberships() כדי להציג רשימה של חברים בכל מרחב בארגון שלהם ב-Google Workspace. ‫Chat API מחזיר רק חברויות של משתמשים – פנימיים וחיצוניים – או של קבוצות Google מהארגון שלכם, ולכן הוא לא כולל חברויות של אפליקציות ל-Chat.

כדי להפעיל את ה-method הזה כאדמינים ב-Google Workspace, צריך לבצע את הפעולות הבאות:

  • קוראים ל-method באמצעות אימות משתמש, ומציינים היקף הרשאות שתומך בקריאה ל-method באמצעות הרשאות אדמין.
  • בבקשה, מציינים את הפרמטרים הבאים של השאילתה:
    • מגדירים את useAdminAccess להיות true.
    • כדי להחזיר רק משתמשים, מגדירים את filter של member.type כך שיהיה שווה ל-HUMAN.
    • כדי להחזיר משתמשים וקבוצות, מגדירים את filter עבור member.type לא שווה ל-BOT AND showGroups שווה ל-true.

מידע נוסף ודוגמאות זמינים במאמר ניהול מרחבים ב-Google Chat כאדמינים ב-Google Workspace.

התאמה אישית של המספור או סינון הרשימה

כדי להציג את רשימת החברויות, מעבירים את פרמטרי השאילתה הבאים כדי להתאים אישית את המספור של הדפים או לסנן את רשימת החברויות:

  • pageSize: המספר המקסימלי של חברויות שיוחזרו. יכול להיות שהשירות יחזיר פחות מהערך הזה. אם לא מציינים מספר, המערכת מחזירה עד 100 מרחבים. הערך המקסימלי הוא 1,000. ערכים שגדולים מ-1,000 משתנים אוטומטית ל-1,000.
  • pageToken: טוקן דף שהתקבל מקריאה קודמת של list spaces. צריך להזין את האסימון הזה כדי לאחזר את הדף הבא. כשמבצעים חלוקה לעמודים, ערך המסנן צריך להיות זהה לקריאה שסיפקה את אסימון הדף. העברת ערך שונה עלולה להוביל לתוצאות לא צפויות.
  • filter: מסנן של שאילתה. נדרש אימות משתמש. פרטים על שאילתות נתמכות זמינים במפרט של השיטה ב-ListMembershipsRequest.