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.

Chiến lược phát hành đĩa đơn Tài nguyên SpaceReadState là một tài nguyên singleton biểu thị thông tin chi tiết về một tin nhắn đọc gần đây nhất của người dùng mà bạn chỉ định trong phòng 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
  • Thư viện ứng dụng mới nhất của Google. Cách cài đặt hoặc cập nhật các tính năng này: chạy lệnh sau trong giao diện dòng lệnh:
    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    

Node.js

  • Node.js 14 trở lên
  • npm công cụ quản lý gói
  • Thư viện ứng dụng mới nhất của Google. Cách cài đặt hoặc cập nhật các tính năng này: chạy lệnh sau trong giao diện dòng lệnh:
    npm install @google-cloud/local-auth @googleapis/chat
    

Apps Script

Cập nhật trạng thái đọc không gian của người dùng thực hiện lệnh 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 trong yêu cầu của bạn:

  • Chỉ định phạm vi uỷ quyền chat.users.readstate.
  • Gọi Phương thức updateSpaceReadState trên SpaceReadState tài nguyên.
  • Truyền name của trạng thái đọc không gian để lấy, bao gồm cả mã nhận dạng người dùng hoặc email đại diện và mã không gian. Việc lấy trạng thái đọc của không gian chỉ hỗ trợ nhận thông tin về trạng thái đã đọc trạng thái của người dùng gọi, có thể được chỉ định bằng cách đặt một trong 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 dùng để chỉ định các khía cạnh của trạng thái đọc không gian đến Bản cập nhật này hỗ trợ các đường dẫn trường sau:
    • 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, dấu thời gian này tương ứng với dấu thời gian của tin nhắn đọc lần gần nhất, hoặc dấu thời gian do người dùng chỉ định để đánh dấu vị trí đọc lần cuối trong một . Khi lastReadTime ở trước thời gian tạo thông báo mới nhất, 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ông báo mới nhất được tạo bất cứ lúc nào. 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 của không gian chỉ ảnh hưởng đến trạng thái đã đọc của tin nhắn có mặt trong cuộc trò chuyện ở cấp cao nhất của không gian. Tin nhắn trả lời trong chuỗi tin nhắn là không bị ảnh hưởng bởi dấu thời gian này và thay vào đó hãy dựa vào trạng thái đọc chuỗi.

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

Python

  1. Trong thư mục đang làm việc, hãy tạo một tệp có tên 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ã, thay thế các nội dung 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 qua 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 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ã, thay thế các nội dung 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 qua 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 cách sử dụ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 dự án Apps Script mã:

    /**
    * 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 đã chỉ định rồi trả về một bản sao của Tài nguyên SpaceReadState.