Cette page explique comment configurer un webhook pour envoyer des messages asynchrones dans un espace Chat à l'aide de déclencheurs externes. Par exemple, vous pouvez configurer une application de surveillance pour avertir le personnel d'astreinte dans Chat lorsqu'un serveur est hors service. Pour envoyer un message synchrone avec une application Chat, consultez Envoyer un message.
Avec ce type d'architecture, les utilisateurs ne peuvent pas interagir avec le webhook ni avec l'application externe connectée, car la communication est unidirectionnelle. Les webhooks ne sont pas conversationnels. Ils ne peuvent pas répondre aux messages des utilisateurs ni en recevoir, ni recevoir d'événements d'interaction avec l'application Chat. Pour répondre aux messages, créez une application Chat au lieu d'un webhook.
Bien qu'un webhook ne soit pas techniquement une application Chat (les webhooks connectent les applications à l'aide de requêtes HTTP standards), cette page y fait référence en tant qu'application Chat pour simplifier les explications. Chaque webhook ne fonctionne que dans l'espace Chat dans lequel il est enregistré. Les Webhooks entrants fonctionnent dans les messages privés, mais uniquement lorsque tous les utilisateurs ont activé les applications Chat. Vous ne pouvez pas publier de webhook sur Google Workspace Marketplace.
Le schéma suivant illustre l'architecture d'un webhook connecté à Chat :
Dans le schéma précédent, une application Chat présente le flux d'informations suivant :
- La logique de l'application Chat reçoit des informations provenant de services tiers externes, tels qu'un système de gestion de projet ou un outil de gestion des tickets.
- La logique de l'application Chat est hébergée dans un système cloud ou sur site qui peut envoyer des messages à un espace Chat spécifique à l'aide d'une URL de webhook.
- Les utilisateurs peuvent recevoir des messages de l'application Chat dans cet espace Chat spécifique, mais ne peuvent pas interagir avec l'application Chat.
Prérequis
Python
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat. Votre organisation Google Workspace doit autoriser les utilisateurs à ajouter et utiliser des webhooks entrants.
- Python 3.6 ou version ultérieure
- Outil de gestion de packages pip
Bibliothèque
httplib2
Pour installer la bibliothèque, exécutez la commande suivante dans votre interface de ligne de commande :pip install httplib2
Un espace Google Chat. Pour en créer un à l'aide de l'API Google Chat, consultez Créer un espace. Pour en créer un dans Chat, consultez la documentation du centre d'aide.
Node.js
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat. Votre organisation Google Workspace doit autoriser les utilisateurs à ajouter et utiliser des webhooks entrants.
- Node.js 14 ou version ultérieure
- Outil de gestion de packages npm
- Un espace Google Chat. Pour en créer un à l'aide de l'API Google Chat, consultez Créer un espace. Pour en créer un dans Chat, consultez la documentation du centre d'aide.
Java
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat. Votre organisation Google Workspace doit autoriser les utilisateurs à ajouter et utiliser des webhooks entrants.
- Java 11 ou version ultérieure
- L'outil de gestion de package Maven
- Un espace Google Chat. Pour en créer un à l'aide de l'API Google Chat, consultez Créer un espace. Pour en créer un dans Chat, consultez la documentation du centre d'aide.
Apps Script
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat. Votre organisation Google Workspace doit autoriser les utilisateurs à ajouter et utiliser des webhooks entrants.
- Créez un projet Apps Script autonome et activez le service Chat avancé.
- Un espace Google Chat. Pour en créer un à l'aide de l'API Google Chat, consultez Créer un espace. Pour en créer un dans Chat, consultez la documentation du centre d'aide.
Créer un webhook
Pour créer un webhook, enregistrez-le dans l'espace Chat où vous souhaitez recevoir des messages, puis écrivez un script qui envoie des messages.
Enregistrer le webhook entrant
- Dans un navigateur, ouvrez Chat. Les webhooks ne sont pas configurables depuis l'application mobile Chat.
- Accédez à l'espace dans lequel vous souhaitez ajouter un webhook.
- À côté du titre de l'espace, cliquez sur la flèche de développement , puis sur Applications et intégrations.
Cliquez sur
Ajouter des Webhooks.Dans le champ Nom, saisissez
Quickstart Webhook
.Dans le champ URL de l'avatar, saisissez
https://developers.google.com/chat/images/chat-product-icon.png
.Cliquez sur Enregistrer.
Pour copier l'URL du webhook, cliquez sur
Plus, puis sur Copier le lien.
Écrire le script du webhook
L'exemple de script de webhook envoie un message à l'espace dans lequel le webhook est enregistré en envoyant une requête POST
à l'URL du webhook. L'API Chat répond avec une instance de Message
.
Sélectionnez une langue pour découvrir comment créer un script de webhook :
Python
Dans votre répertoire de travail, créez un fichier nommé
quickstart.py
.Dans
quickstart.py
, collez le code suivant :Remplacez la valeur de la variable
url
par l'URL du webhook que vous avez copiée lors de l'enregistrement du webhook.
Node.js
Dans votre répertoire de travail, créez un fichier nommé
index.js
.Dans
index.js
, collez le code suivant :Remplacez la valeur de la variable
url
par l'URL du webhook que vous avez copiée lors de l'enregistrement du webhook.
Java
Dans votre répertoire de travail, créez un fichier nommé
pom.xml
.Dans
pom.xml
, copiez et collez le code suivant :Dans votre répertoire de travail, créez la structure de répertoire suivante :
src/main/java
.Dans le répertoire
src/main/java
, créez un fichier nomméApp.java
.Dans
App.java
, collez le code suivant :Remplacez la valeur de la variable
URL
par l'URL du webhook que vous avez copiée lors de l'enregistrement du webhook.
Apps Script
Dans un navigateur, accédez à Apps Script.
Cliquez sur Nouveau projet.
Collez le code suivant :
Remplacez la valeur de la variable
url
par l'URL du webhook que vous avez copiée lors de l'enregistrement du webhook.
Exécuter le script webhook
Dans une CLI, exécutez le script :
Python
python3 quickstart.py
Node.js
node index.js
Java
mvn compile exec:java -Dexec.mainClass=App
Apps Script
- Cliquez sur Exécuter.
Lorsque vous exécutez le code, le webhook envoie un message à l'espace dans lequel vous l'avez enregistré.
Démarrer un fil de discussion ou y répondre
Spécifiez
spaces.messages.thread.threadKey
dans le corps de la requête du message. Selon que vous démarrez ou répondez à un fil de discussion, utilisez les valeurs suivantes pourthreadKey
:Si vous démarrez un fil de discussion, définissez
threadKey
sur une chaîne arbitraire, mais notez cette valeur pour pouvoir répondre au fil de discussion.Si vous répondez à un fil de discussion, spécifiez le
threadKey
qui a été défini au début du fil. Par exemple, pour publier une réponse dans le fil de discussion où le message initial utilisaitMY-THREAD
, définissezMY-THREAD
.
Définissez le comportement du thread si le
threadKey
spécifié est introuvable :Répondez à un fil de discussion ou créez-en un. Ajoutez le paramètre
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
à l'URL du webhook. Si vous transmettez ce paramètre d'URL, Chat recherche un fil de discussion existant à l'aide duthreadKey
spécifié. Si un fil de discussion est trouvé, le message est publié en tant que réponse à ce fil. Si aucun n'est trouvé, le message lance un nouveau fil de discussion correspondant à cethreadKey
.Répondez à un fil de discussion ou ne faites rien. Ajoutez le paramètre
messageReplyOption=REPLY_MESSAGE_OR_FAIL
à l'URL du webhook. Si vous transmettez ce paramètre d'URL, Chat recherche un fil de discussion existant à l'aide duthreadKey
spécifié. Si un fil de discussion est trouvé, le message est publié en tant que réponse à ce fil. Si aucun n'est trouvé, le message n'est pas envoyé.
Pour en savoir plus, consultez
messageReplyOption
.
L'exemple de code suivant démarre un fil de discussion ou y répond :
Python
Node.js
Apps Script
Gérer les erreurs
Les requêtes de webhook peuvent échouer pour différentes raisons, y compris :
- Demande incorrecte.
- Le webhook ou l'espace hébergeant le webhook est supprimé.
- Problèmes intermittents tels que la connectivité réseau ou les limites de quota.
Lorsque vous créez votre webhook, vous devez gérer correctement les erreurs en procédant comme suit :
- Journalisation de l'échec.
- Pour les erreurs liées au temps, au quota ou à la connectivité réseau, relancez la requête avec un intervalle exponentiel entre les tentatives.
- Ne rien faire, ce qui est approprié si l'envoi du message de webhook n'est pas important.
L'API Google Chat renvoie les erreurs sous la forme d'un google.rpc.Status
, qui inclut une erreur HTTP code
indiquant le type d'erreur rencontré : une erreur client (série 400) ou une erreur serveur (série 500). Pour examiner tous les mappages HTTP, consultez google.rpc.Code
.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
Pour savoir comment interpréter les codes d'état HTTP et gérer les erreurs, consultez Erreurs.
Limites et points à noter
- Lorsque vous créez un message avec un webhook dans l'API Google Chat, la réponse ne contient pas le message complet.
La réponse ne renseigne que les champs
name
etthread.name
. - Les webhooks sont soumis au quota par espace pour
spaces.messages.create
: une requête par seconde, partagée entre tous les webhooks de l'espace. Chat peut également rejeter les requêtes de webhook qui dépassent une requête par seconde dans le même espace. Pour en savoir plus sur les quotas de l'API Chat, consultez Limites d'utilisation.
Articles associés
- Choisir une architecture d'application Chat
- Envoyer des messages de carte
- Mettre en forme des messages