Quản lý thành viên trong không gian họp

Thành viên của không gian trong cuộc họp là người dùng được thiết lập để có một vai trò trong không gian đó. Những người dùng này có thể tham gia không gian họp mà không cần yêu cầu quyền kết nối (còn gọi là "gõ cửa").

Mặc dù người tổ chức cuộc họp có thể tự động vào không gian cuộc họp, nhưng bạn cũng có thể định cấu hình để các thành viên khác trong không gian cuộc họp tham gia cuộc họp mà không cần gửi yêu cầu tham gia. Ngoài ra, bạn có thể định cấu hình để các thành viên có Role trong cuộc họp, chẳng hạn như COHOST cho phép họ cùng quản lý cuộc họp trong một hội nghị, mặc dù họ không thể định cấu hình các thành phần tự động hoặc thay đổi chế độ cài đặt kiểm duyệt. Để biết thêm thông tin về cách truy cập vào một không gian họp mà không cần gõ cửa, hãy xem phần AccessType.

Tài nguyên spaces.members bao gồm các trường name, emailrole.

Xin lưu ý rằng thành viên của không gian họp khác với người tham gia. Người tham gia là người đã tham gia cuộc gọi hoặc sử dụng Chế độ đồng hành, xem với tư cách là người xem hoặc thiết bị phòng họp kết nối với cuộc gọi. Mỗi người có một tài nguyên conferenceRecords.participants.

Hành vi của phương thức phổ biến

Khi quản lý thành viên của không gian họp bằng Meet REST API, các phương thức sẽ có những quy ước sau:

  • Tham số đường dẫn: Mỗi phương thức đều sử dụng một tham số đường dẫn. Các phương thức create, listbatchUpdate sử dụng trường parent để tham chiếu đến không gian họp (spaces/{space}). Các phương thức delete, getpatch sử dụng trường name để lọc kết quả theo không gian họp và tên thành viên (spaces/{space}/members/{member}).

  • Loại dữ liệu trả về: Các phương thức create, getpatch trả về một thực thể của tài nguyên Member. Các phương thức listbatchUpdate trả về một danh sách các tài nguyên Member (delete trả về một nội dung phản hồi trống).

  • Mặt nạ cho trường: Tất cả các phương thức (ngoại trừ delete) đều hỗ trợ mặt nạ cho trường. Đối với các phương thức create, getlist, bạn có thể sử dụng tham số fields trong SystemParameterContext để chỉ định những trường cần trả về. Khi bạn bỏ qua tham số fields, phản hồi API sẽ mặc định là "name,email,role,user". Đối với các phương thức patchbatchUpdate, bạn sử dụng updateMask để chỉ định những trường cần thay đổi.

  • Sử dụng FieldMask: FieldMask là cách để người gọi API liệt kê các trường mà một yêu cầu sẽ trả về hoặc sửa đổi. Đây là danh sách các trường được phân tách bằng dấu phẩy để chỉ định chỉ một số trường nhất định trong một đối tượng được dùng trong khi các trường khác vẫn không thay đổi. Việc sử dụng FieldMask cho phép API tránh những công việc không cần thiết và cải thiện hiệu suất. Để biết thêm thông tin về mặt nạ trường, hãy xem bài viết Sử dụng mặt nạ trường của API Google Trang tính.

Tạo một thành viên

Để thêm thành viên vào một không gian họp, hãy sử dụng phương thức create trên tài nguyên spaces.members.

Mã mẫu sau đây cho biết cách tạo một thành viên:

Java

import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;

public class CreateMember {
  public static void main(String[] args) throws Exception {
    try (SpacesServiceClient client = SpacesServiceClient.create()) {
      Member member = Member.newBuilder()
          .setEmail("user@example.com")
          .setRole(Member.Role.COHOST)
          .build();
      Member response = client.createMember("spaces/SPACE_NAME", member);
      System.out.println("Member created: " + response.getName());
    }
  }
}

Node.js

const {SpacesServiceClient} = require('@google-apps/meet').v2;

async function createMember(spaceName, email) {
  const client = new SpacesServiceClient();
  const [response] = await client.createMember({
    parent: spaceName,
    member: {
      email: email,
      role: 'COHOST',
    },
  });
  console.log(`Member created: ${response.name}`);
  return response;
}

Python

from google.apps import meet_v2

def create_member(space_name, email):
    client = meet_v2.SpacesServiceClient()
    member = meet_v2.Member(
        email=email,
        role=meet_v2.Member.Role.COHOST,
    )
    response = client.create_member(parent=space_name, member=member)
    print(f"Member created: {response.name}")
    return response

Apps Script

function createMember(spaceName, email) {
  const response = UrlFetchApp.fetch(
    `https://meet.googleapis.com/v2/${spaceName}/members`,
    {
      method: 'post',
      contentType: 'application/json',
      headers: {
        Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
      },
      payload: JSON.stringify({
        email: email,
        role: 'COHOST',
      }),
    }
  );
  const member = JSON.parse(response.getContentText());
  Logger.log('Member created: ' + member.name);
  return member;
}

cURL

curl -X POST \
  "https://meet.googleapis.com/v2/spaces/SPACE_NAME/members" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@example.com",
    "role": "COHOST"
  }'

Thay thế ACCESS_TOKEN bằng mã truy cập cấp quyền truy cập vào API.

Thay thế giá trị tên không gian bằng mã nhận dạng duy nhất do máy chủ tạo cho không gian họp.

Xem thông tin chi tiết về một thành viên

Để truy xuất thông tin chi tiết về một thành viên cụ thể, hãy sử dụng phương thức get trên tài nguyên spaces.members.

Mã mẫu sau đây cho biết cách truy xuất một thành viên:

Java

import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;

public class GetMember {
  public static void main(String[] args) throws Exception {
    try (SpacesServiceClient client = SpacesServiceClient.create()) {
      Member response =
          client.getMember("spaces/SPACE_NAME/members/MEMBER_NAME");
      System.out.println("Member role: " + response.getRole());
    }
  }
}

Node.js

const {SpacesServiceClient} = require('@google-apps/meet').v2;

async function getMember(memberName) {
  const client = new SpacesServiceClient();
  const [response] = await client.getMember({name: memberName});
  console.log(`Member role: ${response.role}`);
  return response;
}

Python

from google.apps import meet_v2

def get_member(member_name):
    client = meet_v2.SpacesServiceClient()
    response = client.get_member(name=member_name)
    print(f"Member role: {response.role.name}")
    return response

Apps Script

function getMember(memberName) {
  // memberName format: "spaces/{space}/members/{member}"
  const response = UrlFetchApp.fetch(
    `https://meet.googleapis.com/v2/${memberName}`,
    {
      method: 'get',
      headers: {
        Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
      },
    }
  );
  const member = JSON.parse(response.getContentText());
  Logger.log('Member role: ' + member.role);
  return member;
}

cURL

curl -X GET \
  "https://meet.googleapis.com/v2/spaces/SPACE_NAME/members/MEMBER_NAME" \
  -H "Authorization: Bearer ACCESS_TOKEN"

Thay thế ACCESS_TOKEN bằng mã truy cập cấp quyền truy cập vào API.

Thay thế các giá trị tên không gian và tên thành viên bằng các mã nhận dạng duy nhất do máy chủ tạo cho không gian cuộc họp và thành viên.

Danh sách thành viên

Để liệt kê tất cả thành viên trong một không gian họp, hãy sử dụng phương thức list trên tài nguyên spaces.members.

Mã mẫu sau đây cho biết cách liệt kê các thành viên:

Java

import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;

public class ListMembers {
  public static void main(String[] args) throws Exception {
    try (SpacesServiceClient client = SpacesServiceClient.create()) {
      for (Member member :
          client.listMembers("spaces/SPACE_NAME").iterateAll()) {
        System.out.println("Member: " + member.getName() + " (" +
            member.getEmail() + ")");
      }
    }
  }
}

Node.js

const {SpacesServiceClient} = require('@google-apps/meet').v2;

async function listMembers(spaceName) {
  const client = new SpacesServiceClient();
  const [members] = await client.listMembers({parent: spaceName});
  members.forEach((member) => {
    console.log(`Member: ${member.name} (${member.email})`);
  });
  return members;
}

Python

from google.apps import meet_v2

def list_members(space_name):
    client = meet_v2.SpacesServiceClient()
    response = client.list_members(parent=space_name)
    for member in response:
        print(f"Member: {member.name} ({member.email})")

Apps Script

function listMembers(spaceName) {
  const response = UrlFetchApp.fetch(
    `https://meet.googleapis.com/v2/${spaceName}/members`,
    {
      method: 'get',
      headers: {
        Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
      },
    }
  );
  const data = JSON.parse(response.getContentText());
  (data.members || []).forEach((member) => {
    Logger.log(`Member: ${member.name} (${member.email})`);
  });
  return data.members;
}

cURL

curl -X GET \
  "https://meet.googleapis.com/v2/spaces/SPACE_NAME/members" \
  -H "Authorization: Bearer ACCESS_TOKEN"

Thay thế ACCESS_TOKEN bằng mã truy cập cấp quyền truy cập vào API.

Thay thế giá trị tên không gian bằng mã nhận dạng duy nhất do máy chủ tạo cho không gian họp.

Cập nhật thông tin của một thành viên

Để cập nhật vai trò của một thành viên trong không gian họp, hãy sử dụng phương thức patch trên tài nguyên spaces.members.

Mã mẫu sau đây cho biết cách cập nhật một thành viên:

Java

import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;
import com.google.protobuf.FieldMask;

public class UpdateMember {
  public static void main(String[] args) throws Exception {
    try (SpacesServiceClient client = SpacesServiceClient.create()) {
      Member member = Member.newBuilder()
          .setName("spaces/SPACE_NAME/members/MEMBER_NAME")
          .setRole(Member.Role.ROLE_UNSPECIFIED)
          .build();
      FieldMask updateMask =
          FieldMask.newBuilder().addPaths("role").build();
      Member response = client.updateMember(member, updateMask);
      System.out.println("Updated member: " + response.getName());
    }
  }
}

Node.js

const {SpacesServiceClient} = require('@google-apps/meet').v2;

async function updateMember(memberName) {
  const client = new SpacesServiceClient();
  const [response] = await client.updateMember({
    member: {
      name: memberName,
      role: 'ROLE_UNSPECIFIED',
    },
    updateMask: {
      paths: ['role'],
    },
  });
  console.log(`Updated member: ${response.name}`);
  return response;
}

Python

from google.apps import meet_v2
from google.protobuf import field_mask_pb2

def update_member(member_name):
    client = meet_v2.SpacesServiceClient()
    member = meet_v2.Member(
        name=member_name,
        role=meet_v2.Member.Role.ROLE_UNSPECIFIED,
    )
    update_mask = field_mask_pb2.FieldMask(paths=["role"])
    response = client.update_member(member=member, update_mask=update_mask)
    print(f"Updated member: {response.name}")
    return response

Apps Script

function updateMember(memberName) {
  // memberName format: "spaces/{space}/members/{member}"
  const baseUrl = 'https://meet.googleapis.com/v2/';
  const url = `${baseUrl}${memberName}?updateMask=role`;
  const response = UrlFetchApp.fetch(url, {
    method: 'patch',
    contentType: 'application/json',
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
    },
    payload: JSON.stringify({
      role: 'ROLE_UNSPECIFIED',
    }),
  });
  const member = JSON.parse(response.getContentText());
  Logger.log('Updated member: ' + member.name);
  return member;
}

cURL

curl -X PATCH \
  "https://meet.googleapis.com/v2/spaces/SPACE_NAME/members/MEMBER_NAME?updateMask=role" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "role": "ROLE_UNSPECIFIED"
  }'

Thay thế ACCESS_TOKEN bằng mã truy cập cấp quyền truy cập vào API.

Thay thế các giá trị tên không gian và tên thành viên bằng các mã nhận dạng duy nhất do máy chủ tạo cho không gian cuộc họp và thành viên.

Cập nhật theo lô thành viên

Để cập nhật vai trò của nhiều thành viên trong một yêu cầu, hãy sử dụng phương thức batchUpdate trên tài nguyên spaces.members.

Đoạn mã mẫu sau đây cho biết cách cập nhật theo lô thành viên:

Java

import com.google.apps.meet.v2.BatchUpdateMembersRequest;
import com.google.apps.meet.v2.BatchUpdateMembersResponse;
import com.google.apps.meet.v2.Member;
import com.google.apps.meet.v2.SpacesServiceClient;
import com.google.apps.meet.v2.UpdateMemberRequest;
import com.google.protobuf.FieldMask;
import java.util.Arrays;

public class BatchUpdateMembers {
  public static void main(String[] args) throws Exception {
    try (SpacesServiceClient client = SpacesServiceClient.create()) {
      UpdateMemberRequest req1 = UpdateMemberRequest.newBuilder()
          .setMember(Member.newBuilder()
              .setName("spaces/SPACE_NAME/members/MEMBER_1")
              .setRole(Member.Role.COHOST)
              .build())
          .build();
      UpdateMemberRequest req2 = UpdateMemberRequest.newBuilder()
          .setMember(Member.newBuilder()
              .setName("spaces/SPACE_NAME/members/MEMBER_2")
              .setRole(Member.Role.ROLE_UNSPECIFIED)
              .build())
          .build();
      BatchUpdateMembersRequest request =
          BatchUpdateMembersRequest.newBuilder()
              .setParent("spaces/SPACE_NAME")
              .addAllRequests(Arrays.asList(req1, req2))
              .setUpdateMask(
                  FieldMask.newBuilder().addPaths("role").build())
              .build();
      BatchUpdateMembersResponse response =
          client.batchUpdateMembers(request);
      System.out.println(
          "Updated " + response.getMembersCount() + " members.");
    }
  }
}

Node.js

const {SpacesServiceClient} = require('@google-apps/meet').v2;

async function batchUpdateMembers(spaceName, member1, member2) {
  const client = new SpacesServiceClient();
  const [response] = await client.batchUpdateMembers({
    parent: spaceName,
    requests: [
      {
        member: {name: member1, role: 'COHOST'},
      },
      {
        member: {name: member2, role: 'ROLE_UNSPECIFIED'},
      },
    ],
    updateMask: {
      paths: ['role'],
    },
  });
  console.log(`Updated ${response.members.length} members.`);
  return response;
}

Python

from google.apps import meet_v2
from google.protobuf import field_mask_pb2

def batch_update_members(space_name, member_1, member_2):
    client = meet_v2.SpacesServiceClient()
    requests = [
        meet_v2.UpdateMemberRequest(
            member=meet_v2.Member(
                name=member_1, role=meet_v2.Member.Role.COHOST
            )
        ),
        meet_v2.UpdateMemberRequest(
            member=meet_v2.Member(
                name=member_2, role=meet_v2.Member.Role.ROLE_UNSPECIFIED
            )
        ),
    ]
    update_mask = field_mask_pb2.FieldMask(paths=["role"])
    response = client.batch_update_members(
        parent=space_name, requests=requests, update_mask=update_mask
    )
    print(f"Updated {len(response.members)} members.")
    return response

Apps Script

function batchUpdateMembers(spaceName, member1, member2) {
  const url =
      `https://meet.googleapis.com/v2/${spaceName}/members:batchUpdate`;
  const response = UrlFetchApp.fetch(url, {
    method: 'post',
    contentType: 'application/json',
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
    },
    payload: JSON.stringify({
      requests: [
        {member: {name: member1, role: 'COHOST'}},
        {member: {name: member2, role: 'ROLE_UNSPECIFIED'}},
      ],
      updateMask: 'role',
    }),
  });
  const data = JSON.parse(response.getContentText());
  Logger.log(`Updated ${data.members.length} members.`);
  return data.members;
}

cURL

curl -X POST \
  "https://meet.googleapis.com/v2/spaces/SPACE_NAME/members:batchUpdate" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "requests": [
      {
        "member": {
          "name": "spaces/SPACE_NAME/members/MEMBER_1",
          "role": "COHOST"
        }
      },
      {
        "member": {
          "name": "spaces/SPACE_NAME/members/MEMBER_2",
          "role": "ROLE_UNSPECIFIED"
        }
      }
    ],
    "updateMask": "role"
  }'

Thay thế ACCESS_TOKEN bằng mã truy cập cấp quyền truy cập vào API.

Thay thế các giá trị tên không gian và tên thành viên bằng mã nhận dạng duy nhất do máy chủ tạo cho không gian cuộc họp và các thành viên.

Xoá thành viên

Để xoá một thành viên khỏi không gian họp, hãy sử dụng phương thức delete trên tài nguyên spaces.members.

Mã mẫu sau đây cho biết cách xoá một thành viên:

Java

import com.google.apps.meet.v2.SpacesServiceClient;

public class DeleteMember {
  public static void main(String[] args) throws Exception {
    try (SpacesServiceClient client = SpacesServiceClient.create()) {
      client.deleteMember("spaces/SPACE_NAME/members/MEMBER_NAME");
      System.out.println("Member deleted.");
    }
  }
}

Node.js

const {SpacesServiceClient} = require('@google-apps/meet').v2;

async function deleteMember(memberName) {
  const client = new SpacesServiceClient();
  await client.deleteMember({name: memberName});
  console.log('Member deleted.');
}

Python

from google.apps import meet_v2

def delete_member(member_name):
    client = meet_v2.SpacesServiceClient()
    client.delete_member(name=member_name)
    print("Member deleted.")

Apps Script

function deleteMember(memberName) {
  // memberName format: "spaces/{space}/members/{member}"
  UrlFetchApp.fetch(`https://meet.googleapis.com/v2/${memberName}`, {
    method: 'delete',
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
    },
  });
  Logger.log('Member deleted.');
}

cURL

curl -X DELETE \
  "https://meet.googleapis.com/v2/spaces/SPACE_NAME/members/MEMBER_NAME" \
  -H "Authorization: Bearer ACCESS_TOKEN"

Thay thế ACCESS_TOKEN bằng mã truy cập cấp quyền truy cập vào API.

Thay thế các giá trị tên không gian và tên thành viên bằng các mã nhận dạng duy nhất do máy chủ tạo cho không gian cuộc họp và thành viên.