وضعیت خواندن فضای کاربر را به روز کنید

این راهنما نحوه استفاده از روش updateSpaceReadState را در منبع SpaceReadState در Google Chat API برای علامت‌گذاری فضاها به عنوان خوانده‌شده یا خوانده نشده توضیح می‌دهد.

منبع SpaceReadState یک منبع تکی است که جزئیات مربوط به آخرین پیام خوانده شده کاربر مشخص شده را در فضای چت Google نشان می دهد.

پیش نیازها

پایتون

  • پایتون 3.6 یا بالاتر
  • ابزار مدیریت بسته پیپ
  • جدیدترین کتابخانه های مشتری گوگل برای پایتون. برای نصب یا به روز رسانی آنها، دستور زیر را در رابط خط فرمان خود اجرا کنید:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • یک پروژه Google Cloud با Google Chat API فعال و پیکربندی شده است. برای مراحل، به ساخت برنامه گپ Google مراجعه کنید.
  • مجوز برای برنامه چت پیکربندی شد. دریافت جزئیات در مورد وضعیت خواندن کاربر در یک فضا نیاز به احراز هویت کاربر با محدوده مجوز chat.users.readstate دارد.

Node.js

  • Node.js و npm
  • جدیدترین کتابخانه های سرویس گیرنده Google برای Node.js. برای نصب آنها، دستور زیر را در رابط خط فرمان خود اجرا کنید:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • یک پروژه Google Cloud با Google Chat API فعال و پیکربندی شده است. برای مراحل، به ساخت برنامه گپ Google مراجعه کنید.
  • مجوز برای برنامه چت پیکربندی شد. دریافت جزئیات در مورد وضعیت خواندن کاربر در یک فضا نیاز به احراز هویت کاربر با محدوده مجوز chat.users.readstate دارد.

اسکریپت برنامه ها

  • یک حساب Google Workspace با دسترسی به Google Chat .
  • یک برنامه چت منتشر شده. برای ایجاد یک برنامه چت، این شروع سریع را دنبال کنید.
  • مجوز برای برنامه چت پیکربندی شد. دریافت جزئیات در مورد وضعیت خواندن کاربر در یک فضا نیاز به احراز هویت کاربر با محدوده مجوز chat.users.readstate دارد.

وضعیت خواندن فضای کاربر تماس گیرنده را به روز کنید

برای به‌روزرسانی وضعیت خواندن کاربر در یک فاصله، موارد زیر را در درخواست خود بگنجانید:

  • محدوده مجوز chat.users.readstate را مشخص کنید.
  • متد updateSpaceReadState را در منبع SpaceReadState فراخوانی کنید.
  • name وضعیت خواندن فاصله را برای دریافت ارسال کنید، که شامل شناسه کاربری یا نام مستعار و شناسه فاصله است. دریافت وضعیت خواندن فضا فقط از دریافت وضعیت خواندن کاربر تماس‌گیرنده پشتیبانی می‌کند که با تنظیم یکی از موارد زیر می‌توان آن را تعیین کرد:
    • me مستعار من برای مثال، users/me/spaces/ SPACE /spaceReadState .
    • آدرس ایمیل کاربر تماس گیرنده Workspace. به عنوان مثال، users/user@example.com/spaces/ SPACE /spaceReadState .
    • شناسه کاربری کاربر تماس گیرنده. به عنوان مثال، users/ USER /spaces/ SPACE /spaceReadState .
  • updateMask را بفرستید، که جنبه‌های حالت خواندن فضا را برای به‌روزرسانی مشخص می‌کند، که از مسیرهای فیلد زیر پشتیبانی می‌کند:
    • lastReadTime : زمانی که وضعیت خواندن فضای کاربر به روز شد. معمولاً این با مهر زمانی آخرین پیام خوانده شده یا مهر زمانی مشخص شده توسط کاربر برای علامت گذاری آخرین موقعیت خوانده شده در یک فاصله مطابقت دارد. وقتی lastReadTime قبل از زمان ایجاد آخرین پیام باشد، فضا به صورت خوانده نشده در UI ظاهر می شود. برای علامت‌گذاری فضا به‌عنوان خوانده‌شده، lastReadTime روی هر مقدار دیرتر (بزرگ‌تر) از زمان ایجاد آخرین پیام تنظیم کنید. lastReadTime مجبور می شود با آخرین زمان ایجاد پیام مطابقت داشته باشد. توجه داشته باشید که وضعیت خواندن فاصله فقط بر وضعیت خواندن پیام‌هایی که در مکالمه سطح بالای فضا قابل مشاهده هستند تأثیر می‌گذارد. پاسخ‌های موجود در رشته‌ها تحت تأثیر این مُهر زمانی قرار نمی‌گیرند، و در عوض به وضعیت خواندن رشته متکی هستند.

مثال زیر وضعیت خواندن فضای کاربر تماس گیرنده را به روز می کند:

پایتون

  1. در پوشه کاری خود، فایلی با نام chat_spaceReadState_update.py ایجاد کنید.
  2. کد زیر را در chat_spaceReadState_update.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.users.readstate"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then updates the space read state for the calling 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.users().spaces().updateSpaceReadState(
    
            # The space read state to update.
            #
            # Replace USER with the calling user's ID, Workspace email,
            # or the alias me.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            name='users/me/spaces/SPACE/spaceReadState',
            updateMask='lastReadTime',
            body={'lastReadTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z'}
    
          ).execute()
    
        # Prints the API's response.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. در کد زیر را جایگزین کنید:

    • SPACE : نام فضایی است که می توانید از روش spaces.list در Chat API یا از URL یک فضا دریافت کنید.
  4. در پوشه کاری خود، نمونه را بسازید و اجرا کنید:

    python3 chat_spaceReadState_update.py
    

Node.js

  1. در پوشه کاری خود، یک فایل با نام chat_spaceReadState_update.js ایجاد کنید.
  2. کد زیر را در chat_spaceReadState_update قرار دهید:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * Authenticates with Chat API via user credentials,
    * then updates the space read state for the calling user.
    * @return {!Promise<!Object>}
    */
    async function updateSpaceReadState() {
    
      /**
      * Authenticate with Google Workspace
      * and get user authorization.
      */
      const scopes = [
        'https://www.googleapis.com/auth/chat.users.readstate',
      ];
    
      const authClient =
          await authenticate({scopes, keyfilePath: 'client_secrets.json'});
    
      /**
      * Build a service endpoint for Chat API.
      */
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      /**
      * Use the service endpoint to call Chat API.
      */
      return await chatClient.users.spaces.updateSpaceReadState({
    
        /**
        * The space read state to update.
        *
        * Replace USER with the calling user's ID, Workspace email,
        * or the alias me.
        *
        * Replace SPACE with a space name.
        * Obtain the space name from the spaces resource of Chat API,
        * or from a space's URL.
        */
        name: 'users/me/spaces/SPACE/spaceReadState',
        updateMask: 'lastReadTime',
        requestBody: {
          lastReadTime: '{datetime.datetime(2000, 1, 3).isoformat()}Z'
        }
      });
    }
    
    /**
    * Use the service endpoint to call Chat API.
    */
    getSpaceReadState().then(console.log);
    
  3. در کد زیر را جایگزین کنید:

    • SPACE : نام فضایی است که می توانید از روش spaces.list در Chat API یا از URL یک فضا دریافت کنید.
  4. در پوشه کاری خود، نمونه را بسازید و اجرا کنید:

    node chat_spaceReadState_update.js
    

اسکریپت برنامه ها

این مثال Chat API را با استفاده از Advanced Chat Service فراخوانی می‌کند.

  1. دامنه مجوز chat.users.readstate را به فایل appsscript.json پروژه Apps Script اضافه کنید:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate"
    ]
    
  2. تابعی مانند این را به کد پروژه Apps Script اضافه کنید:

    /**
    * Authenticates with Chat API via user credentials,
    * then updates the space read state for the calling user.
    * @param {string} spaceReadStateName The resource name of the space read state.
    */
    function updateSpaceReadState(spaceReadStateName) {
      try {
        const time = new Date('January 1, 2000')).toJSON();
        const body = {'lastReadTime': time};
        Chat.Users.Spaces.updateSpaceReadState(spaceReadStateName, body);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to update read state with error %s', err.message);
      }
    }
    

Google Chat API وضعیت خواندن فضای مشخص شده را به‌روزرسانی می‌کند و نمونه‌ای از منبع SpaceReadState را برمی‌گرداند.