Modifier un message

Ce guide explique comment utiliser la méthode patch sur la ressource Message de l'API Google Chat pour mettre à jour un message texte ou une fiche dans un espace. Mettez à jour un message pour modifier ses attributs, tels que son contenu ou le contenu d'une carte. Vous pouvez également ajouter une carte au début ou à la fin d'un message.

L'API Chat est également compatible avec la méthode update, mais nous vous recommandons vivement d'appeler la méthode patch, car elle utilise une requête HTTP PATCH tandis que update utilise une requête HTTP PUT. Pour en savoir plus, consultez les sections PATCH et PUT de l'AIP-134.

La ressource Message représente un message texte ou fiche dans Google Chat. Vous pouvez create, get, update ou delete un message dans l'API Google Chat en appelant les méthodes correspondantes. Pour en savoir plus sur les messages texte et les messages sous forme de fiches, consultez Présentation des messages 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 google-auth
    
  • 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:

Avec authentification des utilisateurs, mettez à jour un SMS ou ajoutez une carte au début d'un SMS

Pour mettre à jour un message avec l'authentification utilisateur, transmettez les éléments suivants dans votre requête:

  • Le champ d'application de l'autorisation chat.messages.
  • Le name du message à mettre à jour.
  • updateMask='text'
  • Un élément body qui spécifie le message mis à jour.

Si le message mis à jour est un message sous forme de carte, il est ajouté au début du message (qui continue de s'afficher).

Pour mettre à jour un message texte ou le préfixer d'un message texte en carte avec authentification de l'utilisateur:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_update_text_message_user.py.
  2. Incluez le code suivant dans chat_update_text_message_user.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.messages"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then updates a message.
        '''
    
        # 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)
    
        # Update a Chat message.
        result = chat.spaces().messages().patch(
    
          # The message to update, and the updated message.
          #
          # Replace SPACE with a space name.
          # Obtain the space name from the spaces resource of Chat API,
          # or from a space's URL.
          #
          # Replace MESSAGE with a message name.
          # Obtain the message name from the response body returned
          # after creating a message asynchronously with Chat REST API.
          name='spaces/SPACE/messages/MESSAGE',
          updateMask='text',
          body={'text': 'Updated message!'}
    
        ).execute()
    
        # Prints details about the created membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Dans le code, remplacez ce qui suit:

    • SPACE: nom d'espace, que vous pouvez obtenir à partir de la méthode spaces.list de l'API Chat ou de l'URL d'un espace.
    • MESSAGE: nom du message, que vous pouvez obtenir dans le corps de la réponse renvoyé après avoir créé un message de manière asynchrone avec l'API Chat, ou avec le nom personnalisé attribué au message lors de sa création.
  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_update_text_message_user.py
    

Authentification de l'application : modifiez un SMS ou ajoutez un message à votre carte

Pour mettre à jour un message avec l'authentification d'application, transmettez les éléments suivants dans votre requête:

  • Le champ d'application de l'autorisation chat.bot.
  • Le name du message à mettre à jour.
  • updateMask='text'
  • Un élément body qui spécifie le message mis à jour.

Si le message mis à jour est un message sous forme de carte, il est ajouté en préfixe au message (qui continue de s'afficher).

Voici comment convertir un message en SMS, ou comment faire précéder un message d'un message sous forme de carte avec l'authentification d'application:

Python

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

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Update a Chat message.
    result = chat.spaces().messages().patch(
    
      # The message to update, and the updated message.
      #
      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      #
      # Replace MESSAGE with a message name.
      # Obtain the message name from the response body returned
      # after creating a message asynchronously with Chat REST API.
      name='spaces/SPACE/messages/MESSAGE',
      updateMask='text',
      body={'text': 'Updated message!'}
    
    ).execute()
    
    # Print Chat API's response in your command line interface.
    print(result)
    
  3. Dans le code, remplacez ce qui suit:

    • SPACE: nom d'espace, que vous pouvez obtenir à partir de la méthode spaces.list de l'API Chat ou de l'URL d'un espace.
    • MESSAGE: nom du message, que vous pouvez obtenir dans le corps de la réponse renvoyé après avoir créé un message de manière asynchrone avec l'API Chat, ou avec le nom personnalisé attribué au message lors de sa création.
  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_update_text_message_app.py
    

Mettez à jour un message sous forme de fiche ou ajoutez-en un à un SMS

Pour mettre à jour un message sous forme de fiche, transmettez les éléments suivants dans votre requête:

  • Le champ d'application de l'autorisation chat.bot. La mise à jour d'un message de carte nécessite l'authentification de l'application.
  • Le name du message à mettre à jour.
  • updateMask='cardsV2'
  • Un élément body qui spécifie le message mis à jour.

Si le message mis à jour est un message, une fiche est ajoutée au message (qui continue de s'afficher). Si le message mis à jour est lui-même une carte, la carte affichée est mise à jour.

Pour convertir un message en message sous forme de fiche, procédez comme suit:

Python

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

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Update a Chat message.
    result = chat.spaces().messages().patch(
    
      # The message to update, and the updated message.
      #
      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      #
      # Replace MESSAGE with a message name.
      # Obtain the message name from the response body returned
      # after creating a message asynchronously with Chat REST API.
      name='spaces/SPACE/messages/MESSAGE',
      updateMask='cardsV2',
      body=
      {
        'cardsV2': [{
          'cardId': 'updateCardMessage',
          'card': {
            'header': {
              'title': 'An Updated Card Message!',
              'subtitle': 'Updated with Chat REST API',
              'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
              'imageType': 'CIRCLE'
            },
            'sections': [
              {
                'widgets': [
                  {
                    'buttonList': {
                      'buttons': [
                        {
                          'text': 'Read the docs!',
                          'onClick': {
                            'openLink': {
                              'url': 'https://developers.google.com/chat'
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }]
      }
    
    ).execute()
    
    # Print Chat API's response in your command line interface.
    print(result)
    
  3. Dans le code, remplacez ce qui suit:

    • SPACE: nom d'espace, que vous pouvez obtenir à partir de la méthode spaces.list de l'API Chat ou de l'URL d'un espace.

    • MESSAGE: nom du message, que vous pouvez obtenir dans le corps de la réponse renvoyé après avoir créé un message de manière asynchrone avec l'API Chat, ou avec le nom personnalisé attribué au message lors de sa création.

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

    python3 chat_update_card_message.py
    

L'API Chat renvoie une instance de Message qui détaille le message mis à jour.

Mettre à jour un message avec plusieurs chemins d'accès de champs simultanément

Lorsqu'un message est mis à jour, vous pouvez mettre à jour plusieurs chemins d'accès de champs de message à la fois. Par exemple, dans une requête de message de mise à jour, vous pouvez spécifier une modification simultanée des chemins d'accès des champs text et cardsv2, ce qui met à jour à la fois le texte et la carte du message. Si le message ne contient que du texte, mais pas de fiche, une fiche y est ajoutée. Pour en savoir plus sur les chemins d'accès de champs acceptés, consultez la section Paramètres updateMask.

Pour mettre à jour les paramètres text et card d'un message avec l'authentification de l'utilisateur, transmettez les éléments suivants dans votre requête:

  • Le champ d'application de l'autorisation chat.messages.
  • Le name du message à mettre à jour.
  • updateMask qui spécifie les chemins d'accès des champs de message à mettre à jour, séparés par une virgule: updateMask='text', 'cardsV2'.

  • Une valeur body qui spécifie le message mis à jour, y compris tous les chemins d'accès des champs mis à jour.

Voici comment mettre à jour les chemins d'accès des champs text et cardsV2 dans un message avec l'authentification des utilisateurs:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_update_text_message_user.py.
  2. Incluez le code suivant dans chat_update_text_message_user.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.messages"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then updates a message.
        '''
    
        # 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)
    
        # Update a Chat message.
        result = chat.spaces().messages().patch(
    
          # The message to update, and the updated message.
          #
          # Replace SPACE with a space name.
          # Obtain the space name from the spaces resource of Chat API,
          # or from a space's URL.
          #
          # Replace MESSAGE with a message name.
          # Obtain the message name from the response body returned
          # after creating a message asynchronously with Chat REST API.
          name='spaces/SPACE/messages/MESSAGE',
          updateMask='text,cardsV2',
          body=
          {'text': 'Updated message!',
                'cardsV2': [{
                  'cardId': 'updateCardMessage',
                  'card': {
                    'header': {
                      'title': 'An Updated Card Message!',
                      'subtitle': 'Updated with Chat REST API',
                      'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
                      'imageType': 'CIRCLE'
                    },
                    'sections': [
                      {
                        'widgets': [
                          {
                            'buttonList': {
                              'buttons': [
                                {
                                  'text': 'Read the docs!',
                                  'onClick': {
                                    'openLink': {
                                      'url': 'https://developers.google.com/chat'
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  }
                }]
          }
    
        ).execute()
    
        # Prints details about the created membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Dans le code, remplacez ce qui suit:

    • SPACE: nom d'espace, que vous pouvez obtenir à partir de la méthode spaces.list de l'API Chat ou de l'URL d'un espace.
    • MESSAGE: nom du message, que vous pouvez obtenir dans le corps de la réponse renvoyé après avoir créé un message de manière asynchrone avec l'API Chat, ou avec le nom personnalisé attribué au message lors de sa création.
  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_update_text_message_user.py