Sto valutando l’idea di creare un servizio bridge webhook+API per connettere determinate categorie su due forum Discourse diversi. L’idea generale sarebbe:
Un webhook su ciascun server per gli eventi Topic e Post[1]
Un listener che riceve questi eventi e li replica sul server opposto tramite API
Verifica se esiste un utente con lo stesso indirizzo email sul server opposto[3]
Se tale utente non esiste, crea un utente “staged” (in attesa di attivazione)
Modifica le impostazioni di notifica dell’utente “staged” in modo che non riceva notifiche via email[4]
Crea o aggiorna il post sotto l’utente reale o “staged” appropriato
Probabilmente una routine temporizzata per scorrere gli argomenti e assicurarsi che nulla sia stato perso, e possibilmente riordinare in modo che entrambi i lati concordino
Da Understanding user statuses, roles, and permissions, penso che gli utenti “staged” farebbero essenzialmente ciò che vogliamo: se qualcuno creasse in seguito un account con quell’indirizzo email, potrebbe “rivendicarlo” e interagire con tutti i suoi post come se fosse sempre stato lì.
Ma, c’è un modo per creare un utente “staged” tramite API? Non lo vedo in Discourse API Docs.
e possibilmente anche per gli eventi Like e Solved, ma non nella prima versione ↩︎
Ci ho sicuramente pensato prima di scrivere questo elenco ↩︎
utilizzando gli indirizzi email come chiave perché i sistemi di account potrebbero non avere gli stessi nomi utente ↩︎
Ho visto un post sulla possibilità di farlo da qualche parte qui… ↩︎
Beh, in un certo senso. Come dice l’OP in quell’argomento, in risposta a quello…
… e lì, la risposta è fondamentalmente iniettare un’email e lasciare che il codice di gestione delle email se ne occupi. Ma, ciò non funziona per questo caso, perché devo intervenire e disattivare le notifiche email per l’utente prima di creare il post.
Succede che abbiamo SSO-overrides-username attivato per un lato del ponte proposto, quindi penso che creare qualcosa come ‘altrosito-utente’ potrebbe essere una soluzione alternativa… ma ciò non funzionerà necessariamente senza quell’impostazione SSO.
Con questo approccio sembrerà che gli utenti abbiano creato argomenti e risposte via email. Gli utenti “staged” possono creare post solo via email. Si otterrà un errore di accesso non valido se si tenta di creare un post non via email per un utente “staged” tramite l’API.
Qualcosa nell’approccio utente “staged” non mi convince del tutto. Potrebbe valere la pena sondare i tuoi utenti per vedere se hanno delle preoccupazioni. Se potessi ottenere il permesso dai tuoi utenti, potresti semplicemente creare utenti attivi non “staged” sul sito mirror, quindi pubblicare i loro argomenti e commenti tramite l’API.
Passare staged: true crea un utente “staged”. Presumo che un utente creato in questo modo sarà in grado di pubblicare via email. Il mio sito di sviluppo locale non è configurato per inviare email a Discourse, quindi al momento non posso testarlo.
Ho desiderato usare discourse come processore di moduli generico per gestire i moduli di contatto. Odio i moduli di contatto, ma alcuni utenti preferirebbero usarne uno piuttosto che inviare un’email. Anche se penso che quelle persone prendano decisioni sbagliate, vorrei rendere più facile per loro contattarmi in modo che possano darmi soldi.
Sarebbe molto utile poter creare un messaggio che crei un utente “staged” senza dover ricorrere a qualche altro sistema per elaborare il modulo e inviare un’email.
Presumo che dovrò creare un plugin per farlo, ma questo è il mio piano.
Questa è una delle uniche cose che mi restano da capire per sbarazzarmi di wordpress.
Quindi forse quello che farò nel plugin è creare il post come se fosse un’email. Potrebbe non essere troppo difficile in un plugin. E ciò renderebbe probabilmente possibile tramite un’API.
Penso che potresti usare un Wizard ( Custom Wizard Plugin) per ottenere ciò senza troppi problemi. Ora puoi creare wizard anonimi. Sono felice di darti una mano se necessario!
Oh! Certo. È così che il ricevitore di posta consegna la posta. Penso di volere un endpoint che accetti campi arbitrari da qualsiasi form, li inserisca in un topic e me li consegni. Ciò mi eviterebbe di dover rendere pubblica una API key (limitata solo alla consegna di posta non sembra così terribile, avere javascript che elabora il form e poi lo consegna all’endpoint esistente).