สร้างพื้นที่ใน Google Chat และเพิ่มสมาชิก

คู่มือนี้อธิบายวิธีใช้เมธอด setUp() ในทรัพยากร Space ของ Google Chat API เพื่อสร้างพื้นที่ใน Chat และเพิ่มสมาชิกในพื้นที่ดังกล่าว

ทรัพยากร Spaceแสดงถึงพื้นที่ที่ผู้คนและแอปใน Chat สามารถส่งข้อความ แชร์ไฟล์ และทำงานร่วมกันได้ พื้นที่ทำงานมีหลายประเภท ดังนี้

  • ข้อความส่วนตัว (DM) คือการสนทนาระหว่างผู้ใช้ 2 คน หรือระหว่างผู้ใช้กับแอปใน Chat
  • การแชทเป็นกลุ่มคือการสนทนาระหว่างผู้ใช้ 3 คนขึ้นไปกับแอปใน Chat
  • พื้นที่ทำงานที่มีชื่อเป็นพื้นที่ถาวรที่ผู้คนส่งข้อความ แชร์ไฟล์ และทำงานร่วมกัน

คุณสามารถใช้เมธอด setUp() เพื่อดำเนินการต่อไปนี้

  • สร้างพื้นที่ทำงานที่มีชื่อพร้อมสมาชิกเริ่มต้น
  • สร้างข้อความส่วนตัว (DM) ระหว่างบุคคล 2 คน
  • ตั้งค่าข้อความกลุ่มระหว่างบุคคลหลายคน

เมื่อตั้งค่าพื้นที่ทำงาน ให้พิจารณาสิ่งต่อไปนี้

  • ระบบจะเพิ่มผู้ใช้ที่เรียก (ซึ่งผ่านการตรวจสอบสิทธิ์แล้ว) ลงในพื้นที่ทำงานโดยอัตโนมัติ คุณจึงไม่จำเป็นต้องระบุการเป็นสมาชิกของผู้ใช้ในคำขอ
  • เมื่อสร้างข้อความส่วนตัว (DM) หากมี DM ระหว่างผู้ใช้ 2 คนอยู่แล้ว ระบบจะแสดง DM นั้น แต่หากไม่มี ระบบจะสร้าง DM ขึ้น
  • เมื่อสร้างการแชทเป็นกลุ่ม หากเพิ่มการเป็นสมาชิกที่ระบุไว้ในคำขอลงในการแชทเป็นกลุ่มไม่สำเร็จ (เช่น ปัญหาเกี่ยวกับสิทธิ์) ระบบอาจสร้างการแชทเป็นกลุ่มที่ว่างเปล่า (มีเพียงผู้ใช้ที่เรียกเท่านั้น)
  • คุณไม่สามารถตั้งค่าพื้นที่ทำงานที่มีการตอบกลับแบบแยกชุดข้อความหรือเพิ่มบุคคลภายนอกองค์กร Google Workspace ได้
  • ระบบจะกรองการเป็นสมาชิกที่ซ้ำกัน (รวมถึงผู้ใช้ที่เรียก) ที่ระบุไว้ในคำขอออกแทนที่จะทำให้เกิดข้อผิดพลาดในคำขอ
  • เมื่อผู้ดูแลระบบ Google Workspace ติดตั้งแอปใน Chat ให้กับทั้ง องค์กร Google Workspace, Google Chat จะสร้าง DM ระหว่างแอปใน Chat ที่ติดตั้งกับผู้ใช้แต่ละคนในองค์กร คุณจึง ไม่จำเป็นต้องตั้งค่า DM แบบเป็นโปรแกรม แต่ให้แสดงพื้นที่ทำงาน เพื่อแสดง DM ทั้งหมดหรือ ค้นหาข้อความส่วนตัว เพื่อดูรายละเอียดเกี่ยวกับ DM ที่เฉพาะเจาะจงแทน

ข้อกำหนดเบื้องต้น

Node.js

Python

Java

Apps Script

ตั้งค่าพื้นที่ทำงาน

หากต้องการตั้งค่าพื้นที่ทำงาน ให้ส่งข้อมูลต่อไปนี้ในคำขอ

  • ระบุขอบเขตการให้สิทธิ์ chat.spaces.create หรือ chat.spaces
  • เรียกใช้เมธอด SetUpSpace()
  • ส่ง space เป็นอินสแตนซ์ของ Space พร้อมช่องที่จำเป็นทั้งหมด เช่น displayName หรือ spaceType
  • ส่ง memberships เป็นอาร์เรย์ของ Membership อินสแตนซ์ โดยสำหรับแต่ละอินสแตนซ์ ให้ทำดังนี้
    • ระบุ users/{user} เพื่อเพิ่มผู้ใช้ที่เป็นบุคคลจริงเป็นสมาชิกในพื้นที่ทำงาน โดย {user} จะเป็น {person_id} สำหรับ person จาก People API หรือรหัสของ user ใน Directory API เช่น หาก resourceName ของบุคคลใน People API คือ people/123456789 คุณสามารถเพิ่มผู้ใช้ลงในพื้นที่ทำงานได้โดยใส่การเป็นสมาชิกที่มี users/123456789 เป็น member.name
    • ระบุ groups/{group} เพื่อเพิ่มกลุ่มเป็นสมาชิกในพื้นที่ทำงาน โดย {group} คือรหัสกลุ่มที่ต้องการสร้างการเป็นสมาชิก คุณสามารถดึงข้อมูลรหัสของกลุ่ม ได้โดยใช้ Cloud Identity API เช่น หาก Cloud Identity API แสดงกลุ่มที่มีชื่อ groups/123456789 ให้ตั้งค่า membership.groupMember.name เป็น groups/123456789 คุณไม่สามารถเพิ่ม Google Groups ลงในการแชทเป็นกลุ่มหรือ DM ได้ แต่จะเพิ่มได้เฉพาะพื้นที่ทำงานที่มีชื่อเท่านั้น

หากต้องการสร้าง DM ระหว่างผู้ใช้ที่เรียกกับผู้ใช้ที่เป็นบุคคลจริงรายอื่น ให้ระบุการเป็นสมาชิกของผู้ใช้ที่เป็นบุคคลจริงในคำขอ

หากต้องการสร้าง DM ระหว่างผู้ใช้ที่เรียกกับแอปที่เรียก ให้ตั้งค่า space.singleUserBotDm เป็น true และไม่ต้องระบุการเป็นสมาชิกใดๆ คุณจะใช้วิธีนี้เพื่อตั้งค่า DM กับแอปที่เรียกเท่านั้น หากต้องการเพิ่มแอปที่เรียกเป็นสมาชิกในพื้นที่ทำงานหรือ DM ที่มีอยู่ระหว่างผู้ใช้ที่เป็นบุคคลจริง 2 คน โปรดดูสร้างการเป็นสมาชิก

ตัวอย่างต่อไปนี้จะสร้างพื้นที่ทำงานที่มีชื่อและสร้างการเป็นสมาชิก 1 รายการในพื้นที่ทำงานสำหรับผู้ใช้ที่เป็นบุคคลจริง 2 คน (ผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์และผู้ใช้รายอื่น)

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

await main();

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