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

במדריך הזה נסביר איך להשתמש ב-method‏ 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 של המרחב המשותף. אפשר לקבל את המזהה על ידי קריאה ל-method‏ 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 של המרחב המשותף. כדי לאתר אותו, אפשר לשלוח קריאה ל-method ListSpaces() או לכתובת ה-URL של המרחב המשותף.

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

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

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

כדי להפעיל את השיטה הזו כאדמינים ב-Google Workspace:

  • קוראים לשיטה באמצעות אימות משתמש, ומציינים היקף הרשאה שתומך בקריאה לשיטה באמצעות הרשאות אדמין.
  • בבקשה, מציינים את הפרמטרים הבאים של השאילתה:
    • מגדירים את 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: אסימון דף, שהתקבל מקריאה קודמת במרחב משותף. צריך לספק את האסימון הזה כדי לאחזר את הדף הבא. כשמחלקים לדפים, ערך המסנן צריך להתאים לקריאה שסיפקה את אסימון הדף. העברת ערך שונה עשויה להוביל לתוצאות בלתי צפויות.
  • filter: מסנן שאילתות. נדרש אימות משתמש. פרטים על שאילתות נתמכות זמינים במסמך העזרה של ListMembershipsRequest.