Je réfléchis à l’idée de créer un service de pont webhook+API pour connecter des catégories données sur deux forums Discourse différents. L’idée générale serait :
Un webhook sur chaque serveur pour les événements Topic et Post[1]
Un écouteur qui prend ces événements et les réplique sur le serveur opposé via l’API
Euh, quelque chose pour éviter les boucles, évidemment[2]
Vérifier si un utilisateur avec la même adresse e-mail existe sur le serveur opposé[3]
Si aucun utilisateur de ce type n’existe, créer un utilisateur temporaire (staged user)
Modifier les paramètres de notification de l’utilisateur temporaire afin qu’il ne reçoive pas de notifications par e-mail[4]
Créer ou mettre à jour le post sous l’utilisateur réel ou temporaire approprié
Probablement une routine planifiée pour parcourir les sujets et s’assurer que rien n’a été manqué, et éventuellement réordonner afin que les deux côtés soient d’accord
D’après Comprendre les statuts, rôles et permissions des utilisateurs, je pense que les utilisateurs temporaires feraient essentiellement ce que nous voulons – si quelqu’un créait un compte avec cette adresse e-mail plus tard, il pourrait le « réclamer » et interagir avec tous ses posts comme s’il avait toujours été là.
Mais, y a-t-il un moyen de créer un utilisateur temporaire via l’API ? Je ne vois pas cela dans Discourse API Docs.
et éventuellement aussi les événements Like et Solved, mais pas dans la première version ↩︎
J’y ai absolument pensé avant d’écrire cette liste ↩︎
en utilisant les adresses e-mail comme clé car les systèmes de compte peuvent ne pas avoir les mêmes noms d’utilisateur ↩︎
J’ai vu un post à ce sujet quelque part par ici… ↩︎
Eh bien, en quelque sorte. Comme le dit l’OP dans ce sujet, en réponse à cela…
… et là, la réponse est essentiellement d’injecter un e-mail et de laisser le code de gestion des e-mails s’en occuper. Mais cela ne fonctionne pas dans ce cas, car je dois intervenir et désactiver les notifications par e-mail pour l’utilisateur avant de créer la publication.
Il se trouve que nous avons l’option SSO-overrides-username activée pour un côté du pont proposé, donc je pense que la création de quelque chose comme ‘othersite-user’ pourrait être une solution de contournement… mais cela ne fonctionnera pas nécessairement sans ce paramètre SSO.
Avec cette approche, il semblera que les utilisateurs ont créé des sujets et des réponses par e-mail. Les utilisateurs staged ne peuvent créer des publications que par e-mail. Vous obtiendrez une erreur d’accès non valide si vous tentez de créer une publication non-e-mail pour un utilisateur staged via l’API.
Quelque chose dans l’approche des utilisateurs staged ne me semble pas tout à fait correct. Il pourrait être utile de sonder vos utilisateurs pour voir s’ils ont des préoccupations. Si vous pouviez obtenir l’autorisation de vos utilisateurs, vous pourriez simplement créer des utilisateurs actifs non-staged sur le site miroir, puis publier leurs sujets et commentaires via l’API.
Passer staged: true crée un utilisateur staged. Je suppose qu’un utilisateur créé de cette manière pourra publier par e-mail. Mon site de développement local n’est pas configuré pour envoyer des e-mails à Discourse, je ne peux donc pas le tester pour le moment.
Je voulais utiliser Discourse comme processeur de formulaires générique pour gérer les formulaires de contact. Je déteste les formulaires de contact, mais certains utilisateurs préfèrent les utiliser plutôt que d’envoyer un e-mail. Même si je pense que ces personnes prennent de mauvaises décisions, j’aimerais leur faciliter le contact pour qu’elles puissent me donner de l’argent.
Ce serait très pratique de pouvoir créer un message qui crée un utilisateur temporaire sans avoir à recourir à un autre système pour traiter le formulaire et envoyer un e-mail.
Je suppose que je devrai créer un plugin pour cela, mais c’est mon plan.
C’est l’une des seules choses qui me restent à régler pour me débarrasser de WordPress.
Alors peut-être que dans le plugin, je créerai le message comme s’il s’agissait d’un e-mail. Ce ne sera peut-être pas trop difficile dans un plugin. Et cela rendrait probablement possible via une API.
Je pense que vous pourriez utiliser un Assistant ( Plugin d’Assistant Personnalisé) pour y parvenir sans trop de difficulté. Vous pouvez maintenant créer des assistants anonymes. Je serais ravi de vous aider si besoin !
Oh ! Bien sûr. C’est ainsi que le récepteur de courrier distribue le courrier. Je pense que je veux un point de terminaison qui acceptera des champs arbitraires de n’importe quel formulaire, les placera dans un sujet et me les livrera. Cela m’éviterait d’avoir à rendre publique une clé API (limitée à la livraison de courrier, cela ne semble pas si terrible, d’avoir du javascript traiter le formulaire puis le livrer au point de terminaison existant).