Mettre à jour l'état de lecture d'un espace utilisateur

Ce guide explique comment utiliser la méthode updateSpaceReadState sur la ressource SpaceReadState de l'API Google Chat pour marquer des espaces comme lus ou non lus.

La ressource SpaceReadState est une ressource singleton qui représente les détails du dernier message lu d'un utilisateur spécifié dans un espace Google Chat.

Prérequis

Python

  • Python 3.6 ou version ultérieure
  • L'outil de gestion des packages pip
  • Les dernières bibliothèques clientes Google pour Python. Pour les installer ou les mettre à jour, exécutez la commande suivante dans votre interface de ligne de commande:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Un projet Google Cloud avec l'API Google Chat activée et configurée Pour connaître la procédure à suivre, consultez Créer une application Google Chat.
  • Autorisation configurée pour l'application Chat. Pour obtenir des informations sur l'état de lecture d'un utilisateur dans un espace, vous devez authentifier l'utilisateur avec le niveau d'autorisation chat.users.readstate.

Node.js

  • Node.js et npm
  • Les dernières bibliothèques clientes Google pour Node.js. Pour les installer, exécutez la commande suivante dans votre interface de ligne de commande:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • Un projet Google Cloud avec l'API Google Chat activée et configurée Pour connaître la procédure à suivre, consultez Créer une application Google Chat.
  • Autorisation configurée pour l'application Chat. Pour obtenir des informations sur l'état de lecture d'un utilisateur dans un espace, vous devez authentifier l'utilisateur avec le niveau d'autorisation chat.users.readstate.

Apps Script ;

  • Un compte Google Workspace ayant accès à Google Chat
  • Une application Chat publiée. Pour créer une application Chat, suivez ce quickstart.
  • Autorisation configurée pour l'application Chat. Pour obtenir des informations sur l'état de lecture d'un utilisateur dans un espace, vous devez authentifier l'utilisateur avec le niveau d'autorisation chat.users.readstate.

Mettre à jour l'état de lecture de l'espace de l'utilisateur appelant

Pour mettre à jour l'état de lecture d'un utilisateur dans un espace, incluez les éléments suivants dans votre requête:

  • Spécifiez le champ d'application des autorisations chat.users.readstate.
  • Appelez la méthode updateSpaceReadState sur la ressource SpaceReadState.
  • Transmettez le name de l'état de lecture de l'espace à obtenir, qui comprend un ID utilisateur ou un alias et un ID d'espace. L'obtention de l'état de lecture de l'espace ne permet d'obtenir que l'état de lecture de l'utilisateur appelant, qui peut être spécifié en définissant l'une des options suivantes :
    • Alias me Exemple : users/me/spaces/SPACE/spaceReadState.
    • Adresse e-mail Workspace de l'utilisateur appelant. Par exemple : users/user@example.com/spaces/SPACE/spaceReadState.
    • ID utilisateur de l'utilisateur appelant. Par exemple : users/USER/spaces/SPACE/spaceReadState.
  • Transmettez le updateMask, qui spécifie les aspects de l'état de lecture de l'espace à mettre à jour, qui accepte les chemins d'accès de champ suivants :
    • lastReadTime: heure à laquelle l'état de lecture de l'espace de l'utilisateur a été mis à jour. En général, il correspond au code temporel du dernier message lu ou à un horodatage spécifié par l'utilisateur pour marquer la dernière position lue dans un espace. Lorsque lastReadTime est antérieur à l'heure de création du dernier message, l'espace apparaît comme non lu dans l'interface utilisateur. Pour marquer l'espace comme lu, définissez lastReadTime sur une valeur ultérieure (plus grande) que l'heure de création du dernier message. Le lastReadTime est forcé pour correspondre à l'heure de création du dernier message. Notez que l'état de lecture de l'espace n'affecte que l'état de lecture des messages visibles dans la conversation de premier niveau de l'espace. Les réponses dans les fils de discussion ne sont pas affectées par cet horodatage et reposent à la place sur l'état de lecture du thread.

L'exemple suivant met à jour l'état de lecture de l'espace de l'utilisateur appelant:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_spaceReadState_update.py.
  2. Incluez le code suivant dans 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. Dans le code, remplacez ce qui suit:

    • SPACE: nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list de l'API Chat ou de l'URL d'un espace.
  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_spaceReadState_update.py
    

Node.js

  1. Dans votre répertoire de travail, créez un fichier nommé chat_spaceReadState_update.js.
  2. Incluez le code suivant dans 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. Dans le code, remplacez ce qui suit:

    • SPACE: nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list de l'API Chat ou de l'URL d'un espace.
  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    node chat_spaceReadState_update.js
    

Apps Script ;

Cet exemple appelle l'API Chat à l'aide du service Chat avancé.

  1. Ajoutez le champ d'application des autorisations chat.users.readstate au fichier appsscript.json du projet Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate"
    ]
    
  2. Ajoutez une fonction comme celle-ci au code du projet 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 met à jour l'état de lecture de l'espace spécifié et renvoie une instance de la ressource SpaceReadState.