دعوة مستخدم أو "مجموعة Google" أو تطبيق Google Chat إلى مساحة أو إضافتهم

يوضّح هذا الدليل كيفية استخدام طريقة create() في المورد Membership لواجهة Google Chat API من أجل دعوة مستخدم أو مجموعة Google أو تطبيق Chat إلى مساحة، ويُعرف ذلك أيضًا باسم إنشاء اشتراك. عند إنشاء عضوية، إذا كان العضو المحدّد قد أوقف سياسة القبول التلقائي، ستتم دعوته وعليه قبول دعوة الفضاء قبل الانضمام إليه. بخلاف ذلك، تؤدي عملية إنشاء اشتراك إلى إضافة العضو مباشرةً إلى المساحة المحدّدة.

إذا كنت مشرفًا في Google Workspace، يمكنك إضافة مستخدمين أو مجموعات Google أو تطبيقات Chat إلى أي مساحة في مؤسستك على Google Workspace.

يمثّل مصدر Membership ما إذا تمت دعوة مستخدم بشري أو تطبيق Google Chat إلى مساحة أو كان جزءًا منها أو غير متوفّر فيها.

المتطلبات الأساسية

Node.js

Python

Java

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

دعوة مستخدم أو إضافته إلى مساحة كمستخدم

لدعوة مستخدم أو إضافته إلى مساحة تتطلّب مصادقة المستخدم، عليك تضمين ما يلي في طلبك:

  • حدِّد chat.memberships نطاق التفويض.
  • استدعِ طريقة CreateMembership().
  • مرِّر parent كاسم المورد للمساحة التي تريد إنشاء العضوية فيها.
  • مرِّر membership كمثيل من Membership مع ضبط الحقل member على ما يلي:
    • تم ضبط الحقل type على HUMAN.
    • يجب ضبط الحقل name على users/{user}، حيث يمثّل {user} الشخص الذي تريد إضافته إلى المساحة. لتحديد مستخدم Chat، استبدِل {user} بأي مما يلي:
      • تمثّل هذه السمة رقم تعريف الشخص في People API. على سبيل المثال، إذا كانت السمة person في People API resourceName هي people/123456789، استخدِم القيمة users/123456789.
      • معرّف المستخدم في Directory API.
      • عنوان البريد الإلكتروني للمستخدم على سبيل المثال، users/222larabrown@gmail.com أو users/larabrown@cymbalgroup.com. إذا كان المستخدم يستعمل حساب Google أو ينتمي إلى مؤسسة مختلفة على Google Workspace، عليك استخدام عنوان بريده الإلكتروني.

يضيف المثال التالي مستخدمًا إلى مساحة تتضمّن مصادقة المستخدم:

Node.js

chat/client-libraries/cloud/create-membership-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

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

// This sample shows how to create membership with user credential for a human user
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',
    membership: {
      member: {
        // Replace USER_NAME here
        name: 'users/USER_NAME',
        // User type for the membership
        type: 'HUMAN'
      }
    }
  };

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

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

main().catch(console.error);

Python

chat/client-libraries/cloud/create_membership_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"]

# This sample shows how to create membership with user credential for a human
# user
def create_membership_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "member": {
                # Replace USER_NAME here
                "name": "users/USER_NAME",
                # user type for the membership
                "type_": "HUMAN"
            }
        }
    )

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

    # Handle the response
    print(response)

create_membership_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.User;

// This sample shows how to create membership with user credential for a human
// user.
public class CreateMembershipUserCred {

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

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setMember(User.newBuilder()
            // replace USER_NAME here
            .setName("users/USER_NAME")
            // user type for the membership
            .setType(User.Type.HUMAN)));
      Membership response = chatServiceClient.createMembership(request.build());

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

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

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with user credential for a human user
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    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.Members.create(membership, parent);

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

لتشغيل العيّنة، استبدِل ما يلي:

  • SPACE_NAME: رقم التعريف من name الخاص بالمساحة يمكنك الحصول على المعرّف من خلال استدعاء الطريقة ListSpaces() أو من عنوان URL الخاص بالمساحة.
  • USER_NAME: رقم تعريف المستخدم

تعرض Chat API مثيلاً من Membership يقدّم تفاصيل حول عضوية المستخدم التي تم إنشاؤها.

دعوة "مجموعة Google" أو إضافتها إلى مساحة

لدعوة مجموعة Google أو إضافتها إلى مساحة تتضمّن مصادقة المستخدم (لا تتيح مصادقة التطبيق دعوة مجموعة Google أو إضافتها إلى مساحة)، عليك تضمين ما يلي في طلبك:

  • حدِّد chat.memberships نطاق التفويض.
  • استدعِ طريقة CreateMembership().
  • مرِّر parent كاسم المورد للمساحة التي تريد إنشاء العضوية فيها.
  • مرِّر membership كنموذج من Membership مع ضبط الحقل name من groupMember على groups/{group} حيث {group} هو رقم تعريف المجموعة التي تريد إنشاء عضوية لها. يمكن استرداد رقم تعريف المجموعة باستخدام Cloud Identity API.

لا يمكن إضافة "مجموعات Google" إلى محادثة جماعية أو رسالة مباشرة، بل إلى مساحة تحمل اسمًا فقط.

يضيف المثال التالي مجموعة إلى مساحة مسماة مع مصادقة المستخدم:

Node.js

chat/client-libraries/cloud/create-membership-user-cred-for-group.js
import {createClientWithUserCredentials} from './authentication-utils.js';

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

// This sample shows how to create membership with user credential for a group
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',
    membership: {
      groupMember: {
        // Replace GROUP_NAME here
        name: 'groups/GROUP_NAME'
      }
    }
  };

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

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

main().catch(console.error);

Python

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

# This sample shows how to create membership with user credential for a group
def create_membership_with_user_cred_for_group():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "groupMember": {
                # Replace GROUP_NAME here
                "name": "groups/GROUP_NAME"
            }
        }
    )

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

    # Handle the response
    print(response)

create_membership_with_user_cred_for_group()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCredForGroup.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.Group;

// This sample shows how to create membership with user credential for a group.
public class CreateMembershipUserCredForGroup {

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

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setGroupMember(Group.newBuilder()
            // replace GROUP_NAME here
            .setName("groups/GROUP_NAME")));
      Membership response = chatServiceClient.createMembership(request.build());

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

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

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with user credential for a group
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCredForGroup() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    groupMember: {
      // TODO(developer): Replace GROUP_NAME here
      name: 'groups/GROUP_NAME'
    }
  };

  // Make the request
  const response = Chat.Spaces.Members.create(membership, parent);

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

لتشغيل العيّنة، استبدِل ما يلي:

  • SPACE_NAME: رقم التعريف من name الخاص بالمساحة يمكنك الحصول على المعرّف من خلال استدعاء الطريقة ListSpaces() أو من عنوان URL الخاص بالمساحة.
  • GROUP_NAME: معرّف مجموعة

تعرض Chat API مثيلاً من Membership يقدّم تفاصيل حول عضوية المستخدم التي تم إنشاؤها.

إضافة تطبيق Chat إلى مساحة

لا يمكن لتطبيق Chat إضافة تطبيق آخر كعضو في مساحة. لإضافة تطبيق Chat إلى مساحة أو رسالة مباشرة بين مستخدمَين بشريَين، عليك تضمين ما يلي في طلبك مع مصادقة المستخدم (لا تتيح مصادقة التطبيق دعوة تطبيق Chat أو إضافته إلى مساحة):

  • حدِّد chat.memberships.app نطاق التفويض.
  • استدعِ طريقة CreateMembership().
  • مرِّر parent كاسم المورد للمساحة التي تريد إنشاء العضوية فيها.
  • مرِّر membership كمثيل من Membership مع ضبط الحقل member على ما يلي:
    • تم ضبط الحقل type على BOT.
    • الحقل name مضبوط على users/app، وهو اسم مستعار يمثّل التطبيق الذي يستدعي Chat API.

يضيف المثال التالي تطبيق Chat إلى مساحة:

Node.js

chat/client-libraries/cloud/create-membership-user-cred-for-app.js
import {createClientWithUserCredentials} from './authentication-utils.js';

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

// This sample shows how to create membership with app credential for an app
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',
    membership: {
      member: {
        // Member name for app membership, do not change this
        name: 'users/app',
        // User type for the membership
        type: 'BOT'
      }
    }
  };

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

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

main().catch(console.error);

Python

chat/client-libraries/cloud/create_membership_user_cred_for_app.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.app"]

# This sample shows how to create membership with app credential for an app
def create_membership_with_user_cred_for_app():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "member": {
                # member name for app membership, do not change this.
                "name": "users/app",
                # user type for the membership
                "type_": "BOT"
            }
        }
    )

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

    # Handle the response
    print(response)

create_membership_with_user_cred_for_app()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCredForApp.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.User;

// This sample shows how to create membership with user credential for the
// calling app.
public class CreateMembershipUserCredForApp {

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

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setMember(User.newBuilder()
            // member name for app membership, do not change this.
            .setName("users/app")
            // user type for the membership
            .setType(User.Type.BOT)));
      Membership response = chatServiceClient.createMembership(request.build());

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

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

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with app credential for an app
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships.app'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCredForApp() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    member: {
      // Member name for app membership, do not change this
      name: 'users/app',
      // User type for the membership
      type: 'BOT'
    }
  };

  // Make the request
  const response = Chat.Spaces.Members.create(membership, parent);

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

لتشغيل النموذج، استبدِل SPACE_NAME برقم التعريف من name الخاص بالمساحة. يمكنك الحصول على المعرّف من خلال استدعاء الطريقة ListSpaces() أو من عنوان URL الخاص بالمساحة.

تعرض Chat API مثيلاً من Membership يقدّم تفاصيل حول عضوية المستخدم التي تم إنشاؤها.

دعوة مستخدم أو إضافته إلى مساحة كتطبيق Chat

تتطلّب مصادقة التطبيق الحصول على موافقة المشرف لمرة واحدة.

لدعوة مستخدم أو إضافته إلى مساحة تتضمّن مصادقة التطبيق، عليك تضمين ما يلي في طلبك:

  • حدِّد chat.app.memberships نطاق التفويض.
  • استدعِ الطريقة create على المورد membership.
  • اضبط parent على اسم المورد للمساحة التي تريد إنشاء العضوية فيها.
  • اضبط member على users/{user}، حيث يمثّل {user} الشخص الذي تريد إنشاء عضوية له، ويكون إما:
    • تمثّل هذه السمة رقم تعريف الشخص في People API. على سبيل المثال، إذا كانت قيمة person resourceName في People API هي people/123456789، اضبط قيمة membership.member.name على users/123456789.
    • معرّف المستخدم في Directory API.
    • عنوان البريد الإلكتروني للمستخدم على سبيل المثال، users/222larabrown@gmail.com أو users/larabrown@cymbalgroup.com. إذا كان المستخدم يستعمل حسابًا على Google أو ينتمي إلى مؤسسة مختلفة على Google Workspace، عليك استخدام عنوان بريده الإلكتروني.

إنشاء مفتاح واجهة برمجة تطبيقات

لاستدعاء إحدى طرق واجهة برمجة التطبيقات في "معاينة المطوّر"، يجب استخدام إصدار غير علني من مستند اكتشاف واجهة برمجة التطبيقات. للمصادقة على الطلب، يجب إدخال مفتاح واجهة برمجة التطبيقات.

لإنشاء مفتاح واجهة برمجة التطبيقات، افتح مشروع Google Cloud الخاص بتطبيقك واتّبِع الخطوات التالية:

  1. في Google Cloud Console، انتقِل إلى "القائمة" > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.

    الانتقال إلى "بيانات الاعتماد"

  2. انقر على إنشاء بيانات اعتماد > مفتاح واجهة برمجة التطبيقات.
  3. يظهر مفتاح واجهة برمجة التطبيقات الجديد.
    • انقر على "نسخ" لنسخ مفتاح واجهة برمجة التطبيقات لاستخدامه في رمز تطبيقك. يمكنك أيضًا العثور على مفتاح واجهة برمجة التطبيقات في قسم "مفاتيح واجهة برمجة التطبيقات" ضمن بيانات اعتماد مشروعك.
    • انقر على تقييد المفتاح لتعديل الإعدادات المتقدّمة والحدّ من استخدام مفتاح واجهة برمجة التطبيقات. لمزيد من التفاصيل، يُرجى الاطّلاع على تطبيق قيود على مفتاح واجهة برمجة التطبيقات.

كتابة نص برمجي يستدعي Chat API

يضيف المثال التالي مستخدمًا إلى مساحة تتضمّن مصادقة التطبيق:

Python

  1. في دليل العمل، أنشئ ملفًا باسم chat_membership_app_create.py.
  2. أدرِج الرمز التالي في chat_membership_app_create.py:

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.app.memberships"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then adds a user to a Chat space by creating a membership.
        '''
    
        # Specify service account details.
        creds = (
            service_account.Credentials.from_service_account_file('credentials.json')
            .with_scopes(SCOPES)
        )
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds, discoveryServiceUrl='https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY')
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().members().create(
    
            # The space in which to create a membership.
            parent = 'spaces/SPACE',
    
            # Specify which user the membership is for.
            body = {
              'member': {
                'name':'users/USER',
                'type': 'HUMAN'
              }
            }
    
        ).execute()
    
        # Prints details about the created membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. في الرمز، استبدِل ما يلي:

    • API_KEY: مفتاح واجهة برمجة التطبيقات الذي أنشأته لإنشاء نقطة نهاية الخدمة لواجهة Chat API.

    • SPACE: اسم مساحة، ويمكنك الحصول عليه من خلال طريقة spaces.list في Chat API، أو من عنوان URL الخاص بمساحة.

    • USER: رقم تعريف المستخدم

  4. في دليل العمل، أنشئ النموذج وشغِّله:

    python3 chat_membership_app_create.py

إضافة مستخدمين أو مجموعات Google إلى مساحة بصفتك مشرف Google Workspace

إذا كنت مشرفًا في Google Workspace، يمكنك استدعاء طريقة create() لإضافة مستخدمين أو مجموعات Google أو تطبيقات Chat إلى أي مساحة في مؤسسة Google Workspace.

لاستدعاء هذه الطريقة بصفتك مشرفًا في Google Workspace، اتّبِع الخطوات التالية:

  • استدعِ الطريقة باستخدام مصادقة المستخدم، وحدِّد نطاق تفويض يتيح استدعاء الطريقة باستخدام امتيازات المشرف.
  • في طلبك، حدِّد مَعلمة طلب البحث useAdminAccess بالقيمة true.

لمزيد من المعلومات والأمثلة، يُرجى الاطّلاع على مقالة إدارة مساحات Google Chat بصفتك مشرف Google Workspace.

القيود والاعتبارات

  • باستخدام مصادقة التطبيق، يمكن لتطبيق Chat دعوة المستخدمين أو إضافتهم، ولكن ليس إلى مجموعات Google أو تطبيقات Chat. لإضافة نفسه، يجب أن يستخدم تطبيق الدردشة مصادقة المستخدم مع نطاق التفويض chat.memberships.