Cập nhật trạng thái đọc không gian của người dùng

Hướng dẫn này giải thích cách sử dụng phương thức updateSpaceReadState trên tài nguyên SpaceReadState của API Google Chat để đánh dấu các không gian là đã đọc hoặc chưa đọc.

Tài nguyên SpaceReadState là tài nguyên singleton trình bày thông tin chi tiết về tin nhắn đọc gần đây nhất của người dùng được chỉ định trong không gian Google Chat.

Điều kiện tiên quyết

Python

  • Python 3.6 trở lên
  • Công cụ quản lý gói pip
  • Các thư viện ứng dụng mới nhất của Google dành cho Python. Để cài đặt hoặc cập nhật các công cụ này, hãy chạy lệnh sau trong giao diện dòng lệnh của bạn:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Một dự án trên Google Cloud đã bật và thiết lập API Google Chat. Để biết các bước, hãy xem bài viết Tạo ứng dụng Google Chat.
  • Đã định cấu hình hoạt động uỷ quyền cho ứng dụng Chat. Để nhận được thông tin chi tiết về trạng thái đọc của người dùng trong một không gian, bạn cần phải xác thực người dùng trong phạm vi uỷ quyền chat.users.readstate.

Node.js

  • Node.js và npm
  • Thư viện ứng dụng mới nhất của Google dành cho Node.js. Để cài đặt các công cụ này, hãy chạy lệnh sau trong giao diện dòng lệnh của bạn:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • Một dự án trên Google Cloud đã bật và thiết lập API Google Chat. Để biết các bước, hãy xem bài viết Tạo ứng dụng Google Chat.
  • Đã định cấu hình hoạt động uỷ quyền cho ứng dụng Chat. Để nhận được thông tin chi tiết về trạng thái đọc của người dùng trong một không gian, bạn cần phải xác thực người dùng trong phạm vi uỷ quyền chat.users.readstate.

Apps Script

  • Một tài khoản Google Workspace có quyền truy cập vào Google Chat.
  • Một ứng dụng Chat đã phát hành. Để tạo ứng dụng Chat, hãy làm theo phần quickstart này.
  • Đã định cấu hình hoạt động uỷ quyền cho ứng dụng Chat. Để nhận được thông tin chi tiết về trạng thái đọc của người dùng trong một không gian, bạn cần phải xác thực người dùng trong phạm vi uỷ quyền chat.users.readstate.

Cập nhật trạng thái đọc không gian của người dùng gọi

Để cập nhật trạng thái đọc của người dùng trong một không gian, hãy đưa nội dung sau vào yêu cầu:

  • Chỉ định phạm vi uỷ quyền chat.users.readstate.
  • Gọi phương thức updateSpaceReadState trên tài nguyên SpaceReadState.
  • Truyền name của trạng thái đọc không gian để lấy, bao gồm mã nhận dạng người dùng hoặc email đại diện và mã không gian. Việc nhận trạng thái đọc không gian chỉ hỗ trợ việc nhận trạng thái đọc của người dùng đang gọi. Bạn có thể chỉ định trạng thái này bằng cách đặt một trong các mục sau:
    • Bí danh me. Ví dụ: users/me/spaces/SPACE/spaceReadState.
    • Địa chỉ email Workspace của người dùng gọi. Ví dụ: users/user@example.com/spaces/SPACE/spaceReadState.
    • Mã nhận dạng người dùng của người dùng gọi. Ví dụ: users/USER/spaces/SPACE/spaceReadState.
  • Truyền updateMask để chỉ định các khía cạnh của trạng thái đọc không gian cần cập nhật, hỗ trợ các đường dẫn trường sau đây:
    • lastReadTime: Thời điểm cập nhật trạng thái đọc không gian của người dùng. Thông thường, thuộc tính này tương ứng với dấu thời gian của thông báo đọc gần đây nhất hoặc dấu thời gian do người dùng chỉ định để đánh dấu vị trí đọc gần đây nhất trong một không gian. Khi lastReadTime xuất hiện trước thời gian tạo thông báo mới nhất, không gian sẽ xuất hiện dưới dạng chưa đọc trong giao diện người dùng. Để đánh dấu không gian là đã đọc, hãy đặt lastReadTime thành bất kỳ giá trị nào sau đó (lớn hơn) so với thời gian tạo thông báo mới nhất. lastReadTime bị buộc phải khớp với thời gian tạo thông báo mới nhất. Lưu ý rằng trạng thái đọc không gian chỉ ảnh hưởng đến trạng thái đã đọc của tin nhắn hiển thị trong cuộc trò chuyện cấp cao nhất của không gian. Phản hồi trong luồng không chịu ảnh hưởng của dấu thời gian này, mà phụ thuộc vào trạng thái đọc của luồng.

Ví dụ sau đây cập nhật trạng thái đọc không gian của người dùng gọi:

Python

  1. Trong thư mục đang làm việc, hãy tạo một tệp có tên là chat_spaceReadState_update.py.
  2. Đưa mã sau vào 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. Trong mã, hãy thay thế các đoạn mã sau:

    • SPACE: tên không gian mà bạn có thể lấy từ phương thức spaces.list trong API Chat hoặc từ URL của một không gian.
  4. Trong thư mục đang làm việc, hãy tạo và chạy mẫu:

    python3 chat_spaceReadState_update.py
    

Node.js

  1. Trong thư mục đang làm việc, hãy tạo một tệp có tên là chat_spaceReadState_update.js.
  2. Đưa mã sau vào 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. Trong mã, hãy thay thế các đoạn mã sau:

    • SPACE: tên không gian mà bạn có thể lấy từ phương thức spaces.list trong API Chat hoặc từ URL của một không gian.
  4. Trong thư mục đang làm việc, hãy tạo và chạy mẫu:

    node chat_spaceReadState_update.js
    

Apps Script

Ví dụ này gọi API Chat bằng Dịch vụ trò chuyện nâng cao.

  1. Thêm phạm vi uỷ quyền chat.users.readstate vào tệp appsscript.json của dự án Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate"
    ]
    
  2. Thêm một hàm như hàm này vào mã của dự án 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);
      }
    }
    

API Google Chat cập nhật trạng thái đọc không gian được chỉ định và trả về một thực thể của tài nguyên SpaceReadState.