- 27 Oct 2022
- 7 Minutes to read
- Contributors
- Print
- DarkLight
- PDF
Webhooks
- Updated on 27 Oct 2022
- 7 Minutes to read
- Contributors
- Print
- DarkLight
- PDF
1. Vue d'ensemble
Les webhooks permettent de notifier un système externe lorsqu’un utilisateur effectue des actions spécifiques dans Constellio.
Les notifications sont envoyées sous la forme de requête REST de type POST avec un body JSON qui contient les informations sur l’action qui a été effectuée ainsi qu’une liste de métadonnées des enregistrements en question. La liste des métadonnées à inclure dans la requête peut être configurée par l’utilisateur (Voir « Configurer un webhook »).
2. Pilotage
Une page de pilotage « Gérer les webhooks » permet de visualiser la liste des webhooks définis pour le système et d’effectuer différentes actions sur ceux-ci. Un utilisateur doit posséder la permission « Gérer les webhooks » pour accéder à cette page.
La page Liste des webhooks présente la liste des webhooks actifs et inactifs dans deux onglets. Un bouton « Ajouter » permet de configurer un nouveau webhook et de l’ajouter à cette liste.
Pour désactiver ou activer un webhook, il suffit de cliquer l’icône « Désactiver » ou « Activer » dans l’onglet correspondant.
Les actions suivantes sont disponibles pour chacun des éléments de la liste de webhooks :
- Consulter : Permets de consulter les métadonnées de base d’un webhook
- Modifier : Permets de modifier les informations d’un webhook existant
- Désactivé/activé : Permets d’activer ou de désactiver un webhook (dépendamment du statut actuel du webhook). Aucune notification ne sera envoyée pour les webhooks dont le statut est « Inactif ».
- Supprimer : Permets de supprimer un webhook. Cette action est irréversible.
:Les requêtes qui sont déjà dans la file d’attente des « requêtes webhooks à envoyer » ou de « requêtes webhooks à réessayer » lorsqu'un webhook est supprimé seront tout de même envoyées.
3. Configurer un webhook
La configuration d’un nouveau webhook peut être effectuée à partir de la page de pilotage « Gérer les webhooks » en cliquant sur le bouton « Ajouter » ou sélectionnant l’icône « Modifier » pour modifier un webhook existant.
À la création d’un nouveau webhook, celui-ci aura automatiquement le statut « Actif ».
Métadonnée | Obligatoire? | Description |
---|---|---|
Code | Oui | Le code du webhook (dois être unique) |
Titre | Oui | Le titre du webhook |
URL | Non* | L’URL du système externe vers lequel les requêtes du webhook doivent être envoyées. *Le système tentera toujours d’envoyer les notifications pour un webhook actif, même si l’URL saisie n’est pas valide |
Type d'évènement | Oui | Le type d’action sur les enregistrements qui doivent déclencher l’envoi d’une notification vers l’URL définie Valeurs possibles :
|
Type de schéma | Oui | Le type d’enregistrement pour lequel l’action doit être effectuée pour qu’une notification soit envoyée Les types de schéma présentement supportés sont les suivants:
|
Schéma spécifique | Non | Filtre pour schéma spécifique (Voir section « Filtres »). Lorsque la valeur "Tous les schémas" est sélectionnée (par défaut), le webhook sera appliqué à tous les éléments du type de schéma sélectionné, sans filtrer selon le schéma spécifique. |
Critères supplémentaires de déclenchement | Non | Filtre pour métadonnées (Voir section « Filtres ») |
Métadonnées à transmettre | Non | Les métadonnées de l’enregistrement sur lequel l’action a été effectuée qui doit être transmise dans la requête. La valeur des métadonnées sera convertie en chaine de caractère dans la requête envoyée. Valeurs possibles :Toutes les métadonnées du schéma par défaut du type de schéma sélectionné ou du schéma spécifique s’il y a lieu |
4. Filtres
En plus du type d’évènement et du type de schéma, il est possible de définir des conditions de déclenchement d’un webhook plus spécifiques en y ajoutant des filtres. Une requête sera envoyée lors de l’action sur un enregistrement uniquement si les valeurs des métadonnées de l’enregistrement correspondent à celles définies dans le filtre (après la modification).
Les conditions de déclenchement spécifiques sur les métadonnées fonctionnent de la même façon que les critères de recherche lors d’une recherche avancée. Il n’y a pas de limite sur le nombre de critères qui peuvent être ajoutés pour un webhook.
Exemples:
Webhook pour envoyer une notification lors de la création de documents de type « courriel » dont l’émetteur est le service de paie :
Webhook pour envoyer une notification lors de la modification de tâche dont le statut est « En cours », uniquement si elle a été créée par un utilisateur spécifique
5. Configurations système
Des configurations système doivent être définies pour utiliser les webhooks. Ces configurations s’appliquent à l’ensemble des webhooks dans toutes les collections de l’environnement.
Configuration | Valeur par défaut | Description |
Webhooks activés | Oui | Permet d’activer ou de désactiver l’envoi des requêtes de tous les webhooks |
Délai d'envoi des webhooks | 300 | L’intervalle en secondes auquel les requêtes des webhooks doivent être envoyés |
Nombre maximal de tentatives pour l'envoi d’une notification webhook* | 3 | Nombre de tentatives d’envoi pour une requête webhook à partir de laquelle les requêtes sont déplacés vers la file de relance (file lente) |
Délai d'envoi pour la file de relance | 3600 | L’intervalle en secondes auquel l’envoi des requêtes qui ont échoué doit être réessayé |
Nombre maximal de tentatives pour l'envoi d’une notification webhook* | -1 | Nombre maximal de tentatives pour l’envoi d’une requête. * -1 pour ne pas définir de limite |
6. Fonctionnement
6.1 Appel de Webhook
Une fois le webhook défini, un processus en arrière-plan analysera toutes les actions effectuées par les utilisateurs du système. Lorsqu’un utilisateur effectue une action qui correspond aux critères définis dans un des Webhooks (par exemple, « Modifier un document dont le titre contient le mot « formulaire »), Constellio ajoutera le webhook à une liste « Requêtes de webhooks à envoyer »
Toutes les requêtes contenues dans cette liste seront envoyées à un intervalle régulier. Cet intervalle peut être défini dans la configuration système « Délai d’envoi des webhooks ».
Lorsque plusieurs actions ont été effectuées pour le même webhook (par exemple, si plusieurs documents qui contiennent le mot « formulaire » ont été modifiés au courant de l’intervalle), les informations de tous les enregistrements concernés seront envoyées dans la même requête.
6.2 Contenu des requêtes
Les requêtes envoyées contiennent les informations de base du webhook, ainsi que les métadonnées à envoyer définies lors de la configuration du webhook pour tous les enregistrements concernés par l’action.
Paramètre | Description |
webhookId | L’identifiant Constellio du webhook |
webhookCode | Le code du webhook |
data | Les métadonnées des enregistrements sur lesquels l’action a été effectuée |
secretToken | Le jeton secret défini dans les configurations système |
webhookName | Le titre du webhook |
eventType | Le type de l’action ayant déclenché le webhook: Valeurs possibles :
|
user | L’utilisateur ayant effectué l’action |
6.3 Exemple de contenu d’une requête envoyée par un webhook
{
"webhookId":"00000000417",
"webhookCode":"modifyDocsWebhook_code",
"data":{
"records":[
{
"id":" 00000000512",
"collection":"zeCollection",
"document_default_title":"Abeille - Document analogique”
"document_default_modifiedOn":"2022-05-30T14:18:06.138"
}
]
},
"secretToken":"mySecretToken",
"webhookName":"Modification de document (titre : « Formulaire ») ",
"eventType":"MODIFICATION",
"user":"admin"
7. Mécanique de reprise
Dans le cas où la requête envoyée par le webhook n’a pas été reçue ou acceptée par le serveur distant, une mécanique permet de retenter l’envoi de la requête.
Initialement, une requête qui a échoué est conservée dans la liste de requêtes à envoyer et une nouvelle tentative sera effectuée au prochain intervalle.
Après un certain nombre de tentatives ratées1, la requête est transférée vers une liste « requêtes de webhooks à relancer ». Le fonctionnement de cette liste est semblable à la liste d’envoi, mais il est possible d’y définir un intervalle différent2. Typiquement, l’intervalle défini pour la liste de relance devrait être plus long que celui de la liste d’envoi.
Afin d’éviter que des requêtes tournent en boucle dans la liste de relance, il est également possible de définir un nombre maximal de tentatives pour les relances3 (On peut également y saisir la valeur -1 pour ne pas définir de nombre maximal). Une fois que le nombre maximal est atteint, la requête est retirée de la liste.
8. Diagramme du fonctionnement de la mécanique d'envoi et de reprise
9. Configurations
Vous retrouverez dans cette section toutes les configurations du système impactant les webhooks. Pour en savoir plus sur les configurations, consulter l'article «Configurations du système».
Configurations | Description | Valeurs possibles | Impacts |
Délai d'envoi des webhooks (secondes) (redémarrage requis) | L'intervalle en secondes auquel les requêtes des webhooks doivent être envoyées. L'intervalle en secondes auquel les requêtes des webhooks doivent être envoyées. | Nombre entier (Valeur par défaut 300) | À chaque x secondes, les notifications pour toutes les actions pour lesquelles un webhook a été défini qui ont été effectuées depuis le dernier envoi seront envoyées. |
Webhooks activités | Permet d'activer ou de désactiver l'envoi des requêtes de tous les webhooks. | Activé | Les notifications de webhooks seront envoyées. |
Désactivé | Aucune notification de webhook ne sera envoyée. | ||
Nombre maximal de tentatives pour la relance d'une notification d'un webhook | Nombre maximal de tentatives pour l'envoi d'une requête (Saisir la valeur -1 pour ne pas définir de limite) | Nombre entier (Valeur par défaut 3) | Lorsque le nombre de relances d'une notification de webhook excède cette valeur, cette notification sera retirée de la liste de relances et ne sera pas envoyée. |
Nombre de tentatives pour l'ajout vers la file de relance | Nombre de tentatives d'envoi pour une requête webhook à partir de laquelle les requêtes sont déplacées vers la file de relance (file lente) | Nombre entier (Valeur par défaut -1) | À chaque x secondes, l'envoi des notifications de webhook de la file de relance seront réessayées. Si l'envoi réussit, la notification sera ensuite retirée de la file de relance. Sinon, elle sera conservée dans la liste de relance et réessauée au prochain intervalle. |
Jeton secret (Webhooks) | Permet de définir un jeton secret à inclure dans les requêtes des webhooks afin de valider la provenance de celles-ci. | Chaine de caractères | Ajoute un champ «secretToken» avec la valeur définie à toutes les notifications de webhook. |