Esempio di un plugin con un modulo e una richiesta POST

Ciao a tutti!

Stiamo lavorando per sbloccare lo sviluppo di un plugin che stiamo realizzando qui su Error "Unable to configure link to 'Auto Send Messages'. Ensure ad-blockers are disabled and try reloading the page."

E avremmo davvero bisogno di un esempio funzionante di un plugin che abbia un’azione di tipo invio modulo al suo interno. Il nostro plugin ha due cose, a grandi linee:

  • alcuni elementi di configurazione
  • un modulo in cui un utente inserirebbe del testo, e poi ‘invierebbe’ per l’elaborazione

Quindi, se qualcuno conosce un plugin che abbia queste due tipologie di funzionalità, apprezzeremmo davvero un link per poter esaminare come funziona.

Grazie!

Puoi dire di più su cosa stai facendo? Cosa stai cambiando con il modulo? Può essere un componente tematico? Quello che stai inviando è a un endpoint esistente o a uno che stai aggiungendo?

Vedi Discourse toolkit to render forms

Quindi puoi ottenere GitHub - discourse/all-the-plugins e cercare “Form” ma puoi anche vedere Code search results · GitHub come descritto in Discourse toolkit to render forms - #20 by david (anche se quelli sono tutti nel core, non nei plugin)

Forse vedi discourse-data-explorer/assets/javascripts/discourse/components/param-input-form.gjs at main · discourse/discourse-data-explorer · GitHub

2 Mi Piace

FormKit è abbastanza nuovo.

Non ho ancora aggiornato il plugin Locations per utilizzarlo.

(Ma è sicuramente la cosa giusta da usare se si inizia da capo :+1:)

1 Mi Piace

Questo è verissimo. È ancora quello che consiglierei a qualcuno che scrive nuovo codice.

L’ho usato per qualcosa di nuovo su cui sto lavorando. (E puoi vedermi lamentarmene molto nell’argomento dedicato!)

2 Mi Piace

@pfaffman Vogliamo creare un semplice modulo che richieda all’utente quattro cose:

  1. Mittente
  2. Destinatario
  3. Oggetto
  4. Corpo

L’utente compilerà questi campi e poi farà clic su un pulsante per attivare un endpoint che invia l’email.

Nello specifico, il modulo includerà i quattro elementi e, una volta cliccato il pulsante “Invia”, invocherà l’endpoint per inviare il messaggio.

Non sono sicuro se sia esattamente quello che stai cercando, ma l’obiettivo principale è consentire a un utente amministratore di inserire testo (l’oggetto e il corpo dell’email) e fare clic su un pulsante per inviarlo a un utente in Discourse.

In futuro, vorremmo estendere questo in modo che l’utente possa attivare più messaggi da un mittente a più destinatari. Vogliamo manipolare parametri come il numero totale di messaggi e il ritardo tra ciascuno, per controllare quanti messaggi vengono inviati e quanto sono distanziati.

Forse torna indietro di un passo e descrivi il problema effettivo che stai cercando di risolvere.

Intendi inviare un’e-mail diretta (in modo che il messaggio non esista in Discourse) o inviare un PM che arrivi all’utente (che nella maggior parte dei casi genererà una notifica e-mail)?

Vuoi cambiare chi è il mittente del PM? Sembra l’unica cosa che manca dall’interfaccia PM esistente, giusto?

1 Mi Piace

Grazie per la chiarificazione! Per fornire un po’ più di contesto, lavoriamo con una vasta base di utenti e vogliamo ri-engaggiare gli utenti che non hanno interagito con la nostra app da un po’. L’obiettivo è inviare un messaggio privato (PM) a un gran numero di utenti da un mittente specifico, con controllo su diversi parametri:

  1. Mittente: L’utente amministratore specificherà direttamente il nome utente del mittente nel modulo.
  2. Oggetto e Corpo: L’amministratore può personalizzare sia l’oggetto che il corpo del PM.
  3. Controllo del volume: Vogliamo controllare quanti messaggi vengono inviati contemporaneamente per evitare di spamare gli utenti.
  4. Tempi: La questione chiave è assicurarci di poter controllare la velocità di invio dei messaggi, per evitare di sopraffare il nostro dominio email e di essere segnalati come spam. Dovremo poter distanziare i messaggi definendo ritardi tra l’invio di ciascun messaggio (e l’email corrispondente) per prevenire il triggering dei filtri antispam.

L’obiettivo finale è far sì che gli utenti aprano il messaggio privato (che genererà anche una notifica email) e incoraggiarli a tornare nella nostra app.

Abbiamo già uno script Ruby semplice che può svolgere questo compito ed è pienamente funzionante. Attualmente, lo avviamo manualmente accedendo al VM tramite SSH, il che è un po’ macchinoso. Quello che vorremmo ora è adattare questo script in un plugin in modo che un amministratore possa facilmente attivarlo tramite l’interfaccia utente, con la possibilità di inserire le impostazioni (mittente, oggetto, corpo, numero di messaggi, ritardo tra di loro, ecc.) direttamente dall’interfaccia di amministrazione.

Vorremmo ottenere tutto questo tramite un’interfaccia plugin che consenta all’amministratore di inserire facilmente queste impostazioni, avviare il processo e monitorare il progresso dell’invio dei messaggi.

1 Mi Piace

Sono davvero tante parti.

Probabilmente farei qualcosa come avere gli utenti in un gruppo e pianificare di inviare a tutti gli utenti del gruppo. Quando un messaggio viene inviato, imposteresti un valore in un user_custom_field e useresti un argomento esistente come testo e mittente del messaggio. Un lavoro si eseguirebbe ogni tanto e invierebbe quanti messaggi vuoi. Metterei il gruppo e il valore del campo personalizzato nelle impostazioni.

In questo modo non avresti bisogno di un’interfaccia o di creare un nuovo percorso; puoi semplicemente usare le impostazioni esistenti. E potresti vedere cosa è successo usando l’esploratore di dati, quindi non sarebbe necessario sviluppare un’interfaccia per entrambi.

Ma se vuoi creare alcuni campi che le persone inseriscono nell’UX, dovresti dare un’occhiata alla cosa Form di cui ho già parlato.

1 Mi Piace