Aggiorna lo stato di lettura dello spazio di un utente

Questa guida spiega come utilizzare il metodo updateSpaceReadState nella SpaceReadState risorsa dell'API Google Chat per contrassegnare gli spazi come letti o da leggere.

La SpaceReadState risorsa è una risorsa singleton che rappresenta i dettagli di un l'ultimo messaggio letto dall'utente specificato in uno spazio di Google Chat.

Prerequisiti

Python

  • Python 3.6 o versioni successive
  • Lo strumento di gestione dei pacchetti pip
  • Le librerie client di Google più recenti. Per installarle o aggiornarle, esegui questo comando nell'interfaccia a riga di comando:
    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    

Node.js

  • Node.js 14 o versioni successive
  • npm strumento di gestione dei pacchetti
  • Le librerie client di Google più recenti. Per installarle o aggiornarle, esegui questo comando nell'interfaccia a riga di comando:
    npm install @google-cloud/local-auth @googleapis/chat
    

Apps Script

Aggiorna lo stato di lettura dello spazio dell'utente chiamante

Per aggiornare lo stato di lettura di un utente all'interno di uno spazio, includi quanto segue in la tua richiesta:

  • Specifica l'ambito dell'autorizzazione chat.users.readstate.
  • Chiama il Metodo updateSpaceReadState il SpaceReadState risorsa.
  • Passa name dello stato di lettura dello spazio per ottenerlo, che include un ID utente o alias e un ID spazio. Il recupero dello stato di lettura dello spazio supporta solo il recupero lo stato dell'utente chiamante, che può essere specificato impostando uno dei seguenti:
    • L'alias me. Ad esempio: users/me/spaces/SPACE/spaceReadState.
    • L'indirizzo email Workspace dell'utente che ha effettuato la chiamata. Ad esempio: users/user@example.com/spaces/SPACE/spaceReadState.
    • L'ID utente dell'utente chiamante. Ad esempio: users/USER/spaces/SPACE/spaceReadState.
  • Passa il valore updateMask, che specifica gli aspetti dello stato di lettura dello spazio a , che supporta i seguenti percorsi dei campi:
    • lastReadTime: l'ora in cui lo stato di lettura dello spazio dell'utente è stato aggiornato. Di solito corrisponde al timestamp dell'ultimo messaggio letto, o un timestamp specificato dall'utente per contrassegnare l'ultima posizione di lettura in un spazio. Quando lastReadTime è precedente all'ora dell'ultimo messaggio di creazione, il valore appare come da leggere nella UI. Per contrassegnare lo spazio come letto, imposta lastReadTime a qualsiasi valore successivo (maggiore) rispetto all'ultima creazione del messaggio nel tempo. Il valore lastReadTime viene forzato in modo che corrisponda all'ora di creazione del messaggio più recente. Tieni presente che lo stato di lettura dello spazio influisce solo sullo stato di lettura dei messaggi che sono visibili nella conversazione di primo livello dello spazio. Le risposte nei thread sono non interessate da questo timestamp e si basano invece sullo stato di lettura del thread.

L'esempio seguente aggiorna lo stato di lettura dello spazio dell'utente chiamante:

Python

  1. Nella directory di lavoro, crea un file denominato chat_spaceReadState_update.py.
  2. Includi il seguente codice in 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. Nel codice, sostituisci quanto segue:

    • SPACE: il nome di uno spazio, che che puoi ottenere Metodo spaces.list nell'API Chat o dall'URL di uno spazio.
  4. Nella directory di lavoro, crea ed esegui l'esempio:

    python3 chat_spaceReadState_update.py
    

Node.js

  1. Nella directory di lavoro, crea un file denominato chat_spaceReadState_update.js.
  2. Includi il seguente codice in 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. Nel codice, sostituisci quanto segue:

    • SPACE: il nome di uno spazio, che che puoi ottenere Metodo spaces.list nell'API Chat o dall'URL di uno spazio.
  4. Nella directory di lavoro, crea ed esegui l'esempio:

    node chat_spaceReadState_update.js
    

Apps Script

In questo esempio viene chiamata l'API Chat utilizzando Servizio Chat avanzato.

  1. Aggiungi l'ambito dell'autorizzazione chat.users.readstate al File appsscript.json del progetto Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate"
    ]
    
  2. Aggiungi una funzione come questa all'interfaccia codice:

    /**
    * 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);
      }
    }
    

L'API Google Chat aggiorna lo stato di lettura dello spazio specificato e restituisce un'istanza di SpaceReadState risorsa.