Déclencher une tâche Zapier avec les webhooks Discourse

Vous souhaitez utiliser les webhooks Discourse pour déclencher une tâche via Zapier ? C’est parti !

:bulb: Astuce : Zapier propose désormais une intégration officielle Discourse avec des déclencheurs et des actions intégrés (par exemple, « Nouveau message », « Créer un message »). Pour les cas d’usage courants, cette option est plus simple que de configurer manuellement des webhooks génériques. Le guide ci-dessous décrit l’approche manuelle via webhook, qui offre plus de flexibilité et un accès à tous les types d’événements Discourse.

Zapier nécessite un déclencheur et une action. Dans ce tutoriel, le déclencheur sera un webhook Discourse et l’action consistera à envoyer un e-mail.

Envoyer un e-mail lors de tout événement utilisateur

Nous allons maintenant configurer un Zap pour envoyer un e-mail lors de tout événement utilisateur (par exemple, lorsqu’un utilisateur est créé, approuvé, mis à jour, connecté, déconnecté, suspendu, etc.). Pour déclencher sur un événement utilisateur spécifique, consultez la section Déclencher sur un événement utilisateur spécifique ci-dessous.

Créer un webhook Discourse

  • Créez un nouveau webhook Discourse pour un événement utilisateur

    Nous mettrons à jour l’« URL de charge utile » une fois l’URL du webhook générée dans les étapes suivantes.

Créer un nouveau Zap

Cherchez ce bouton sur le tableau de bord Zapier :

Configurer le déclencheur

  • Sélectionnez Webhook comme déclencheur. Cherchez :

  • Choisissez le déclencheur

    Vous devez sélectionner « Catch Hook » (Accrocher le crochet)

  • Vous pouvez passer l’étape « Configurer Webhooks by Zapier Hook ».

    Appuyez simplement sur « Continuer ».

  • Tester le déclencheur

    Copiez l’URL du webhook personnalisée générée et collez-la dans la section « URL de charge utile » du webhook Discourse créé précédemment.

    Essayez maintenant de créer/mettre à jour/approuver un utilisateur sur votre instance Discourse.

    Si vous avez suivi toutes les étapes correctement et créé/mis à jour/approuvé un utilisateur, vous verrez un message de succès sur Zapier :

    Cliquer sur le lien hypertexte « voir votre hook » affichera les données analysées.

Configurer l’action sur Zapier

Activer le Zap

C’est tout ! Vous recevrez désormais un e-mail pour chaque événement utilisateur. La liste complète des événements utilisateur pouvant déclencher un webhook est :

Nom de l’événement Description
user_created Un nouveau compte utilisateur est créé
user_approved Un utilisateur est approuvé
user_updated Un profil utilisateur est mis à jour
user_logged_in Un utilisateur se connecte
user_logged_out Un utilisateur se déconnecte
user_confirmed_email Un utilisateur confirme son e-mail
user_destroyed Un compte utilisateur est supprimé
user_suspended Un utilisateur est suspendu
user_unsuspended Un utilisateur est désuspendu
user_anonymized Un compte utilisateur est anonymisé

:tada:


Déclencher sur un événement utilisateur spécifique

Vous souhaitez envoyer des e-mails uniquement pour un événement utilisateur spécifique, par exemple uniquement lors de la création de compte, mais pas lors d’une mise à jour ? Utilisez le déclencheur « Catch Raw Hook » (Accrocher le crochet brut).

  1. Cliquez sur « afficher moins d’options courantes »
  2. Cliquez sur « Catch Raw Hook »
  3. Suivez les étapes restantes pour configurer le déclencheur normalement.

Une fois le déclencheur configuré, ajoutez un filtre.

  1. Cliquez sur « Ajouter une étape »
  2. Cliquez sur « Filtre »
  3. Cliquez sur « Enregistrer et continuer »
  4. Sélectionnez « Headers Http X Discourse Event » dans le premier menu déroulant.
  5. Sélectionnez « (Texte) correspond exactement » dans le deuxième menu déroulant.
  6. Entrez l’en-tête complet pour lequel vous souhaitez filtrer (par exemple, user_logged_out).
  7. Si vous souhaitez que Zapier s’exécute sur plusieurs en-têtes, cliquez sur « +OR » et ajoutez-les comme pour le premier.
  8. Cliquez sur « Tester et continuer »
  9. Examinez le test de filtre, puis cliquez sur « Continuer »

Une fois le filtre configuré, configurez l’action de votre choix.

Utiliser l’en-tête complet du webhook

Pour accéder à l’en-tête, suivez les étapes précédentes : sélectionnez « Catch Raw Hook », puis ajoutez un filtre. Configurez le filtre pour ne continuer que si Headers Http X Discourse Event correspond à l’événement recherché.

La difficulté ici réside dans le fait que « Catch Raw Hook » transmet le corps brut du webhook. L’action finale que j’utilise nécessite des données analysées du corps. Ce qui fonctionne pour moi consiste à ajouter une action Code après le filtre. Dans la fenêtre modale de l’action Code, sélectionnez « Exécuter JavaScript » :

Zapier créera un objet inputData auquel vous pouvez ajouter des propriétés nommées. Ajoutez un nom pour votre propriété dans la colonne de gauche. Dans la colonne de droite, sélectionnez « Catch Raw Hook » dans le menu déroulant, puis choisissez « Raw Body » (Corps brut) :

Faites défiler la page vers le bas pour voir une zone de saisie de code :

Vous devez ensuite remplacer le code exemple par un code qui analyse le corps brut et renvoie un objet contenant les valeurs nécessaires pour votre action finale. Voici le code que j’utilise. L’objet renvoyé est utilisé par l’intégration Salesforce. Salesforce exige un nom de famille ; si aucun nom de famille n’existe, une erreur est renvoyée :

const parsed = JSON.parse(inputData.raw);
if (parsed.user) {
  const user = parsed.user,
        name = user.name,
        userFields = user.user_fields;
  let firstName,
      lastName,
      company;
  
  if (name) {
    const splitName = name.split(' ');
    firstName = splitName[0];
    lastName = splitName[1]
    }
  if (userFields) {
    company = userFields['10'];
  }
  if (lastName) {
    return {id: user.id,
            username: user.username,
            lastName: lastName,
            firstName: firstName,
            email: user.email,
            company: company
           };
  } else {
    return {error: "Missing last name"}
  }
} else {
  return {error: "A user object was not returned"};
}

Pour éviter d’effectuer une requête échouée dans l’action finale, un autre filtre Zapier peut être ajouté. Configurez ce filtre pour ne continuer que si le champ d’erreur renvoyé par le JavaScript n’existe pas :

Vous pouvez ensuite ajouter votre action finale. Pour sélectionner les champs à utiliser dans l’action finale, utilisez les propriétés renvoyées par l’action Exécuter JavaScript.

32 « J'aime »