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:
- La mise à jour d'un message est compatible avec les deux méthodes d'authentification suivantes :
- L'authentification de l'utilisateur, avec le niveau d'autorisation
chat.messages
, peut mettre à jour les messages créés par cet utilisateur. - L'authentification d'une application avec le niveau d'autorisation
chat.bot
peut mettre à jour les messages créés par cette application.
- L'authentification de l'utilisateur, avec le niveau d'autorisation
- La mise à jour d'un message sous forme de carte nécessite l'authentification de l'application avec le champ d'application d'autorisation
chat.bot
.
- La mise à jour d'un message est compatible avec les deux méthodes d'authentification suivantes :
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
- Dans votre répertoire de travail, créez un fichier nommé
chat_update_text_message_user.py
. 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 updated message. print(result) if __name__ == '__main__': main()
Dans le code, remplacez ce qui suit:
SPACE
: nom d'espace, que vous pouvez obtenir à partir de la méthodespaces.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.
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
- Dans votre répertoire de travail, créez un fichier nommé
chat_update_text_message_app.py
. 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)
Dans le code, remplacez ce qui suit:
SPACE
: nom d'espace, que vous pouvez obtenir à partir de la méthodespaces.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.
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
- Dans votre répertoire de travail, créez un fichier nommé
chat_update_card_message.py
. 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)
Dans le code, remplacez ce qui suit:
SPACE
: nom d'espace, que vous pouvez obtenir à partir de la méthodespaces.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.
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
- Dans votre répertoire de travail, créez un fichier nommé
chat_update_text_message_user.py
. 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 updated message. print(result) if __name__ == '__main__': main()
Dans le code, remplacez ce qui suit:
SPACE
: nom d'espace, que vous pouvez obtenir à partir de la méthodespaces.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.
Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_update_text_message_user.py
Articles associés
- Mettre en forme un message
- Supprimer un message
- Obtenir les détails d'un message
- Répertorier les messages d'un espace
- Envoyer un message.