Avec l'API Google Chat, vous pouvez créer, lire, mettre à jour ou supprimer un message dans Google Chat de manière asynchrone en appelant les méthodes correspondantes. Ce guide explique comment appeler les méthodes suivantes:
- Créez un message avec
spaces.messages.create
. - Lire un message avec
spaces.messages.get
- Mettez à jour un message avec
spaces.messages.update
. - Supprimer un message avec
spaces.messages.delete
Les applications de chat peuvent répondre aux événements Chat, comme les messages et leur ajout à un espace, sans appeler de manière asynchrone l'API Chat. Pour créer une application de chat qui répond de manière synchrone aux événements de chat, consultez Créer une application de chat. Une application de chat peut fonctionner avec l'API Chat de manière synchrone et asynchrone.
Pour créer un message de manière asynchrone dans un espace Chat sans application Chat, configurez un webhook.
Prérequis
Pour exécuter les exemples de ce guide, vous devez remplir les conditions préalables suivantes:
Python
- Python 3.6 ou version ultérieure
- L'outil de gestion de packages pip
Bibliothèques clientes Google pour Python. Pour les installer, exécutez la commande suivante dans l'interface de ligne de commande:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Une application de chat publiée et associée à un espace Chat:
- Pour créer et publier une application de chat, consultez Créer une application Google Chat avec Cloud Functions.
- Pour ajouter une application Chat à un espace Chat, consultez Ajouter des applications à des espaces ou à des conversations dans Google Chat.
Autorisation configurée pour l'application Chat:
- L'authentification des comptes de service est entièrement compatible. Pour configurer un compte de service, consultez S'authentifier et autoriser en tant que compte de service.
- programme Google Workspace Developer Preview, qui accorde un accès anticipé à certaines fonctionnalités. Pour configurer l'authentification des utilisateurs, consultez Authentifier et autoriser les utilisateurs (aperçu développeur). La méthode
spaces.messages.update
n'est pas encore compatible avec l'authentification des utilisateurs.
Developer Preview (Aperçu pour les développeurs) : l'authentification des utilisateurs est possible dans le cadre du
Créer un message
Pour créer un message de manière asynchrone dans Google Chat, appelez la méthode create
sur la ressource Message
. Vous pouvez créer un message sous forme de texte ou de fiche. Pour démarrer un fil de discussion ou y répondre, spécifiez un threadKey
ou un thread.name
.
Notez l'élément name
d'un message que vous créez afin de pouvoir le consulter ultérieurement si vous devez le lire, le mettre à jour ou le supprimer. Vous pouvez également envisager de nommer les messages.
Créer un SMS
Pour créer un message textuel, procédez comme suit:
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_create_text_message.py
. Ajoutez le code suivant dans
chat_create_text_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The message to create. body={'text': 'Hello, world!'} ).execute() print(result)
Dans le code, remplacez
SPACE
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list()
dans l'API Chat ou à partir de l'URL d'un espace.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_create_text_message.py
Créer un message de fiche
Voici comment créer un message card, comme celui présenté ci-dessous:

Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_create_card_message.py
. Ajoutez le code suivant dans
chat_create_card_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The message to create. body= { 'cardsV2': [{ 'cardId': 'createCardMessage', 'card': { 'header': { 'title': 'A Card Message!', 'subtitle': 'Created 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(result)
Dans le code, remplacez
SPACE
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list()
dans l'API Chat ou à partir de l'URL d'un espace.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_create_card_message.py
Démarrer un fil de discussion ou y répondre
Pour démarrer un fil de discussion, créez un message et laissez thread.name
vide. Google Chat l'insérera lors de la création du fil. Pour personnaliser le nom du fil de discussion, spécifiez thread.threadKey
comme nom du fil de discussion.
Pour répondre à un fil de discussion, spécifiez thread.threadKey
ou thread.name
comme nom du fil de discussion. Les autres messages contenant le même thread.threadKey
ou thread.name
sont publiés dans le même fil de discussion que les réponses.
Chaque thread.threadKey
est propre à l'application Chat ou au webhook qui la définit. Si deux applications ou webhooks différents définissent le même thread.threadKey
, les messages ne sont pas regroupés. Au lieu de cela, deux fils de discussion différents démarrent. Deux applications ou webhooks différents peuvent publier des réponses dans le même fil de discussion en spécifiant thread.name
.
Voici comment démarrer un fil de discussion ou y répondre avec le thread.threadKey
"nameOfThread":
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_create_message_thread.py
. Ajoutez le code suivant dans
chat_create_message_thread.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD replies to an existing thread # if one exists, otherwise it starts a new one. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # Whether to start a thread or reply to an existing one. # # Required when threading is enabled in a space unless starting a # thread. Ignored in other space types. Threading is enabled when # space.spaceThreadingState is THREADED_MESSAGES. messageReplyOption='REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD', # The message body. body={ # The message to create. 'text': 'Start or reply to another message in a thread!', # The thread to start or reply to. 'thread': { 'threadKey': 'nameOfThread' } } ).execute() print(result)
Dans le code, remplacez
SPACE
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list()
dans l'API Chat ou à partir de l'URL d'un espace.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_create_message_thread.py
Créer et nommer un message
Pour faciliter les opérations ultérieures sur un message créé, attribuez-lui un name
personnalisé. L'attribution d'un nom personnalisé permet à une application de chat de rappeler rapidement le message sans l'enregistrer name
à partir du corps de la réponse renvoyée lors de la création du message.
L'attribution d'un nom personnalisé permet à une application Chat de rappeler le message sans l'enregistrer name
dans le corps de la réponse renvoyée lors de la création du message.
L'attribution d'un nom personnalisé ne remplace pas le champ name
généré, à savoir le nom de ressource du message. Au lieu de cela, il définit le nom personnalisé comme champ clientAssignedMessageId
, qui peut ensuite être référencé lors du traitement d'opérations ultérieures, comme la mise à jour ou la suppression du message.
La spécification d'un nom personnalisé utilisé lors de la création d'un message renvoie une erreur, mais d'autres méthodes telles que update
et delete
fonctionnent comme prévu.
Exigences concernant les noms personnalisés:
- Commencez par
client-
. Par exemple,client-custom-name
est un nom personnalisé valide, mais pascustom-name
. - Ne contenir que des lettres minuscules, des chiffres et des traits d'union
- Ne doit pas dépasser 63 caractères.
Pour créer et nommer un message, procédez comme suit:
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_create_named_message.py
. Ajoutez le code suivant dans
chat_create_named_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message with a custom name. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # Custom name for the message used to facilitate later operations. messageId='client-custom-name', # The message to create. body={'text': 'Hello, world!'} ).execute() print(result)
Dans le code, remplacez
SPACE
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list()
dans l'API Chat ou à partir de l'URL d'un espace.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_create_named_message.py
Vous avez lu un message
Pour lire un message dans Google Chat de manière asynchrone, appelez la méthode get
sur la ressource Message
et transmettez le name
du message à lire.
Pour lire un message:
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_read_message.py
. Ajoutez le code suivant dans
chat_read_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Get a Chat message. result = chat.spaces().messages().get( # The message to read. # # 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' ).execute() # Print Chat API's response in your command line interface. print(result)
Dans le code, remplacez
SPACE
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list()
dans l'API Chat ou à partir de l'URL d'un espace.Dans le code, remplacez
MESSAGE
par un nom de 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 par le nom personnalisé attribué au message au moment de sa création.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_read_message.py
Modifier un message
Pour mettre à jour un message existant de manière asynchrone dans Google Chat, appelez la méthode update
sur la ressource Message
, puis transmettez le name
du message à mettre à jour, ainsi que les éléments updateMask
et body
spécifiant le message mis à jour.
Mettre à jour un SMS ou le faire précéder d'un SMS
Pour mettre à jour un message textuel, transmettez:
name
du message à mettre à jour.updateMask='text'
body
qui spécifie le message mis à jour.
Si le message mis à jour est une fiche, celle-ci est ajoutée avant le message de la carte (qui s'affiche toujours).
Voici comment remplacer un message texte par un message texte, ou ajouter un préfixe à un message fiche.
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_update_text_message.py
. Ajoutez le code suivant dans
chat_update_text_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Update a Chat message. result = chat.spaces().messages().update( # 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
SPACE
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list()
dans l'API Chat ou à partir de l'URL d'un espace.Dans le code, remplacez
MESSAGE
par un nom de 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 par le nom personnalisé attribué au message au moment de sa création.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_update_text_message.py
Mettre à jour un message de fiche ou ajouter un message de fiche à un SMS
Pour mettre à jour un message card, transmettez:
name
du message à mettre à jourupdateMask='cardsV2'
body
qui spécifie le message mis à jour.
Si le message mis à jour est un message textuel, une fiche est ajoutée au message texte (qui continue de s'afficher). Si le message mis à jour est lui-même une fiche, la fiche affichée est mise à jour.
Voici comment remplacer un message par un message card:
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_update_card_message.py
. Ajoutez le code suivant dans
chat_update_card_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Update a Chat message. result = chat.spaces().messages().update( # 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
SPACE
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list()
dans l'API Chat ou à partir de l'URL d'un espace.Dans le code, remplacez
MESSAGE
par un nom de 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 par le nom personnalisé attribué au message au moment de sa création.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_update_card_message.py
Supprimer un message
Pour supprimer de manière asynchrone un message existant dans Google Chat, appelez la méthode delete
sur la ressource Message
et transmettez le name
du message à supprimer.
Pour supprimer un message:
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_delete_message.py
. Ajoutez le code suivant dans
chat_delete_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Delete a Chat message. result = chat.spaces().messages().delete( # The message to delete. # # 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' ).execute() # Print Chat API's response in your command line interface. # When deleting a message, the response body is empty. print(result)
Dans le code, remplacez
SPACE
par un nom d'espace, que vous pouvez obtenir à l'aide de la méthodespaces.list()
dans l'API Chat ou à partir de l'URL d'un espace.Dans le code, remplacez
MESSAGE
par un nom de 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 par le nom personnalisé attribué au message au moment de sa création.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_delete_message.py
Limites et considérations
- Le corps de la réponse renvoyé lors de la création du message est le seul moyen d'obtenir l'
name
d'un message dans Google Chat. N'oubliez pas de noter le champname
d'un message que vous créez afin de pouvoir le consulter ultérieurement si vous devez le lire, le mettre à jour ou le supprimer. Vous pouvez également envisager de nommer les messages. - Lors de l'authentification en tant qu'application avec un compte de service, les applications Chat ne peuvent lire, mettre à jour et supprimer que leurs propres messages.
- authentification utilisateur, Google Chat peut afficher un message d'attribution indiquant aux utilisateurs le nom de l'application qui a effectué l'action au nom de l'utilisateur qui l'a autorisée. Aperçu pour les développeurs:lorsqu'une application effectue une action avec