Memperbarui status baca ruang pengguna

Panduan ini menjelaskan cara menggunakan metode updateSpaceReadState pada resource SpaceReadState Google Chat API untuk menandai ruang sebagai telah dibaca atau belum dibaca.

Resource SpaceReadState adalah resource singleton yang mewakili detail tentang pesan yang terakhir dibaca pengguna tertentu di ruang Google Chat.

Prasyarat

Python

  • Python 3.6 atau yang lebih baru
  • Alat pengelolaan paket pip
  • Library klien Google terbaru untuk Python. Untuk menginstal atau mengupdatenya, jalankan perintah berikut di antarmuka command line Anda:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Project Google Cloud dengan Google Chat API yang diaktifkan dan dikonfigurasi. Untuk mengetahui langkah-langkahnya, lihat Mem-build aplikasi Google Chat.
  • Otorisasi dikonfigurasi untuk aplikasi Chat. Mendapatkan detail tentang status baca pengguna dalam ruang memerlukan autentikasi pengguna dengan cakupan otorisasi chat.users.readstate.

Node.js

  • Node.js & npm
  • Library klien Google terbaru untuk Node.js. Untuk menginstalnya, jalankan perintah berikut di antarmuka command line Anda:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • Project Google Cloud dengan Google Chat API yang diaktifkan dan dikonfigurasi. Untuk mengetahui langkah-langkahnya, lihat Mem-build aplikasi Google Chat.
  • Otorisasi dikonfigurasi untuk aplikasi Chat. Mendapatkan detail tentang status baca pengguna dalam ruang memerlukan autentikasi pengguna dengan cakupan otorisasi chat.users.readstate.

Apps Script

  • Akun Google Workspace dengan akses ke Google Chat.
  • Aplikasi Chat yang dipublikasikan. Untuk mem-build aplikasi Chat, ikuti quickstart ini.
  • Otorisasi dikonfigurasi untuk aplikasi Chat. Mendapatkan detail tentang status baca pengguna dalam ruang memerlukan autentikasi pengguna dengan cakupan otorisasi chat.users.readstate.

Memperbarui status baca ruang pengguna yang melakukan panggilan

Untuk memperbarui status baca pengguna dalam ruang, sertakan hal berikut dalam permintaan Anda:

  • Tentukan cakupan otorisasi chat.users.readstate.
  • Panggil metode updateSpaceReadState di resource SpaceReadState.
  • Teruskan name status baca ruang untuk mendapatkan, yang mencakup ID pengguna atau alias dan ID ruang. Mendapatkan status baca ruang hanya mendukung pengambilan status baca pengguna yang memanggil, yang dapat ditentukan dengan menetapkan salah satu hal berikut:
    • Alias me. Misalnya, users/me/spaces/SPACE/spaceReadState.
    • Alamat email Workspace pengguna yang menelepon. Misalnya, users/user@example.com/spaces/SPACE/spaceReadState.
    • ID pengguna dari pengguna yang menelepon. Misalnya, users/USER/spaces/SPACE/spaceReadState.
  • Teruskan updateMask, yang menentukan aspek status pembacaan ruang yang akan diupdate, yang mendukung jalur kolom berikut:
    • lastReadTime: Waktu saat status baca ruang pengguna diperbarui. Biasanya ini berkaitan dengan stempel waktu pesan yang terakhir dibaca, atau stempel waktu yang ditentukan oleh pengguna untuk menandai posisi baca terakhir dalam ruang. Jika lastReadTime berada sebelum waktu pembuatan pesan terbaru, ruang akan muncul sebagai belum dibaca di UI. Untuk menandai ruang sebagai telah dibaca, tetapkan lastReadTime ke nilai apa pun setelah itu (lebih besar) dari waktu pembuatan pesan terbaru. lastReadTime dipaksa agar cocok dengan waktu pembuatan pesan terbaru. Perlu diperhatikan bahwa status baca ruang hanya memengaruhi status baca pesan yang terlihat di percakapan tingkat atas ruang. Balasan dalam thread tidak terpengaruh oleh stempel waktu ini, dan sebagai gantinya mengandalkan status baca thread.

Contoh berikut memperbarui status baca ruang pengguna yang melakukan panggilan:

Python

  1. Di direktori kerja, buat file bernama chat_spaceReadState_update.py.
  2. Sertakan kode berikut di 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. Dalam kode, ganti kode berikut:

    • SPACE: nama ruang, yang dapat Anda peroleh dari metode spaces.list di Chat API, atau dari URL ruang.
  4. Di direktori kerja Anda, buat dan jalankan contoh:

    python3 chat_spaceReadState_update.py
    

Node.js

  1. Di direktori kerja, buat file bernama chat_spaceReadState_update.js.
  2. Sertakan kode berikut di 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. Dalam kode, ganti kode berikut:

    • SPACE: nama ruang, yang dapat Anda peroleh dari metode spaces.list di Chat API, atau dari URL ruang.
  4. Di direktori kerja Anda, buat dan jalankan contoh:

    node chat_spaceReadState_update.js
    

Apps Script

Contoh ini memanggil Chat API menggunakan Advanced Chat Service.

  1. Tambahkan cakupan otorisasi chat.users.readstate ke file appsscript.json project Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate"
    ]
    
  2. Tambahkan fungsi seperti ini ke kode project 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 memperbarui status baca ruang yang ditentukan dan menampilkan instance resource SpaceReadState.