Automatiser l'envoi d'e-mails d'invitation Discourse avec Zapier

L’API Discourse peut être utilisée pour automatiser l’envoi d’e-mails d’invitation depuis votre forum lorsqu’une action est effectuée sur une application externe. Pour de nombreuses applications, vous pouvez utiliser Zapier pour configurer cela sans avoir à écrire de code.

Un cas d’utilisation courant est d’inviter des utilisateurs sur votre forum lorsqu’ils achètent un produit ou s’inscrivent sur un service externe. Pour l’exemple dans ce sujet, j’utiliserai l’intégration Zapier WordPress pour déclencher l’envoi d’une invitation depuis Discourse lorsqu’un nouvel utilisateur s’inscrit sur un site WordPress.

Configuration d’une étape de déclenchement sur Zapier

Rendez-vous sur votre tableau de bord Zapier et recherchez l’application que vous souhaitez utiliser pour déclencher l’e-mail d’invitation. Dans les captures d’écran ci-dessous, j’ai sélectionné WordPress comme déclencheur.

La seule configuration requise est de connecter le Zap WordPress à un compte WordPress et de sélectionner l’événement Nouvel Utilisateur pour déclencher le Zap.

Configuration d’une étape d’action pour envoyer l’invitation

Cliquez sur le bouton Ajouter une étape, puis cliquez sur Action/Recherche dans le menu déroulant.

Entrez ‘webhook’ dans le menu de recherche, puis sélectionnez Webhooks par Zapier dans le menu des actions. L’étape d’action Webhook sera ajoutée à la barre latérale de votre Zap, et un formulaire s’ouvrira vous permettant de choisir le type de requête que le webhook doit effectuer.

Sélectionnez POST dans le formulaire, puis cliquez sur Continuer.

Le formulaire qui s’ouvre vous permet de configurer la requête POST effectuée vers Discourse. Dans le champ URL, entrez l’URL de base de votre forum, suivie de /invites. Par exemple, l’URL de base de mon forum est https://demo.scossar.com, donc le lien complet vers la route des invitations est https://demo.scossar.com/invites

Vous devez maintenant configurer les sections Type de Charge Utile, Données, et En-têtes du formulaire. Toutes les autres sections du formulaire peuvent conserver leurs valeurs par défaut.

Le Type de Charge Utile indique à Zapier dans quel format envoyer la charge utile. Il doit être défini sur Json.

La section Données est utilisée pour indiquer à Discourse quelle adresse e-mail envoyer l’invitation, et pour définir une liste facultative de noms de groupes et un message personnalisé. Pour inviter un utilisateur sans l’ajouter à des groupes ou inclure un message personnalisé, entrez le texte email comme Clé de données, puis cliquez sur l’icône ‘Insérer un Champ’ pour ouvrir le menu déroulant du champ. Faites défiler la liste jusqu’à ce que vous trouviez la valeur qui a été transmise depuis votre application de déclenchement et qui contient l’e-mail de l’utilisateur. Lors de l’utilisation de WordPress comme application de déclenchement, la section Données complétée devrait ressembler à ceci :

Pour ajouter automatiquement des utilisateurs à des groupes lorsqu’ils acceptent l’invitation, cliquez sur l’icône :heavy_plus_sign: de la section Données pour ajouter un nouveau champ. Définissez la Clé du champ sur group_names. Définissez la Valeur du champ sur une liste de noms de groupes séparés par des virgules que vous souhaitez attribuer aux utilisateurs. Pour inclure un message personnalisé dans l’e-mail d’invitation, créez un autre champ avec sa Clé définie sur custom_message et sa valeur définie sur le message que vous souhaitez envoyer.

Note : en ajoutant une étape de Code après l’étape de déclenchement de votre Zap, il devrait être possible de définir dynamiquement des noms de groupes et un message personnalisé pour des utilisateurs spécifiques.

La section En-têtes est utilisée pour authentifier votre requête. Pour configurer le champ En-têtes, vous devrez générer une clé d’API sur votre site Discourse. Pour ce faire, accédez à la page Admin / API de votre site Discourse et cliquez sur le bouton “Nouvelle clé d’API”. Lors de la création de la clé, attribuez-la à un utilisateur du personnel et définissez la portée sur Global, ou utilisez une portée Granulaire avec la case Invitations > Créer cochée.

Maintenant, dans la section En-têtes du Zap, entrez les paires clé/valeur suivantes. Remplacez toutes les valeurs que j’ai incluses entre crochets par des valeurs appropriées pour votre site. La casse des noms de clés est importante.

Api-Username: <le nom d'utilisateur du personnel que vous souhaitez utiliser pour envoyer les invitations>
Api-Key: <la clé d'API que vous avez générée>
Content-Type: application/json

Le formulaire devrait maintenant ressembler à la capture d’écran ci-dessous, mais avec votre Api-Username et Api-Key :

Cliquez sur le bouton Continuer.

Vous pourrez maintenant tester l’intégration en cliquant sur le bouton ‘Envoyer un Test à Webhooks par Zapier’. Le test sera effectué avec les données que vous avez configurées dans votre étape de déclenchement. Vous verrez un message de succès si tout est correctement configuré, et si l’utilisateur que vous avez configuré dans votre étape de déclenchement n’existe pas encore sur votre forum Discourse, un e-mail d’invitation sera envoyé et vous verrez un message de Succès sur Zapier. Une fois que l’étape de test passe, cliquez sur le bouton Terminer et activez votre Zap.

Pour plus de détails sur la manière d’effectuer d’autres types de requêtes à l’API Discourse avec Zapier, consultez Make requests to the Discourse API with Zapier.

25 « J'aime »

C’est génial, merci pour cette fonctionnalité et pour les instructions claires !

Est-il également possible de définir le groupe personnalisé lors de la génération d’une invitation, comme on peut le faire dans l’application ?

Cela peut être fait en ajoutant une clé group_names au champ Headers. Sa valeur doit être définie comme une liste de noms de groupes séparés par des virgules. J’ajouterai un exemple à ce sujet dans le sujet.

L’approche de base utilisée dans ce sujet fonctionnera pour toute requête API vers Discourse.

3 « J'aime »

Super !! Je pense que la boîte de dialogue accepte également un message personnalisé ; je suppose que cela peut se faire de la même manière ?

1 « J'aime »

J’ai essayé de configurer cela ce matin et j’ai rencontré une erreur 400. Après un peu de débogage, j’ai découvert que les étapes liées à l’authentification doivent être placées dans la section en-têtes, comme indiqué, mais que les valeurs réelles du formulaire (e-mail, nom du groupe et message personnalisé) doivent être placées dans la section données sous forme de paires clé/valeur.

Une fois ce changement effectué, tout a fonctionné parfaitement !

1 « J'aime »

Merci pour cela, @simon !

Y a-t-il des descriptions sur meta concernant d’autres façons de créer un processus automatisé pour envoyer un e-mail d’invitation après qu’un lecteur s’est inscrit à une offre, vers lesquelles vous pourriez faire un lien ici ?

Merci d’avoir testé cela ! Ce que je constate, c’est que lorsque ni custom_message ni group_names ne sont inclus dans la requête, transmettre l’email dans les en-têtes fonctionne. Ce n’est toutefois pas la méthode correcte pour transmettre l’adresse e-mail. J’ai mis à jour le guide pour utiliser la section Données afin de définir l’adresse e-mail, et j’ai inclus des exemples pour ajouter des utilisateurs à des groupes et inclure un message personnalisé.

4 « J'aime »

Je ne connais pas d’autres services similaires à Zapier, mais je suis sûr qu’il en existe. Vous pouvez envoyer des requêtes directement à l’API Discourse sans utiliser de service tiers. La principale exigence pour cela est d’avoir une application pour effectuer les requêtes. Cela peut être quelque chose d’aussi simple qu’un site WordPress.

Une bonne ressource sur Meta pour commencer avec l’API est Reverse engineer the Discourse API. Vous pouvez tester les requêtes API avec CURL depuis le terminal de votre ordinateur, ou avec un service comme Postman.

2 « J'aime »

Merci ! La plupart de ce que vous écrivez, je n’y comprends rien… mais je vais vérifier vos liens et voir si je peux comprendre quelque chose :smiley:

2 « J'aime »

@simon

Une question rapide :

Lorsque j’envoie une invitation automatisée via Zapier, s’agit-il d’un lien déjà personnalisé ou d’un lien vers la page de connexion générale de mon forum (où une personne peut se connecter et également créer un compte) ?

Je voudrais éviter que n’importe qui, même le chien du voisin qui connaît la page de connexion, ne crée un compte. Comment éviter cela au mieux ?

Lorsque vous envoyez un lien d’invitation via Zapier, vous déclenchez exactement la même action que si vous aviez cliqué sur le lien « Envoyer une invitation » depuis la page d’invitations de votre compte.

La création d’une invitation envoie un e-mail à l’adresse e-mail de l’utilisateur invité. Cet e-mail contient un lien vers une page où l’utilisateur invité peut définir son nom et son mot de passe, puis se connecter à son nouveau compte. L’adresse e-mail du nouveau compte est celle que vous avez utilisée pour l’invitation.

Seuls les utilisateurs ayant reçu une invitation peuvent créer un compte via cette page. Si vous souhaitez autoriser uniquement les utilisateurs invités à s’inscrire sur votre site, accédez à la section Connexion de vos Paramètres du site et sélectionnez le paramètre de site sur invitation uniquement.

La meilleure façon de comprendre comment fonctionnent les invitations est de vous inviter vous-même sur votre site. Vous pouvez utiliser une adresse Gmail jetable à cette fin. Vous devrez vous déconnecter du site avant de pouvoir accepter votre invitation.

3 « J'aime »

Ah, super, des infos géniales. Merci !!

1 « J'aime »

Merci pour ce super tutoriel ! Existe-t-il un moyen d’ajouter un ID de sujet vers lequel l’utilisateur sera redirigé après son inscription, comme dans la fonctionnalité d’invitation en masse ?

Il est possible d’inviter un nouvel utilisateur à rejoindre un sujet en suivant une approche similaire à celle décrite ci-dessus, mais l’URL que vous configurez dans l’étape « Action » doit pointer vers le sujet. Par exemple, pour inviter un utilisateur à un sujet dont l’identifiant est 123, vous ajouterez l’URL https://forum.example.com/t/123/invite dans l’étape « Action ». Vous ajouterez ensuite les paramètres email et, optionnellement, custom_message et group_names de la même manière que décrit dans le guide.

3 « J'aime »

Salut Simon,

Merci pour ton message !

J’ai deux questions ; si tu pouvais m’aider, ce serait super :slight_smile:

Question 1/
De mon côté, l’invitation + le message fonctionnent bien, mais peu importe les group_names que j’ajoute, je n’ai accès qu’au groupe public par défaut lorsque je rejoins le forum.

Sais-tu si quelque chose pourrait « bloquer » l’invitation à un groupe privé spécifique ?

L’URL du nom du groupe est comme ceci : https://forum.[monsite].com/c/cercle/33

Donc j’ai : group_names /// PUBLIC,cercle

J’ai aussi essayé d’utiliser un « nombre » à la place du nom du groupe (33) pour ce groupe, mais cela ne fonctionne toujours pas.

Peut-être y a-t-il une sorte de « restriction » dans les paramètres d’administration du forum qui bloque l’invitation aux groupes privés ?

Question 2/

J’aimerais pouvoir inviter des personnes non seulement dans un « groupe privé », mais aussi dans un « sous-groupe privé » (je ne connais pas le bon terme pour cela).

Ici, tu peux voir que j’ai le groupe « RÉSERVÉ… »
Et tous les petits sous-groupes en dessous.

J’aimerais inviter des utilisateurs à des sous-groupes spécifiques.

Sais-tu comment faire ?

Merci beaucoup si tu peux prendre un peu de temps pour m’aider là-dessus ! :slight_smile:

1 « J'aime »

Assurez-vous d’utiliser le nom du groupe et non le nom de la catégorie à laquelle vous autorisez le groupe à accéder. Vous pouvez trouver le nom du groupe dans l’URL du groupe ou dans le champ Nom du groupe :

Si cela ne résout pas le problème, assurez-vous que la clé API Discourse que vous ajoutez à Zapier est une clé API globale « Tous les utilisateurs ». Vérifiez également que le nom d’utilisateur API défini dans Zapier a l’autorisation d’ajouter des utilisateurs au groupe. N’importe quel nom d’utilisateur administrateur de votre site fonctionnera pour cela.

Faites-moi savoir si cela ne résout pas le problème pour vous.

Vous pouvez inviter l’utilisateur à plusieurs groupes en ajoutant une liste de noms de groupes séparés par des virgules dans le champ group_names sur Zapier. Discourse ne dispose pas du concept de sous-groupes, vous devrez donc ajouter le nom de chaque groupe auquel vous souhaitez inviter l’utilisateur.

D’après la capture d’écran que vous avez fournie, il semble que vous essayiez d’accorder à l’utilisateur l’accès à une catégorie et à toutes ses sous-catégories. Au lieu de créer un groupe pour chaque sous-catégorie, vous pouvez simplement autoriser un seul groupe à accéder à la catégorie et à toutes ses sous-catégories. Cela se configure dans la section Sécurité de la page d’édition de la catégorie.

2 « J'aime »

Merci pour votre réponse, Simon !

Donc, concernant l’API :

J’avais accordé l’accès à un seul utilisateur (l’administrateur), pensant que cela suffirait. J’ai donc créé une nouvelle API pour donner accès à tous les utilisateurs.

Mais cela ne fonctionne toujours pas. Cependant, je pense avoir compris le problème :slight_smile:

J’essaie d’ajouter un nom de « catégorie » dans le champ « group_names ». Je suppose donc que cela ne peut pas fonctionner :).

J’ai mal compris la différence entre les noms de groupes, catégories et sujets…

Sur la capture d’écran, vous pouvez voir une liste d’environ 15 sous-catégories : TB, MT, RD, MA, etc.

Par exemple, l’URL de la première sous-catégorie est : https://forum.MYWEBSITE.com/c/question-formactions/TBD/14

Je suppose donc que je souhaite inviter automatiquement de nouveaux membres vers certaines sous-catégories privées, et non pas vers certains groupes.

Sur l’URL que je vous ai donnée, je voudrais par exemple accorder l’accès uniquement à la sous-catégorie « TBD ».

Et un autre utilisateur n’aurait accès qu’à une autre sous-catégorie.

Savez-vous si c’est possible ?

Peut-être dois-je simplement remplacer le champ « group_names » dans Zapier par celui correspondant aux catégories ?

1 « J'aime »

Les groupes et les catégories sont une source de confusion dans Discourse !

  1. Les groupes sont des collections de personnes.
  2. Les catégories sont des collections de sujets. Vous ne pouvez pas inviter des personnes directement à elles. Mais l’accès à celles-ci est contrôlé par des groupes.

Pour réaliser ce que vous souhaitez, créez un groupe. Dans les paramètres de sécurité de la catégorie concernée, ajoutez l’accès pour ce groupe. Utilisez ce groupe pour l’API d’invitation. C’est fait.

3 « J'aime »

Merci pour votre réponse, Nathan !

Je vais essayer cela et publier mon résultat ici :wink:

2 « J'aime »

Votre solution fonctionne parfaitement, merci ! :smiley:

J’ai une autre question, peut-être que vous (ou @simon) pourriez m’aider :

Avec Zapier, est-il possible d’accorder l’accès à un nouveau groupe à des personnes qui sont déjà membres de Discourse ?

Voici essentiellement mon flux de travail :

1/ Un membre s’inscrit à l’un de mes cours

2/ Zapier récupère son email depuis ma plateforme d’apprentissage, lui envoie une invitation à rejoindre mon Discourse et l’ajoute automatiquement au bon groupe, lié au cours auquel il vient de s’inscrire.

3/ Parfois, quelques mois plus tard, ce même membre s’inscrit à un autre cours : ainsi, avec mon processus actuel, mon Zapier lui enverra une nouvelle invitation à rejoindre Discourse, alors qu’il est déjà membre, donc l’invitation ne fonctionnera pas.

J’aurais besoin que Zapier lui accède l’accès à un nouveau groupe s’il est déjà membre de mon Discourse.

Voyez-vous un moyen de faire cela ?

1 « J'aime »