إدراج مساحات

يوضّح هذا الدليل طريقة استخدام مورد list على مورد Space لواجهة برمجة تطبيقات Google Chat لإدراج المساحات. يؤدي سرد المساحات إلى عرض قائمة مقسّمة إلى صفحات قابلة للتصفية.

يمثّل المورد Space مكانًا يمكن فيه للمستخدمين وتطبيقات Chat إرسال الرسائل ومشاركة الملفات والتعاون. تتوفّر عدة أنواع من المساحات:

  • الرسائل المباشرة هي محادثات بين مستخدمَين أو مستخدم وتطبيق في Chat.
  • المحادثات الجماعية هي محادثات بين ثلاثة مستخدمين أو أكثر وتطبيقات Chat.
  • المساحات المُسمّاة هي أماكن دائمة يمكن للمستخدمين من خلالها إرسال الرسائل ومشاركة الملفات والتعاون معًا.

عند إدراج المساحات باستخدام مصادقة التطبيق، يتم إدراج المساحات التي يمكن لتطبيق Chat الوصول إليها. إدراج المساحات التي تتضمّن مصادقة المستخدم المساحات التي يمكن للمستخدم الذي تمت مصادقته الوصول إليها

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

Python

  • Python 3.6 أو أحدث
  • إنّ أداة إدارة الحِزم pip
  • أحدث مكتبات عملاء Google للغة Python. لتثبيتها أو تحديثها، شغّل الأمر التالي في واجهة سطر الأوامر:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib google-auth
    
  • مشروع على Google Cloud تم فيه تفعيل Google Chat API وضبطه لمعرفة الخطوات، يُرجى الاطّلاع على مقالة إنشاء تطبيق Google Chat.
  • تم ضبط التفويض لتطبيق Chat. تتوافق مساحات بيانات البيانات مع طريقتَي المصادقة التاليتَين:

Node.js

  • Node.js وnpm
  • أحدث مكتبات عملاء Google لنظام Node.js. ولتثبيتها، شغِّل الأمر التالي في واجهة سطر الأوامر:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • مشروع على Google Cloud تم فيه تفعيل Google Chat API وضبطه لمعرفة الخطوات، يُرجى الاطّلاع على مقالة إنشاء تطبيق Google Chat.
  • تم ضبط التفويض لتطبيق Chat. تتوافق مساحات بيانات البيانات مع طريقتَي المصادقة التاليتَين:

إدراج مساحات مع مصادقة المستخدم

لإدراج مساحات في Google Chat، عليك تقديم ما يلي في طلبك:

يسرد المثال التالي المساحات المُسمّاة والمحادثات الجماعية (وليس الرسائل المباشرة التي تمت فلترتها) المرئية للمستخدم الذي تمت المصادقة عليه:

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.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.spaces.readonly"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then lists named spaces and group chats (but not direct messages)
        visible to the authenticated user.
        '''
    
        # Authenticate with Google Workspace
        # and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file(
                          'client_secrets.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds)
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().list(
    
              # An optional filter that returns named spaces or unnamed group chats,
              # but not direct messages (DMs).
              filter='spaceType = "SPACE" OR spaceType = "GROUP_CHAT"'
    
          ).execute()
    
        # Prints the returned list of spaces.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. في دليل العمل، أنشئ النموذج وقم بتشغيله:

    python3 chat_space_list.py
    

Node.js

  1. في دليل العمل، أنشِئ ملفًا باسم list-spaces.js.
  2. ضمِّن الرمز التالي في list-spaces.js:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * List Chat spaces.
    * @return {!Promise<!Object>}
    */
    async function listSpaces() {
      const scopes = [
        'https://www.googleapis.com/auth/chat.spaces.readonly',
      ];
    
      const authClient =
          await authenticate({scopes, keyfilePath: 'client_secrets.json'});
    
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      return await chatClient.spaces.list({
        filter: 'spaceType = "SPACE" OR spaceType = "GROUP_CHAT"'
      });
    }
    
    listSpaces().then(console.log);
    
  3. في دليل العمل، شغِّل النموذج:

    node list-spaces.js
    

تعرض واجهة Chat API مجموعة مقسّمة إلى صفحات من المساحات المُعنونة والمحادثات الجماعية.

إدراج المساحات باستخدام مصادقة التطبيقات

لإدراج مساحات في Google Chat، عليك تقديم ما يلي في طلبك:

تسرد الأمثلة التالية المساحات المُسمّاة والمحادثات الجماعية (وليس الرسائل المباشرة) الظاهرة لتطبيق Chat:

Python

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

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Use the service endpoint to call Chat API.
    result = chat.spaces().list(
    
            # An optional filter that returns named spaces or unnamed
            # group chats, but not direct messages (DMs).
            filter='spaceType = "SPACE" OR spaceType = "GROUP_CHAT"'
    
        ).execute()
    
    print(result)
    
  3. في دليل العمل، أنشئ النموذج وقم بتشغيله:

    python3 chat_space_list_app.py
    

Node.js

  1. في دليل العمل، أنشِئ ملفًا باسم app-list-spaces.js.
  2. ضمِّن الرمز التالي في app-list-spaces.js:

    const chat = require('@googleapis/chat');
    
    /**
    * List Chat spaces.
    * @return {!Promise<!Object>}
    */
    async function listSpaces() {
      const scopes = [
        'https://www.googleapis.com/auth/chat.bot',
      ];
    
      const auth = new chat.auth.GoogleAuth({
        scopes,
        keyFilename: 'credentials.json',
      });
    
      const authClient = await auth.getClient();
    
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      return await chatClient.spaces.list({
        filter: 'spaceType = "SPACE" OR spaceType = "GROUP_CHAT"'
      });
    }
    
    listSpaces().then(console.log);
    
  3. في دليل العمل، شغِّل النموذج:

    node app-list-spaces.js
    

تعرض Chat API مجموعة مقسّمة إلى صفحات من المساحات.

تخصيص التقسيم على صفحات أو فلترة القائمة

لإدراج المساحات في Google Chat، اضبط مَعلمات طلب البحث الاختيارية التالية لتخصيص عملية تقسيم النتائج على صفحات أو فلترة المساحات المدرَجة:

  • pageSize: الحد الأقصى لعدد المسافات المطلوب عرضها قد تعرض الخدمة أقل من هذه القيمة. في حال عدم تحديد قيمة، يتم عرض 100 مسافة كحدّ أقصى. الحد الأقصى للقيمة هو 1,000، والقيم التي تتجاوز 1,000 يتم تغييرها تلقائيًا إلى 1,000.
  • pageToken: رمز مميز للصفحة، تم استلامه من مكالمة سابقة لمساحات العمل. قدِّم هذا الرمز المميّز لاسترداد الصفحة التالية. عند التقسيم على صفحات، يجب أن تتطابق قيمة الفلتر مع الاستدعاء الذي قدم الرمز المميز للصفحة. قد يؤدي تمرير قيمة مختلفة إلى نتائج غير متوقعة.
  • filter: فلتر طلب بحث للحصول على تفاصيل طلبات البحث المتوافقة، راجِع طريقة spaces.list.