Intégrer airfocus avec Webhooks

Écrit par :  Morgan T
Dernière mise à jour :  

Obtenez des mises à jour automatiques et en temps réel de la part d'airfocus en connectant vos applications préférées à l'aide de nos Webhooks.

Avantages de l'utilisation des webhooks

Les webhooks permettent à airfocus et à d'autres applications de travailler ensemble facilement et en temps réel. Cela signifie que les mises à jour et les notifications se font rapidement, sans qu'il soit nécessaire d'utiliser des applications supplémentaires ou des codes compliqués.

Configuration initiale d'un nouveau webhook

Créez un nouvel espace de travail dans airfocus, ou sélectionnez celui dans lequel vous souhaitez créer un nouveau webhook.

Exigences :

  • Permissions "complètes" sur l'espace de travail dans lequel vous souhaitez configurer le webhook.
  • Abonnement payant au plan professionnel ou au plan d'entreprise.
  • Connaissances techniques pour une configuration correcte.

Vous pouvez ajouter plusieurs webhooks à un espace de travail donné (par exemple, à différents canaux Slack pour différentes audiences de parties prenantes).

Pour ce faire, il vous suffit de vous rendre dans la section Extensions de votre espace de travail, de cliquer sur "Add integrations" et "Connect" sous Webhook.

intégrer-avec-webhooks-1.png

intégrer-avec-webhooks-2.png

Ensuite, donnez un nom à votre webhook (facultatif) et sélectionnez les événements pour lesquels les demandes doivent être déclenchées.

intégrer-avec-webhooks-3.png

Dans les options de la demande, choisissez le format de l'espace réservé et la méthode et collez l'URL de votre webhook dans le champ URL. Vous pouvez également ajouter des en-têtes à vos demandes si nécessaire.

intégrer-avec-webhooks-4.png

En option, vous pouvez également configurer le corps de votre requête dans le format choisi ci-dessus.

{
"blocs": [
{
"type": "divider"
},
{
"type": "section",
"texte": {
"type": "mrkdwn",
"texte": "{{title|esc}}"
},
"accessoire": {
"type": "bouton",
"texte": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"valeur": "click_me_123",
"url": "{{url}}",
"action_id": "button-action
}
},
{
"type": "section",
"texte": {
"type": "mrkdwn",
"texte": "{{details|esc}}"
}
}
]
}

Pour une documentation détaillée des options de personnalisation de vos webhooks, veuillez lire la section suivante.

Cas d'utilisation - recevoir des notifications Slack pour les mises à jour d'airfocus

Pour ce cas d'utilisation, notre objectif est de configurer un webhook qui enverra un message Slack à un canal de notre choix à chaque fois qu'un élément de l'espace de travail pour lequel nous configurons le webhook sera mis à jour.

Pour ce faire, nous devons configurer une application Slack pour générer une URL webhook, puis configurer le reste de l'intégration dans airfocus.

Comment créer une URL webhook vers votre canal Slack :

  1. Créez une nouvelle application Slack dans l'espace de travail Slack où vous souhaitez recevoir les notifications airfocus.
    intégrer-avec-webhooks-5.png
    intégrer-avec-webhooks-6.png
  2. Dans la page Fonctionnalités, activez l'option Activer les webhooks entrants.
    intégrer-avec-webhooks-7.png
  3. Cliquez sur Ajouter un nouveau Webhook à l'espace de travail.
    intégrer-avec-webhooks-8.png
  4. Choisissez un canal sur lequel l'application sera publiée, puis cliquez sur Autoriser.
    intégrer-avec-webhooks-9.png
  5. Copiez l'URL du webhook et ouvrez l'espace de travail airfocus pour lequel vous souhaitez configurer les mises à jour.
    intégrer-avec-webhooks-9.1.png

Comment configurer votre webhook dans airfocus pour envoyer des notifications de mise à jour d'événements à Slack :

  1. Dans le popover des extensions, cliquez sur "Ajouter des intégrations".
    intégrer-avec-webhooks-10.png
  2. Dans l'aperçu des intégrations, cliquez sur "Connecter" sous l'intégration "Webhooks".
    intégrer-avec-webhooks-11.png
  3. Donnez un nom à votre webhook (facultatif) et sélectionnez les événements pour lesquels les demandes doivent être déclenchées. → "Statut mis à jour" pour ce cas d'utilisation.
    intégrer-avec-webhooks-12.png
  4. Dans les options de demande, sélectionnez "Slack markdown" comme format d'espace réservé et "POST" comme méthode. Collez maintenant l'URL du webhook que vous avez copié depuis Slack dans le champ URL.
    intégrer-avec-webhooks-13.png
  5. Pour recevoir des messages Slack correctement formatés, collez le modèle suivant dans le champ "corps" et appuyez sur "actualiser".
    •  

      {
      "blocs": [
      {
      "type": "divider"
      },
      {
      "type": "section",
      "texte": {
      "type": "mrkdwn",
      "texte": "{{title|esc}}"
      },
      "accessoire": {
      "type": "bouton",
      "texte": {
      "type": "plain_text",
      "text": "Open in airfocus",
      "emoji": true
      },
      "valeur": "click_me_123",
      "url": "{{url}}",
      "action_id": "button-action
      }
      },
      {
      "type": "section",
      "texte": {
      "type": "mrkdwn",
      "texte": "{{details|esc}}"
      }
      }
      ]
      }

       

  6. Vous recevrez désormais un message Slack sur le canal que vous avez choisi lorsque le statut d'un élément de l'espace de travail est modifié.
    intégrer-avec-webhooks-14.png

Recevez les mises à jour d'airfocus dans Microsoft Teams

Remarque : la fonction de connecteur webhook de Microsoft Teams sera supprimée à la fin du mois d'avril 2026. Le guide ci-dessous présente les étapes à suivre pour utiliser la fonction Flux de travail comme alternative.

La fonctionnalité Microsoft Teams Workflows vous permet de configurer un webhook qui envoie un message Teams à un canal désigné lorsque des éléments d'un espace de travail airfocus particulier sont mis à jour. Pour ce faire, vous devrez générer une URL webhook sur Microsoft Teams, puis configurer le reste de l'intégration dans airfocus.

Créer une URL webhook dans Microsoft Teams

Pour générer une URL de webhook dans Microsoft Teams, procédez comme suit :

  1. Connectez-vous à Microsoft Teams.
  2. Cliquez sur le menu à trois points situé dans la barre de navigation à l'extrême gauche.
  3. Sélectionnez les flux de travail.
  4. Dans la barre de recherche, tapez « webhook ».
  5. Sélectionnez « Publier sur une chaîne » lorsqu'une requête Webhook est reçue.
  6. Saisissez un nom pour votre flux de travail (par exemple, « "Airfocus updates" »).
  7. Cliquez sur Suivant.
  8. Dans la section « Détails », sélectionnez l'équipe et le canal dans lesquels vous souhaitez que les mises à jour s'affichent.
  9. Cliquez sur « Ajouter un flux de travail ».
  10. Sur l'écran de confirmation, copiez l'URL POST.
    • Voici l'URL du webhook que vous devrez coller dans AirFocus.
  11. Cliquez sur « Terminé » pour terminer la configuration.

Configurez votre webhook dans airfocus

Pour configurer votre webhook dans airfocus, suivez les étapes suivantes :

  1. Ouvrez l'espace de travail airfocus pour lequel vous souhaitez envoyer des mises à jour à Microsoft Teams.
  2. Cliquez sur Extensions dans le coin supérieur droit de l'espace de travail.
  3. Sélectionnez Ajouter des intégrations.
  4. Sous "Webhooks", cliquez sur Connecter.
  5. Saisissez un nom pour le webhook.
  6. Sous "Événements", sélectionnez le type de mises à jour que vous souhaitez envoyer à Microsoft Teams.
  7. Sous "Format de l'espace réservé", sélectionnez Markdown.
  8. Sous "Méthode", sélectionnez POST puis collez l'URL que vous avez généré dans Microsoft Teams sous "URL".
  9. Sélectionnez + Ajouter un en-tête.
  10. Sous "Header name", tapez "Content-Type".
  11. Sous "Header value", tapez "application/json".
    exemple-webhookd-formulaire-rempli-en-airfocus.png
  12. Pour recevoir des messages Microsoft Teams correctement formatés, collez le modèle suivant dans le champ du corps du message.
    • {
       " type": "AdaptiveCard",
       " $schema": "http://adaptivecards.io/schemas/adaptive-card.json",
       " version": "1.4",
        "body": [
       {
       " type": "TextBlock",
       " texte": "{{title}}",
       " size": "Moyen",
       " poids": "Plus gras",
       " wrap": true
       },
       {
       " type": "TextBlock",
       " text": "{{details}}",
       " wrap": true }
       ],
       " actions": [
       {
       " type": "Action.OpenUrl",
       " title": "Ouvrir dans l'airfocus",
       " url": "{{url}}"
          }
       ]
      }
  13. Cliquez sur Mise à jour en bas à droite de la page.

Vous recevrez maintenant des mises à jour sur le canal Microsoft Teams que vous avez configuré dans la première section.
 

Configuration des requêtes HTTP - documentation technique

Méthode

Il est défini par défaut sur POST, mais peut également être modifié sur GET ou PUT. Les autres méthodes ne sont pas prises en charge.

URL

  • ne doit pas être vide
  • ne peut commencer que par https:// (les autres schémas ou les schémas vides ne sont pas pris en charge)
  • doit avoir un nom de domaine public avec un domaine de premier niveau bien connu (les IP ne sont pas prises en charge)

En-têtes

  • L'autorisation est prise en charge
  • Content-Type est pris en charge
  • les en-têtes personnalisés commençant par x- sont pris en charge
  • tout autre en-tête n'est pas pris en charge

Corps

Définit le corps de la requête du webhook.

Il peut contenir n'importe quel texte d'une longueur maximale de 2000 caractères.

Afin de remplir le corps de la requête avec des données d'événement significatives, nous fournissons un certain nombre d'espaces réservés que notre serveur remplace par des données d'événement avant d'envoyer la requête.

Format de l'espace réservé

Spécifie comment les espaces réservés de type RichText doivent être pré-rendus par notre serveur. Par exemple {{title}} placeholder peut contenir une chaîne comme "John updated field Labels on item Fix the button" qui contient un certain formatage de texte riche comme le gras, l'italique, etc, et donc le format placeholder spécifie dans quelle syntaxe spécifique ce formatage doit être transformé. Formats disponibles :

Nom Description Exemple
démarque markdown par défaut John a mis à jour le champ Étiquettes sur l'article Fixer le bouton
HTML <b>John</b> champ mis à jour <i>Étiquettes</i> sur l'article <b>Fixer le bouton</b>
Texte formatage supprimé John a mis à jour le champ Étiquettes sur l'article Fixer le bouton
Slack spécial Slack mrkdwn *John* a mis à jour le champ *Etiquettes* sur l'article *Réparez le bouton*

Placeholders

Photo Type Description Exemple
{{type}} String type d'événement élément mis à jour
{{title}} Chaîne (RichText) décrit l'action de l'événement John a mis à jour le champ Étiquettes sur l'article Fixer le bouton
{{details}} Chaîne (RichText) des détails supplémentaires sur l'événement (par exemple ce qui a été modifié) Ancienne valeur ⇒ Nouvelle valeur
{{url}} String URL d'appel à l'action pour chaque événement spécifique (par exemple, un lien vers un espace de travail ou un élément) https:// myteam.airfocus.com/w/workspaceId?item=itemId
*Remplacez airfocus.com par airfocus.app si vous êtes situé aux Etats-Unis ou dans la région APAC et que votre compte a été créé après septembre 2025.
{{event}} JSON données JSON complètes sur l'événement en cours Voir le modèle de charge utile d'événement ci-dessous
{{title|esc}} Chaîne (RichText) comme {{title}} mais tous les guillemets doubles sont échappés transforme la chaîne avec "double" quotes en chaîne avec \"double" quotes
{{details|esc}} Chaîne (RichText) comme {{details}} mais tous les guillemets doubles sont échappés transforme la chaîne avec "double" quotes en chaîne avec \"double" quotes

Modèles de données

Modèle de charge utile d'événement

Un objet de premier niveau, produit pour chaque événement. Il contient des données sur l'événement ainsi que des données de base intégrées sur toutes les entités liées à cet événement.

Champ Type Obligatoire Description
Événement Événement oui données de base sur l'événement
Intégrer EventEmbed oui des données supplémentaires sur l'événement - principalement des noms d'éléments/espaces de travail/champs/etc qui sont liés à cet événement
matchedFilter Filtre d'événements oui l'un des filtres d'événements sélectionnés dans les paramètres d'intégration, qui correspond à l'événement en cours

Modèle d'événement

Données de base sur l'événement

Champ Type Obligatoire Description
id UUID oui ID unique de l'événement
Initiateur Initiateur d'événement oui des informations sur la personne à l'origine de l'événement
Données Données d'événement oui les données réelles de l'événement. Il est différent pour chaque type d'événement spécifique
Créé le Horodatage oui lorsque l'événement s'est produit

Modèle EventInitiator

Informations sur la personne à l'origine de cet événement. Dans la plupart des cas, l'identifiant de l'utilisateur sera défini. Il est également possible qu'un userId et un integrationId soient définis - par exemple, si un utilisateur a appuyé sur le bouton "synchroniser l'intégration", ce qui a produit l'événement.

Champ Type Obligatoire Description
IDutilisateur UUID Non défini si cet événement a été initié par un utilisateur
appId UUID Non défini si cet événement a été initié par une application
integrationId UUID Non défini si cet événement a été initié par une intégration
eventId UUID Non défini si cet événement a été déclenché par un autre événement
requestId UUID Non défini si cet événement a été initié dans le cadre d'une requête HTTP

Modèle EventEmbed

Données supplémentaires sur l'événement - principalement des noms d'éléments/espaces de travail/champs/etc qui sont liés à cet événement.

Champ Type Obligatoire Description
Équipes {UUID: TeamInfo} Non une carte de hachage des ID d'équipe vers les données d'équipe
utilisateurs {UUID: UserInfo} Non une carte de hachage des identifiants d'utilisateurs vers les données d'utilisateurs
applications {UUID: AppInfo} Non une carte de hachage des identifiants d'application pour les données d'application
Espaces de travail {UUID: WorkspaceInfo} Non une carte de hachage des identifiants de l'espace de travail vers les données de l'espace de travail
Intégrations {UUID: IntegrationInfo} Non une carte de hachage des ID d'intégration vers les données d'intégration
champs {UUID: FieldInfo} Non une carte de hachage des identifiants des champs aux données des champs
statuts {UUID: StatusInfo} Non une carte de hachage des ID d'état vers les données d'état
éléments {UUID: ItemInfo} Non une carte de hachage des ID d'éléments vers les données d'éléments

Modèle TeamInfo

Champ Type Obligatoire Description
nom String oui Nom de l'équipe
slug String oui URL de l'équipe
baseUrl String oui exemple : https://myteam.airfocus.com 
*Remplacez airfocus.com par airfocus.app si vous êtes situé aux Etats-Unis ou dans la région APAC et que votre compte a été créé après septembre 2025.

Modèle UserInfo

Champ Type Obligatoire Description
teamId UUID oui ID de l'équipe à laquelle appartient cet utilisateur
Nom complet String oui nom complet de l'utilisateur

Modèle AppInfo

Champ Type Obligatoire Description
teamId UUID oui ID de l'équipe à laquelle appartient cette application
typeId String oui dont : formulaires, insights, miroir, portail, priorisation

Modèle WorkspaceInfo

Champ Type Obligatoire Description
teamId UUID oui ID de l'équipe à laquelle appartient cet espace de travail
nom String oui nom de l'espace de travail

Modèle IntegrationInfo

Champ Type Obligatoire Description
workspaceId UUID oui ID de l'espace de travail auquel appartient cette intégration
typeId String oui un de : asana, azure-devops, clubhouse, github, intercom, jira, planner, trello

Modèle StatusInfo

Champ Type Obligatoire Description
workspaceId UUID oui ID de l'espace de travail auquel ce statut appartient
nom String oui nom du statut
catégorie String oui l'un des éléments suivants : brouillon, actif, fermé

Modèle ItemInfo

Champ Type Obligatoire Description
workspaceId UUID oui ID de l'espace de travail auquel cet élément appartient
statusId UUID oui ID de l'état de l'élément
nom String oui nom de l'article

Modèle de données d'événements

EventData est un type d'union - il peut être l'un ou l'autre des types spécifiés :

Élément créé

Champ Type Obligatoire Description
ID de l'article UUID oui identifiant de l'élément créé

Article mis à jour

Champ Type Obligatoire Description
ID de l'article UUID oui identifiant de l'élément mis à jour
Statut {prev: UUID, next: UUID} Non l'ancien et le nouveau numéro d'identification de l'état (s'il a été modifié)
couleur {prev: String, next: String} Non l'ancien et le nouveau numéro d'identification de la couleur de l'article (s'il a été modifié)
identifiants de l'assigné {prev: UUID[], next: UUID[]} Non l'ancienne et la nouvelle liste des ID d'utilisateurs attribués (en cas de modification)
nom {prev: String, next: String} Non l'ancien et le nouveau nom de l'article (s'il a été modifié)
Description {prev: RichText, next: RichText} Non l'ancienne et la nouvelle description de l'article (si elle a été modifiée)
Description { UUID : { prev: JSON, next: JSON } } Non une carte de hachage des identifiants de champs vers leurs valeurs modifiées chaque valeur est un JSON qui dépend du type de champ
archivées {prev: Boolean, next: Boolean} Non l'ancien et le nouveau archivés (s'ils ont été modifiés)

Donnez votre avis sur cet article

Vous avez des commentaires sur cet article ? Racontez-nous votre expérience ici.

Vous avez trouvé ce que vous cherchiez ?

Vous avez encore une question ou vous voulez partager ce que vous avez appris ? Visitez notre Communauté   pour obtenir de l’aide et collaborer avec les autres.