Modifier l'appartenance d'un utilisateur à un espace Google Chat

Ce guide explique comment utiliser la méthode patch sur la ressource membership de l'API Google Chat pour modifier les attributs d'un espace (par exemple, pour donner le statut de gestionnaire à un membre de l'espace ou transformer ce gestionnaire en membre d'espace).

La ressource Membership indique si un utilisateur humain ou une application Google Chat est invité à un espace, en fait partie ou absent.

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. La mise à jour d'une appartenance nécessite une authentification de l'utilisateur avec le niveau d'autorisation chat.memberships ou, si vous importez des données dans Chat, le niveau d'autorisation chat.import.

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. La mise à jour d'une appartenance nécessite une authentification de l'utilisateur avec le niveau d'autorisation chat.memberships ou, si vous importez des données dans Chat, le niveau d'autorisation chat.import.

Apps Script ;

Modifier un abonnement

Pour modifier la liste des membres d'un espace, transmettez les éléments suivants dans votre demande:

  • Spécifiez le champ d'application des autorisations chat.memberships.
  • Appelez la méthode patch sur la ressource Membership, puis transmettez le name de l'appartenance à mettre à jour, ainsi qu'un updateMask et un body qui spécifient les attributs d'appartenance mis à jour.
  • updateMask spécifie les aspects de l'appartenance à mettre à jour et inclut les éléments suivants :
    • role: rôle de l'utilisateur dans un espace Chat, qui détermine les actions autorisées dans l'espace. Les valeurs possibles sont les suivantes :
      • ROLE_MEMBER: membre de l'espace. L'utilisateur dispose d'autorisations de base, comme envoyer des messages à l'espace. Dans les conversations de groupe individuelles et sans nom, tout le monde a ce rôle.
      • ROLE_MANAGER: gestionnaire de l'espace. L'utilisateur dispose de toutes les autorisations de base, ainsi que des autorisations d'administration qui lui permettent de gérer l'espace, comme ajouter ou supprimer des membres. Uniquement disponible dans les espaces où spaceType est SPACE (espaces nommés).

Désigner un membre standard de l'espace comme gestionnaire de l'espace

L'exemple suivant définit un membre d'espace standard comme gestionnaire d'espace en spécifiant role comme ROLE_MANAGER dans le body qui spécifie les attributs d'appartenance mis à jour:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_membership_update.py.
  2. Incluez le code suivant dans chat_membership_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.memberships"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then updates a specified space member to change
        it from a regular member to a space manager.
        '''
    
        # 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.spaces().members().patch(
    
            # The membership to update, and the updated role.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            #
            # Replace MEMBERSHIP with a membership name.
            # Obtain the membership name from the membership of Chat API.
            name='spaces/SPACE/members/MEMBERSHIP',
            updateMask='role',
            body={'role': 'ROLE_MANAGER'}
    
          ).execute()
    
        # Prints details about the updated membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Dans le code, remplacez ce qui suit:

  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_membership_update.py
    

Node.js

  1. Dans votre répertoire de travail, créez un fichier nommé chat_membership_update.js.
  2. Incluez le code suivant dans chat_membership_update.js:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * Updates a membership in a Chat space to change it from
    * a space member to a space manager.
    * @return {!Promise<!Object>}
    */
    async function updateSpace() {
    
      /**
      * Authenticate with Google Workspace
      * and get user authorization.
      */
      const scopes = [
        'https://www.googleapis.com/auth/chat.memberships',
      ];
    
      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.spaces.patch({
    
        /**
        * The membership to update, and the updated role.
        *
        * Replace SPACE with a space name.
        * Obtain the space name from the spaces resource of Chat API,
        * or from a space's URL.
        *
        * Replace MEMBERSHIP with a membership name.
        * Obtain the membership name from the membership of Chat API.
        */
        name: 'spaces/SPACE/members/MEMBERSHIP',
        updateMask: 'role',
        requestBody: {
          role: 'ROLE_MANAGER'
        }
      });
    }
    
    /**
    * Use the service endpoint to call Chat API.
    */
    updateSpace().then(console.log);
    
  3. Dans le code, remplacez ce qui suit:

  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_membership_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.memberships au fichier appsscript.json du projet Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships"
    ]
    
  2. Ajoutez une fonction comme celle-ci au code du projet Apps Script:

    /**
     * Updates a membership from space member to space manager.
     * @param {string} memberName The resource name of the membership.
    */
    function updateMembershipToSpaceManager(memberName) {
      try {
        const body = {'role': 'ROLE_MANAGER'};
        Chat.Spaces.Members.patch(memberName, body);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create message with error %s', err.message);
      }
    }
    

L'API Google Chat remplace l'appartenance spécifiée par un gestionnaire d'espace et renvoie une instance de Membership détaillant la modification.

Désigner un gestionnaire d'espace comme simple membre

L'exemple suivant fait d'un gestionnaire d'espace un membre standard de l'espace en spécifiant role comme ROLE_MEMBER dans le body qui spécifie les attributs d'appartenance mis à jour:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_membership_update.py.
  2. Incluez le code suivant dans chat_membership_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.memberships"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then updates a specified space member to change
        it from a regular member to a space manager.
        '''
    
        # 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.spaces().members().patch(
    
            # The membership to update, and the updated role.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            #
            # Replace MEMBERSHIP with a membership name.
            # Obtain the membership name from the membership of Chat API.
            name='spaces/SPACE/members/MEMBERSHIP',
            updateMask='role',
            body={'role': 'ROLE_MEMBER'}
    
          ).execute()
    
        # Prints details about the updated membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Dans le code, remplacez ce qui suit:

  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_membership_update.py
    

Node.js

  1. Dans votre répertoire de travail, créez un fichier nommé chat_membership_update.js.
  2. Incluez le code suivant dans chat_membership_update.js:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * Updates a membership in a Chat space to change it from
    * a space manager to a space member.
    * @return {!Promise<!Object>}
    */
    async function updateSpace() {
    
      /**
      * Authenticate with Google Workspace
      * and get user authorization.
      */
      const scopes = [
        'https://www.googleapis.com/auth/chat.memberships',
      ];
    
      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.spaces.patch({
    
        /**
        * The membership to update, and the updated role.
        *
        * Replace SPACE with a space name.
        * Obtain the space name from the spaces resource of Chat API,
        * or from a space's URL.
        *
        * Replace MEMBERSHIP with a membership name.
        * Obtain the membership name from the membership of Chat API.
        */
        name: 'spaces/SPACE/members/MEMBERSHIP',
        updateMask: 'role',
        requestBody: {
          role: 'ROLE_MEMBER'
        }
      });
    }
    
    /**
    * Use the service endpoint to call Chat API.
    */
    updateSpace().then(console.log);
    
  3. Dans le code, remplacez ce qui suit:

  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_membership_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.memberships au fichier appsscript.json du projet Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships"
    ]
    
  2. Ajoutez une fonction comme celle-ci au code du projet Apps Script:

    /**
     * Updates a membership from space manager to space member.
     * @param {string} memberName The resource name of the membership.
    */
    function updateMembershipToSpaceMember(memberName) {
      try {
        const body = {'role': 'ROLE_MEMBER'};
        Chat.Spaces.Members.patch(memberName, body);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create message with error %s', err.message);
      }
    }
    

L'API Google Chat remplace l'appartenance spécifiée par un gestionnaire d'espace et renvoie une instance de Membership détaillant la modification.