איך יוצרים מרחב משותף ב-Google Chat ומוסיפים אליו חברים

במדריך הזה נסביר איך להשתמש ב-method‏ setUp() במשאב Space של Google Chat API כדי ליצור מרחב משותף ב-Chat ולהוסיף אליו משתתפים.

המשאבים מסוג Space מייצגים מקום שבו אנשים ואפליקציות Chat יכולים לשלוח הודעות, לשתף קבצים ולשתף פעולה. יש כמה סוגים של מרחבים משותפים:

  • צ'אטים אישיים (DM) הם שיחות בין שני משתמשים או בין משתמש לאפליקציית Chat.
  • שיחות קבוצתיות הן שיחות בין שלושה משתמשים או יותר באפליקציות Chat.
  • מרחבים משותפים עם שם הם מקומות קבועים שבהם אנשים שולחים הודעות, משתפים קבצים ועובדים יחד.

אפשר להשתמש בשיטה setUp() כדי לבצע כל אחת מהפעולות הבאות:

  • יוצרים מרחב משותף עם שם ומוסיפים לו חברים ראשוניים.
  • ליצור צ'אט אישי בין שני אנשים.
  • ליצור צ'אט קבוצתי עם כמה אנשים.

כשאתם מגדירים מרחב משותף, כדאי לקחת בחשבון את הדברים הבאים:

  • המשתמש הקורא (המאומת) מתווסף למרחב המשותף באופן אוטומטי, כך שאין צורך לציין את החברות של המשתמש בבקשה.
  • כשיוצרים צ'אט אישי (DM), אם כבר קיים צ'אט אישי בין שני משתמשים, הוא מוחזר. אחרת, תיווצר שיחה פרטית.
  • כשיוצרים שיחה קבוצתית, אם אף אחד מהחברים בקבוצה שצוינו בבקשה לא נוסף לשיחה הקבוצתית (למשל, בעיה בהרשאות), יכול להיות שתיווצר שיחה קבוצתית ריקה (שכוללת רק את המשתמש שהתחיל את השיחה).
  • אי אפשר להגדיר מרחבים משותפים עם תגובות בשרשור או לצרף אנשים שלא משתמשים ב-Google Workspace.
  • חברויות כפולות (כולל המשתמש הקורא) שצוינו בבקשה מסוננות במקום לגרום לשגיאה בבקשה.

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

Node.js

Python

Java

Apps Script

הגדרת מרחב משותף

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

  • מציינים את היקף ההרשאה chat.spaces.create או chat.spaces.
  • קוראים ל-method‏ SetUpSpace().
  • מעבירים את space כמכונה של Space עם כל השדות הנדרשים, כמו displayName או spaceType.
  • מעבירים את memberships כמערך של מכונות Membership. לכל מכונה:
    • מציינים את users/{user} כדי להוסיף משתמש אנושי כחבר במרחב המשותף, כאשר {user} הוא {person_id} של person מ-People API, או המזהה של user ב-Directory API. לדוגמה, אם המשתמש ב-People API‏ resourceName הוא people/123456789, אפשר להוסיף אותו למרחב המשותף על ידי הוספת חברות עם users/123456789 כ-member.name.
    • מציינים את הערך groups/{group} כדי להוסיף קבוצה כחברה במרחב המשותף, כאשר {group} הוא מזהה הקבוצה שאליה רוצים ליצור חברות. אפשר לאחזר את המזהה של הקבוצה באמצעות Cloud Identity API. לדוגמה, אם Cloud Identity API מחזיר קבוצה בשם groups/123456789, צריך להגדיר את membership.groupMember.name לערך groups/123456789. אי אפשר להוסיף קבוצות מ-Google Groups לצ'אט קבוצתי או לצ'אט אישי, אלא רק למרחב משותף בעל שם.

כדי ליצור צ'אט אישי בין המשתמש מבצע הקריאה לבין משתמש אנושי אחר, צריך לציין את החברות של המשתמש האנושי בבקשה.

כדי ליצור שיחה פרטית בין המשתמש הקורא לאפליקציה הקוראת, מגדירים את הערך של space.singleUserBotDm כ-true ולא מציינים חברויות. אפשר להשתמש בשיטה הזו רק כדי להגדיר צ'אט ישיר עם אפליקציית השיחה. כדי להוסיף את אפליקציית השיחה כחברה במרחב משותף או בצ'אט ישיר קיים בין שני משתמשים אנושיים, אפשר לעיין במאמר יצירת חברות.

בדוגמה הבאה נוצר מרחב עבודה בשם ומשתמשים שניים (המשתמש המאומת ומשתמש נוסף) מצטרפים למרחב העבודה.

Node.js

chat/client-libraries/cloud/set-up-space-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.spaces.create'];

// This sample shows how to set up a named space with one initial member
// with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    space: {
      spaceType: 'SPACE',
      // Replace DISPLAY_NAME here.
      displayName: 'DISPLAY_NAME'
    },
    memberships: [{
      member: {
        // Replace USER_NAME here.
        name: 'users/USER_NAME',
        type: 'HUMAN'
      }
    }]
  };

  // Make the request
  const response = await chatClient.setUpSpace(request);

  // Handle the response
  console.log(response);
}

main().catch(console.error);

Python

chat/client-libraries/cloud/set_up_space_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.spaces.create"]

def set_up_space_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.SetUpSpaceRequest(
        space = {
            "space_type": 'SPACE',
            # Replace DISPLAY_NAME here.
            "display_name": 'DISPLAY_NAME'
        },
        memberships = [{
            "member": {
                # Replace USER_NAME here.
                "name": 'users/USER_NAME',
                "type_": 'HUMAN'
            }
        }]
    )

    # Make the request
    response = client.set_up_space(request)

    # Handle the response
    print(response)

set_up_space_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/SetUpSpaceUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SetUpSpaceRequest;
import com.google.chat.v1.Space;
import com.google.chat.v1.User;

// This sample shows how to set up a named space with one initial member with
// user credential.
public class SetUpSpaceUserCred {

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

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      SetUpSpaceRequest.Builder request = SetUpSpaceRequest.newBuilder()
        .setSpace(Space.newBuilder()
          .setSpaceType(Space.SpaceType.SPACE)
          // Replace DISPLAY_NAME here.
          .setDisplayName("DISPLAY_NAME"))
        .addAllMemberships(ImmutableList.of(Membership.newBuilder()
          .setMember(User.newBuilder()
            // Replace USER_NAME here.
            .setName("users/USER_NAME")
            .setType(User.Type.HUMAN)).build()));
      Space response = chatServiceClient.setUpSpace(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to set up a named space with one initial member with
 * user credential.
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.spaces.create'
 * referenced in the manifest file (appsscript.json).
 */
function setUpSpaceUserCred() {
  // Initialize request argument(s)
  const space = {
    spaceType: 'SPACE',
    // TODO(developer): Replace DISPLAY_NAME here
    displayName: 'DISPLAY_NAME'
  };
  const memberships = [{
    member: {
      // TODO(developer): Replace USER_NAME here
      name: 'users/USER_NAME',
      // User type for the membership
      type: 'HUMAN'
    }
  }];

  // Make the request
  const response = Chat.Spaces.setup({ space: space, memberships: memberships });

  // Handle the response
  console.log(response);
}

כדי להריץ את הדוגמה, מחליפים את הפרטים הבאים:

  • DISPLAY_NAME: השם המוצג של המרחב החדש.
  • USER_NAME: המזהה של המשתמש השני שרוצים לכלול את המינוי שלו.

כדי לעבור למרחב המשותף, משתמשים במזהה המשאב של המרחב המשותף כדי ליצור את כתובת ה-URL שלו. אפשר לקבל את מזהה המשאב מהמרחב המשותף name בגוף התשובה ב-Google Chat. לדוגמה, אם הערך של name במרחב המשותף הוא spaces/1234567, תוכלו להיכנס למרחב המשותף באמצעות כתובת ה-URL הבאה: https://mail.google.com/chat/u/0/#chat/space/1234567.