Sondaggi Discourse

:discourse2: Riepilogo Il plugin Discourse Surveys ti consente di creare sondaggi direttamente nei tuoi post del forum Discourse utilizzando una semplice sintassi Markdown.
:hammer_and_wrench: Link al Repository https://github.com/discourse/discourse-surveys
:open_book: Guida all’Installazione Come installare i plugin in Discourse

Il Plugin Discourse Surveys ti consente di creare sondaggi direttamente nei tuoi post del forum Discourse utilizzando una semplice sintassi Markdown. Il plugin attualmente supporta una varietà di tipi di domande come pulsanti di opzione (radio button), caselle di controllo (checkbox), menu a tendina (dropdown), input numerici, aree di testo (text area), valutazioni a stelle e valutazioni pollice su/giù.

Funzionalità

  • 7 Diversi Tipi di Campo: Pulsanti di opzione, caselle di controllo, menu a tendina, aree di testo, selezione numerica, valutazioni a stelle e pollice su/giù

  • Campi Obbligatori/Opzionali: Segna i campi come obbligatori per garantirne la compilazione

  • Supporto Emoji: Utilizza emoji nelle opzioni del tuo sondaggio

  • Supporto HTML: Formattazione di testo ricco in domande e opzioni

  • Autenticazione Utente: Richieste di accesso automatiche per utenti anonimi

  • Tracciamento Risposte: Impedisce invii duplicati dallo stesso utente

  • Consapevole dei Permessi: Rispetta i permessi di topic e categoria

  • Responsive per Mobile: Funziona perfettamente su tutti i dispositivi

Utilizzo

Struttura Base del Sondaggio

Tutti i sondaggi devono essere racchiusi tra i tag [survey]:


[survey name="my-survey" title="Customer Feedback Survey"]

<!-- I campi del sondaggio vanno qui -->

[/survey]

Attributi del Sondaggio

  • name: Identificatore univoco per il sondaggio (predefinito è “survey”)

  • title: Titolo opzionale visualizzato in cima al sondaggio

  • public: Imposta la visibilità (funzionalità futura)

  • status: Stato del sondaggio (funzionalità futura)

Tipi di Campo

1. Pulsanti di Opzione (Scelta Singola)


[radio question="What is your favorite color?"]

- Red

- Blue

- Green

- Yellow

[/radio]

2. Caselle di Controllo (Scelta Multipla)


[checkbox question="Which features do you use? (Select all that apply)"]

- Email notifications

- Mobile app

- Desktop notifications

- API access

[/checkbox]

3. Selezione a Tendina (Dropdown)


[dropdown question="What is your age group?"]

- Under 18

- 18-24

- 25-34

- 35-44

- 45-54

- 55+

[/dropdown]

4. Area di Testo (Testo Lungo)


[textarea question="Please provide detailed feedback:" required="false"]

[/textarea]

5. Selezione Numerica


[number question="Rate this feature from 1-10:" min="1" max="10"]

[/number]

6. Valutazione a Stelle


[star question="How would you rate your overall experience?"]

[/star]

7. Pollice Su/Giù


[thumbs question="Would you recommend this to others?"]

[/thumbs]

Attributi dei Campi

Tutti i tipi di campo supportano questi attributi:

  • question: Il testo della domanda (obbligatorio)

  • required: Se il campo deve essere compilato (true/false, predefinito è true)

  • min: Valore minimo per i campi numerici

  • max: Valore massimo per i campi numerici

Esempio Completo

Markdown Base del Sondaggio

Ecco un esempio base di Markdown per il sondaggio che include tutti i campi disponibili:

[survey name="awesome-survey-thumbs" title="Awesome Survey"]

[radio question="Choose any one option:"]
- cat
- dog
[/radio]

[checkbox question="Choose multiple options:"]
- red
- blue
- green
[/checkbox]

[dropdown question="Gender:"]
- Male
- Female
[/dropdown]

[number question="Rate this survey from 1 to 10:"]
[/number]

[textarea question="What is your feedback about xyz?" required="false"]
[/textarea]

[star question="How would you rate overall experience?"]
[/star]

[thumbs question="Were you satisfied with our services?"]
[/thumbs]

[/survey]

Rendering del Sondaggio

Di seguito è riportato un esempio di come viene renderizzato il Markdown sopra in Discourse:

Utilizzo Avanzato

Utilizzo di Emoji nelle Opzioni


[radio question="Choose your favorite animal:"]

- 🐈 Cat

- 🐶 Dog

- 🐦 Bird

- 🐠 Fish

[/radio]

Formattazione HTML nelle Domande


[radio question="Which <strong>programming language</strong> do you prefer?"]

- JavaScript

- Python

- Ruby

- Go

[/radio]

Campi Obbligatori e Opzionali Misti


[survey name="mixed-survey"]

[radio question="What is your role?" required="true"]

- Developer

- Designer

- Manager

- Other

[/radio]

[textarea question="Any additional thoughts?" required="false"]

[/textarea]

[/survey]

Risultati del Sondaggio

Attualmente, questo plugin non dispone di un’interfaccia utente backend per visualizzare direttamente i risultati del sondaggio. Invece, puoi fare affidamento sulle query di Data Explorer per recuperare e analizzare le risposte al sondaggio. Ecco una query di esempio:

-- [params]
-- text :survey_name = survey

SELECT
  s.id,
  s.name,
  s.post_id,
  sf.question,
  COALESCE(sr.value, sfo.html) AS value,
  sr.user_id,
  sr.created_at AS responded_at
FROM
  surveys s
  JOIN survey_fields sf ON sf.survey_id = s.id
  JOIN survey_responses sr ON sr.survey_field_id = sf.id
  LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE
  s.name = :survey_name
ORDER BY
  s.id DESC

Permessi e Sicurezza

  • Accesso Richiesto: Gli utenti anonimi devono accedere prima di inviare risposte

  • Una Risposta per Utente: Ogni utente può inviare una sola risposta per sondaggio

  • Permessi Topic: Gli utenti devono avere accesso in lettura al topic per visualizzare i sondaggi

  • Permessi di Pubblicazione: Gli utenti devono avere i permessi di pubblicazione nel topic per inviare risposte

  • Topic Archiviati: I sondaggi nei topic archiviati non possono accettare nuove risposte

  • Post Eliminati: I sondaggi nei post eliminati non sono più accessibili

Limitazioni

  • È consentito un solo sondaggio per post

  • La struttura del sondaggio non può essere modificata dopo aver ricevuto risposte

  • Tutte le domande dei campi del sondaggio devono essere univoche all’interno di un singolo sondaggio

  • Le domande dei campi del sondaggio non possono essere vuote

Dettagli Tecnici

Schema del Database

Il plugin crea quattro tabelle principali del database:

  • surveys: Registrazioni principali dei sondaggi

  • survey_fields: Campi individuali all’interno dei sondaggi

  • survey_field_options: Opzioni per i campi basati sulla scelta

  • survey_responses: Risposte degli utenti ai campi del sondaggio

Stile

Il plugin include CSS responsive che si adatta al tuo tema. È possibile aggiungere uno stile personalizzato selezionando queste classi CSS:

  • .survey - Contenitore principale del sondaggio

  • .survey-field - Involucro del campo individuale

  • .field-[type] - Contenitori specifici per tipo di campo

  • .submit-response - Pulsante di invio

32 Mi Piace

Quindi gli utenti non possono vedere i risultati (a meno che non abbiano i diritti per utilizzare la query) e questo è totalmente per amministratori/personale di back-office?

3 Mi Piace

Sì, è corretto.

7 Mi Piace

Non sembra molto pratico :pianto:

3 Mi Piace

Necessaria opzione per pubblicare i risultati del sondaggio. Altrimenti è meglio usare più sondaggi.

3 Mi Piace

Ciao

Il Markdown di esempio viene visualizzato in un nuovo argomento come di seguito. Il mio Discourse è aggiornato all’ultima versione.

Quale potrebbe essere il problema?

Saluti

Ciao @ppcole,

Quanto sopra è ciò che viene mostrato nell’anteprima della composizione durante la creazione del sondaggio. Una volta creato l’argomento, verrà visualizzato correttamente come previsto.

Grazie Arpit. Ha funzionato. Attendo miglioramenti.

1 Mi Piace

Posso sapere se ci state lavorando ma senza reale priorità?

Sarebbe fantastico se questo progetto continuasse a essere sviluppato, ha un potenziale enorme.

Ho scoperto che la SQL sopra estraeva i risultati, ma non era in un formato facile da usare; in pratica richiederebbe una tonnellata di trasformazioni a livello di foglio di calcolo per consentire un’analisi utile.

Tuttavia, con un po’ di aiuto dall’IA generativa, sono stato in grado di produrre una query molto valida per Data Explorer. A causa di alcune limitazioni di Data Explorer, non è possibile renderla abbastanza dinamica da gestire una varietà di sondaggi; in pratica è necessaria una query su misura per ogni sondaggio.

Fortunatamente, l’IA generativa può renderlo piuttosto semplice. Ecco un prompt di esempio che probabilmente funzionerà nella maggior parte dei servizi di IA generativa (se non hai il plugin AI attivo) - basta inserire il tuo markdown del sondaggio e dovresti essere a posto:

Prompt IA Generativa per Produrre una Query SQL Personalizzata per un Sondaggio Specifico

Ho un sondaggio definito in formato markdown e ho bisogno di una query SQL per estrarre i risultati del sondaggio da un database Discourse utilizzando il plugin Data Explorer. Il sondaggio include vari tipi di domande come radio, dropdown, stella, checkbox, textarea, pollici e numero. Voglio che la query restituisca i risultati con ogni utente che ha una singola riga e ogni domanda che ha la propria colonna. Per le domande a scelta multipla, le risposte multiple devono essere concatenate in un’unica stringa.

Ecco il markdown del sondaggio:

Incolla qui il tuo markdown del sondaggio

Ecco la query originale utilizzata per ottenere i risultati del sondaggio:

-- [params]
-- text :survey_name = survey

SELECT s.id, s.name, s.post_id, sf.question, COALESCE(sr.value, sfo.html) AS value, sr.user_id, sr.created_at as responded_at
FROM surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE s.name = :survey_name
ORDER BY s.id DESC

Si prega di generare una query SQL che:

  • Codifichi in modo fisso il nome del sondaggio.
  • Utilizzi l’aggregazione condizionale per ruotare i dati, con ogni domanda come colonna.
  • Utilizzi STRING_AGG per le domande a scelta multipla per gestire risposte multiple.
  • Assicuri che l’output sia raggruppato per user_id e ordinato per user_id.
  • Sia formattato per leggibilità e includa commenti che spieghino la logica dove necessario.

Guida aggiuntiva per il plugin Data Explorer:

  • La query deve essere compatibile con il plugin Discourse Data Explorer, il che significa che non deve terminare con un punto e virgola.
  • Utilizza nomi di colonna come user_id per sfruttare le funzionalità di collegamento automatico all’interno di Data Explorer.
  • Evita l’uso di SQL dinamico, poiché il plugin non lo supporta.
  • Assicurati che la query sia efficiente e ottimizzata per le prestazioni, poiché potrebbe essere eseguita su grandi set di dati.
8 Mi Piace

Questo è un piccolo plugin eccellente che offre sorprendentemente molte funzionalità. Grazie per averlo creato.

@nathank ottimo lavoro sulla guida per costruire rapidamente query di risultati.

4 Mi Piace

L’ho installato sul mio sito self-hosted per provarlo, ed è davvero carino!

Mi rendo conto che questo è un anatema per Discourse, ma sarebbe utile se fosse possibile creare sondaggi che possano essere completati in modo anonimo, senza effettuare l’accesso. O almeno anonimizzare i risultati in modo che non siano associati a utenti specifici.

E naturalmente sì, la possibilità di visualizzare i risultati come si fa con i sondaggi senza dover ricorrere a Data Explorer sarebbe fantastica.

5 Mi Piace

Sì, ho riscontrato lo stesso problema. Speriamo ci sia una soluzione.

3 Mi Piace