Les requêtes vers l’API Discourse peuvent être automatisées en créant un Zap qui utilise un webhook Zapier comme étape d’action. Ce sujet décrit comment effectuer des requêtes pour les actions suivantes :
- ajouter un utilisateur à un groupe
- attribuer un badge personnalisé
Pour savoir comment effectuer d’autres types de requêtes API avec Zapier, lisez ce sujet, puis consultez la documentation de l’API Discourse pour l’action que vous souhaitez réaliser. Vous pouvez également découvrir comment créer une requête API pour une action spécifique en lisant Reverse engineer the Discourse API.
Configurer l’étape de déclenchement
Chaque Zap doit comporter une étape de déclenchement et une étape d’action. Le déclenchement permet de transmettre des données d’une application vers l’étape d’action du Zap. Dans certains cas, le déclenchement peut également empêcher le Zap d’exécuter son étape d’action à moins que les données ne répondent à certaines conditions.
Pour configurer votre étape d’action, rendez-vous sur votre tableau de bord Zapier et cliquez sur le bouton Créer un Zap. Un formulaire de recherche s’ouvrira pour vous demander de choisir une application de déclenchement.
Pour les exemples de ce sujet, j’utilise l’événement Nouveau utilisateur de WordPress comme étape d’action. Cela s’explique par le fait qu’il est facile à configurer pour tester les appels API.
Le nœud « Tester cette étape » de votre étape de déclenchement vous permet de sélectionner un échantillon de données provenant de votre application de déclenchement, qui sera transmis à l’étape d’action de votre Zap. Ces données seront utiles pour configurer l’étape d’action.
Ajouter une étape facultative pour récupérer des détails depuis Discourse
Selon les données transmises par votre application de déclenchement, vous devrez peut-être récupérer certaines données depuis Discourse avant de pouvoir effectuer votre requête API finale. Par exemple, le déclenchement Nouveau utilisateur de WordPress transmet le nom d’utilisateur WordPress et l’adresse e-mail de l’utilisateur. Je sais que l’adresse e-mail correspondra à celle de l’utilisateur Discourse, mais pour les requêtes API de cet exemple, j’ai besoin de connaître le nom d’utilisateur Discourse de l’utilisateur.
Pour obtenir les détails d’un utilisateur Discourse à partir de son adresse e-mail, ajoutez une étape d’action à votre Zap. Sélectionnez « GET » dans le menu d’action du webhook.
Dans l’étape d’édition du modèle du webhook, entrez l’URL de base de votre site Discourse, suivie de /admin/users/list/all.json, dans la section URL. Par exemple, l’URL de base de mon site est https://demo.scossar.com, j’entre donc https://demo.scossar.com/admin/users/list/all.json dans le champ URL.
Dans la section Paramètres de la chaîne de requête, entrez « email » comme clé, puis cliquez sur l’icône « Insérer un champ » pour ouvrir le menu déroulant. Sélectionnez la valeur transmise par votre étape de déclenchement qui contient l’adresse e-mail de l’utilisateur.
Authentifier la requête
Faites défiler le formulaire jusqu’à sa section En-têtes. Cette section sert à authentifier la requête. Elle nécessite trois paires clé/valeur :
Api-Username: le nom d’utilisateur d’un administrateur sur votre site. Dans la plupart des cas, l’utilisateur « system » est un bon choix.Api-Key: la clé API associée au nom d’utilisateur utilisé dans la première paire clé/valeur.Content-Type:multipart/form-data
La section En-têtes complétée devrait ressembler à ceci, mais avec la clé API de votre utilisateur :
Cliquez sur le bouton Continuer pour voir les données récupérées depuis Discourse pour cette requête.
Ajouter l’étape d’action finale
Une fois votre déclenchement et l’étape facultative de récupération de données depuis Discourse configurés, cliquez sur le lien « Ajouter une étape » et sélectionnez « Webhooks by Zapier » dans le menu d’action. On vous demandera ensuite de choisir la méthode de requête que vous souhaitez utiliser dans votre requête API vers Discourse.
Voici les types de requêtes requis pour les exemples utilisés dans ce sujet :
- ajouter un utilisateur à un groupe :
PUT - attribuer un badge personnalisé :
POST
Pour configurer des requêtes API autres que les exemples de ce sujet, consultez la documentation de l’API Discourse pour voir s’il existe un exemple de la requête que vous souhaitez effectuer. Si vous ne trouvez pas d’exemple, lisez Comment déduire le fonctionnement de l’API Discourse pour apprendre à trouver l’URL et la méthode de requête pour l’action que vous souhaitez réaliser. Une fois la méthode de requête trouvée, sélectionnez-la dans le menu d’action.
Remarque : si votre requête utilise la méthode DELETE, sélectionnez « Requête personnalisée » dans le menu d’action.
Configurer l’étape d’action finale
La section En-têtes de l’action peut être configurée de la même manière pour toutes les requêtes API. Consultez la section « Authentifier la requête » de ce sujet pour plus de détails. Si vous avez ajouté l’étape facultative pour récupérer des détails depuis Discourse, vous pouvez configurer la section En-têtes de l’action finale exactement de la même manière que pour cette étape.
Une fois les paires clé/valeur d’en-tête ajoutées, vous devrez remplir les champs URL et Données du formulaire pour votre requête API.
Ajouter un utilisateur à un groupe
Pour ajouter un utilisateur à un groupe, une requête PUT est envoyée vers /groups/<group_id>/members.json. Le moyen le plus simple de trouver l’ID d’un groupe est de visiter la page du groupe via l’interface utilisateur de Discourse, puis d’ajouter .json à la fin de l’URL dans la barre d’adresse de votre navigateur. Par exemple, mon site possède un groupe « support » à l’adresse https://demo.scossar.com/g/support. En accédant à https://demo.scossar.com/g/support.json, je peux voir que l’ID du groupe est 41. L’URL de base de mon forum est https://demo.scossar.com. L’URL de mon étape d’action finale pour ajouter des utilisateurs à un groupe est donc définie sur https://demo.scossar.com/groups/41/members.json.
La requête pour ajouter des utilisateurs à un groupe nécessite un paramètre : une liste de noms d’utilisateur séparés par des virgules. Dans la section Données du formulaire, entrez « usernames » comme clé. Cliquez ensuite sur l’icône « Insérer un champ » pour rechercher la propriété nom d’utilisateur transmise soit par le déclenchement, soit par l’étape d’action GET facultative.
Dans mon cas, je souhaite le nom d’utilisateur récupéré par l’étape GET, j’élargis donc le menu « GET » et sélectionne Nom d’utilisateur dans le menu déroulant.
Toutes les autres sections du formulaire peuvent rester avec leurs valeurs par défaut.
Cliquez sur le bouton Continuer, puis testez votre étape. Si l’utilisateur que vous avez transmis via les étapes précédentes existe sur votre site Discourse et qu’il n’est pas déjà membre du groupe que vous avez sélectionné, il devrait être ajouté au groupe lors du test de l’étape.
Si tout fonctionne comme prévu, activez votre Zap.
Attribuer un badge personnalisé
Pour attribuer un badge personnalisé à un utilisateur, une requête POST est envoyée vers l’URL de base de votre forum + /user_badges. Pour mon site, l’URL pour attribuer des badges est https://demo.scossar.com/user_badges. Le champ URL complété dans Zapier ressemble à ceci :
La section Données du formulaire nécessite deux paires clé/valeur. Ajoutez une clé « username » et définissez-la sur le champ qui retourne le nom d’utilisateur de l’utilisateur. Ajoutez une clé « badge_id » et définissez-la sur l’ID du badge que vous souhaitez attribuer. Vous pouvez trouver l’ID du badge en accédant à votre page Admin / Badges et en sélectionnant le badge dans le menu de gauche. Vous verrez l’ID du badge comme la dernière valeur de l’URL dans la barre d’adresse de votre navigateur.
Le badge que j’attribue a un ID de 105, ma section Données complétée ressemble donc à ceci :
Assurez-vous d’avoir configuré la section En-têtes du formulaire, puis cliquez sur Continuer. Cliquez ensuite sur le bouton Envoyer le test pour tester votre Zap. L’utilisateur que vous avez transmis via les étapes précédentes devrait se voir attribuer le badge.
Si tout fonctionne correctement, activez le Zap.












