إدارة أعضاء مساحة الاجتماع

عضو مساحة الاجتماع هو مستخدم تم إعداده ليكون له دور في مساحة الاجتماع. يمكن لهؤلاء المستخدمين الانضمام إلى مساحة الاجتماع بدون طلب إذن بالاتصال (المعروف أيضًا باسم "الاستئذان").

في حين يمكن لمنظّمي الاجتماع الدخول تلقائيًا إلى مساحة الاجتماع، يمكنك أيضًا ضبط أعضاء إضافيين في مساحة الاجتماع للانضمام إلى الاجتماع بدون استئذان. بالإضافة إلى ذلك، يمكن ضبط الأعضاء للحصول على Role في الاجتماع، مثل COHOST الذي يتيح لهم إدارة الاجتماع بشكل مشترك أثناء مؤتمر، على الرغم من أنّه لا يمكنهم ضبط ميزة "التحسين التلقائي" أو تغيير إعدادات الإشراف. لمزيد من المعلومات حول الوصول إلى مساحة اجتماع بدون طلب الإذن، يُرجى الاطّلاع على AccessType.

يتضمّن مرجع spaces.members الحقول name وemail وrole.

يُرجى العِلم أنّ العضو في مساحة الاجتماع يختلف عن المشارك. المشارك هو شخص انضم إلى مكالمة أو يستخدم وضع المزاملة أو يشاهد كضيف أو جهاز غرفة متصل بمكالمة. يتوفّر مصدر conferenceRecords.participants واحد لكل شخص.

سلوكيات الطرق الشائعة

عند إدارة أعضاء مساحة الاجتماع باستخدام واجهة Meet REST API، تتشارك الطرق في الاتفاقيات التالية:

  • مَعلمات المسار: تستخدم كل طريقة مَعلمة مسار. تستخدم الطرق create وlist وbatchUpdate الحقل parent للإشارة إلى مساحة الاجتماع (spaces/{space}). وتستخدم الطرق delete وget وpatch الحقل name لفلترة النتائج حسب مساحة الاجتماع واسم العضو (spaces/{space}/members/{member}).

  • أنواع الإرجاع: تعرض الطرق create وget وpatch مثيلاً لمورد Member. تعرض الطريقتان list وbatchUpdate قائمة بموارد Member (تعرض الطريقة delete نص استجابة فارغًا).

  • أقنعة الحقول: تتيح جميع الطرق، باستثناء delete، استخدام قناع حقل. بالنسبة إلى الطرق create وget وlist، يمكنك استخدام المَعلمة fields في SystemParameterContext لتحديد الحقول المطلوب عرضها. عند حذف المَعلمة fields، سيتم تلقائيًا ضبط استجابة واجهة برمجة التطبيقات على "name,email,role,user". بالنسبة إلى الطريقتَين patch وbatchUpdate، يمكنك استخدام updateMask لتحديد الحقول التي تريد تغييرها.

  • استخدام FieldMask: FieldMask هي طريقة تتيح لمقدّمي الطلبات إلى واجهة برمجة التطبيقات إدراج الحقول التي يجب أن يعرضها الطلب أو يعدّلها. وهي قائمة حقول مفصولة بفواصل لتحديد حقول معيّنة فقط في أحد العناصر مع ترك الحقول الأخرى بدون تغيير. يسمح استخدام FieldMask لواجهة برمجة التطبيقات بتجنُّب العمل غير الضروري وتحسين الأداء. لمزيد من المعلومات حول أقنعة الحقول، يُرجى الاطّلاع على مقالة استخدام أقنعة الحقول في واجهة برمجة التطبيقات Google Sheets API.

إنشاء عضو

لإضافة مستخدم إلى مساحة اجتماع، استخدِم طريقة create في المورد spaces.members.

يوضّح نموذج الرمز البرمجي التالي كيفية إنشاء عضو:

جافا

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

برمجة التطبيقات

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"
  }'

استبدِل ACCESS_TOKEN برمز الدخول الذي يمنح إذن الوصول إلى واجهة برمجة التطبيقات.

استبدِل قيمة اسم المساحة بمعرّف فريد من إنشاء الخادم لمساحة الاجتماع.

الحصول على تفاصيل حول أحد الأعضاء

لاسترداد تفاصيل حول عضو معيّن، استخدِم طريقة get على المورد spaces.members.

يوضّح عينة تعليمات برمجية التالي كيفية استرداد أحد المشتركين:

جافا

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

برمجة التطبيقات

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"

استبدِل ACCESS_TOKEN برمز الدخول الذي يمنح إذن الوصول إلى واجهة برمجة التطبيقات.

استبدِل قيم اسم المساحة واسم العضو بمعرّفات فريدة من إنشاء الخادم لمساحة الاجتماع والعضو.

أعضاء القائمة

لعرض قائمة بجميع الأعضاء في مساحة اجتماع، استخدِم طريقة list في المورد spaces.members.

توضح عينة التعليمات البرمجية التالية كيفية إدراج الأعضاء:

جافا

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

برمجة التطبيقات

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"

استبدِل ACCESS_TOKEN برمز الدخول الذي يمنح إذن الوصول إلى واجهة برمجة التطبيقات.

استبدِل قيمة اسم المساحة بمعرّف فريد من إنشاء الخادم لمساحة الاجتماع.

تعديل عضو

لتعديل دور أحد الأعضاء في مساحة اجتماع، استخدِم طريقة patch في المورد spaces.members.

يوضّح نموذج الرمز البرمجي التالي كيفية تعديل أحد المشتركين:

جافا

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

برمجة التطبيقات

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"
  }'

استبدِل ACCESS_TOKEN برمز الدخول الذي يمنح إذن الوصول إلى واجهة برمجة التطبيقات.

استبدِل قيم اسم المساحة واسم العضو بمعرّفات فريدة من إنشاء الخادم لمساحة الاجتماع والعضو.

تعديل الأعضاء بشكل مجمّع

لتعديل أدوار عدة أعضاء في طلب واحد، استخدِم طريقة batchUpdate في المورد spaces.members.

توضّح عينة التعليمات البرمجية التالية كيفية إجراء تعديلات مجمَّعة على الأعضاء:

جافا

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

برمجة التطبيقات

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"
  }'

استبدِل ACCESS_TOKEN برمز الدخول الذي يمنح إذن الوصول إلى واجهة برمجة التطبيقات.

استبدِل قيم اسم المساحة واسم العضو بمعرّفات فريدة من إنشاء الخادم لمساحة الاجتماع والأعضاء.

حذف عضو

لإزالة مستخدم من مساحة اجتماع، استخدِم طريقة delete في المورد spaces.members.

يوضّح عينة تعليمات برمجية التالي كيفية حذف مستخدم:

جافا

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.")

برمجة التطبيقات

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"

استبدِل ACCESS_TOKEN برمز الدخول الذي يمنح إذن الوصول إلى واجهة برمجة التطبيقات.

استبدِل قيم اسم المساحة واسم العضو بمعرّفات فريدة من إنشاء الخادم لمساحة الاجتماع والعضو.