Aggiorna lo stato di lettura dello spazio di un utente

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

La risorsa SpaceReadState è una risorsa singleton che rappresenta i dettagli dell'ultimo messaggio di lettura di un 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 Python. Per installarli o aggiornarli, esegui questo comando nell'interfaccia a riga di comando:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Un progetto Google Cloud in cui l'API Google Chat è abilitata e configurata. Per i passaggi da seguire, consulta Creare un'app Google Chat.
  • Autorizzazione configurata per l'app di Chat. Per ottenere i dettagli sullo stato di lettura di un utente all'interno di uno spazio è necessaria l'autenticazione dell'utente con l'ambito di autorizzazione chat.users.readstate.

Node.js

  • Node.js e npm
  • Le librerie client di Google più recenti per Node.js. Per installarle, esegui questo comando nell'interfaccia a riga di comando:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • Un progetto Google Cloud in cui l'API Google Chat è abilitata e configurata. Per i passaggi da seguire, consulta Creare un'app Google Chat.
  • Autorizzazione configurata per l'app di Chat. Per ottenere i dettagli sullo stato di lettura di un utente all'interno di uno spazio è necessaria l'autenticazione dell'utente con l'ambito di autorizzazione chat.users.readstate.

Apps Script

  • Un account Google Workspace con accesso a Google Chat.
  • Un'app di Chat pubblicata. Per creare un'app di Chat, segui questa quickstart.
  • Autorizzazione configurata per l'app di Chat. Per ottenere i dettagli sullo stato di lettura di un utente all'interno di uno spazio è necessaria l'autenticazione dell'utente con l'ambito di autorizzazione chat.users.readstate.

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 nella richiesta:

  • Specifica l'ambito dell'autorizzazione chat.users.readstate.
  • Chiama il metodo updateSpaceReadState nella risorsa SpaceReadState.
  • Passa il valore name dello stato di lettura dello spazio per ottenere, che include un ID utente o un alias e un ID spazio. Ottenere lo stato di lettura dello spazio supporta solo lo stato di lettura dell'utente chiamante, che può essere specificato impostando una delle seguenti opzioni:
    • L'alias me. Ad esempio, users/me/spaces/SPACE/spaceReadState.
    • L'indirizzo email Workspace dell'utente chiamante. Ad esempio, users/user@example.com/spaces/SPACE/spaceReadState.
    • L'ID utente dell'utente chiamante. Ad esempio, users/USER/spaces/SPACE/spaceReadState.
  • Passa il comando updateMask, che specifica gli aspetti dello stato di lettura dello spazio da aggiornare, che supporta i seguenti percorsi dei campi:
    • lastReadTime: l'ora in cui è stato aggiornato lo stato di lettura dello spazio dell'utente. Di solito corrisponde al timestamp dell'ultimo messaggio letto o a un timestamp specificato dall'utente per contrassegnare l'ultima posizione di lettura in uno spazio. Quando lastReadTime è precedente all'ora di creazione del messaggio più recente, lo spazio risulta da leggere nell'interfaccia utente. Per contrassegnare lo spazio come letto, imposta lastReadTime su un valore successivo (maggiore) rispetto all'ora di creazione dell'ultimo messaggio. lastReadTime deve corrispondere 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 visibili nella conversazione di primo livello dello spazio. Le risposte nei thread non sono 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 che effettua la chiamata:

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. Sostituisci quanto segue nel codice:

    • SPACE: il nome di uno spazio, che puoi ottenere dal 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. Sostituisci quanto segue nel codice:

    • SPACE: il nome di uno spazio, che puoi ottenere dal 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

Questo esempio chiama l'API Chat utilizzando il 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 al codice del progetto 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);
      }
    }
    

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