Encuestas de Discourse

|||
-|-|-|
:discourse2: | Resumen | El plugin Discourse Surveys te permite crear encuestas directamente en las publicaciones de tu foro de Discourse utilizando una sintaxis Markdown sencilla.
:hammer_and_wrench: | Enlace al Repositorio | https://github.com/discourse/discourse-surveys
:open_book: | Guía de Instalación | Cómo instalar plugins en Discourse

El plugin Discourse Surveys te permite crear encuestas directamente en las publicaciones de tu foro de Discourse utilizando una sintaxis Markdown sencilla. El plugin actualmente soporta una variedad de tipos de preguntas como botones de radio, casillas de verificación, menús desplegables, entradas numéricas, áreas de texto, calificaciones con estrellas y calificaciones de pulgar arriba/abajo.

Markdown Básico de Encuesta

Aquí tienes un ejemplo básico de Markdown de encuesta que incluye todos los campos disponibles:

[survey name="awesome-survey-thumbs" title="Encuesta Increíble"]

[radio question="Elige una opción:"]
- gato
- perro
[/radio]

[checkbox question="Elige varias opciones:"]
- rojo
- azul
- verde
[/checkbox]

[dropdown question="Género:"]
- Masculino
- Femenino
[/dropdown]

[number question="Califica esta encuesta del 1 al 10:"]
[/number]

[textarea question="¿Cuál es tu opinión sobre xyz?" required="false"]
[/textarea]

[star question="¿Cómo calificarías la experiencia general?"]
[/star]

[thumbs question="¿Quedaste satisfecho con nuestros servicios?"]
[/thumbs]

[/survey]

Renderizado de Encuesta

A continuación, se muestra un ejemplo de cómo se renderiza el Markdown anterior en Discourse:

Resultados de la Encuesta

Actualmente, este plugin no tiene ninguna interfaz de usuario backend para ver los resultados de la encuesta directamente. En su lugar, puedes usar consultas de Data Explorer para obtener y analizar las respuestas de la encuesta. Aquí tienes un ejemplo de consulta:

-- [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

Alcance Futuro

El plugin tiene potencial para muchas mejoras. Siéntete libre de unirte a la discusión y enviar pull requests en el repositorio del plugin.

28 Me gusta

¿Así que los usuarios no pueden ver los resultados (a menos que tengan derecho a usar la consulta) y esto es totalmente para administradores/personal de apoyo?

3 Me gusta

Sí, es correcto.

7 Me gusta

No parece muy práctico :cry:

3 Me gusta

Necesita una opción para publicar los resultados de la encuesta. De lo contrario, es mejor usar varias encuestas.

3 Me gusta

Hola

La siguiente muestra de Markdown se renderiza en un nuevo Tema como se muestra a continuación. Mi Discourse está actualizado a la última versión.

¿Cuál podría ser el problema?

Saludos

Hola @ppcole,

Lo anterior es lo que se muestra en la vista previa del editor al crear la encuesta. Una vez que crees el tema, se mostrará correctamente como se espera.

Gracias Arpit. Funcionó. Esperando mejoras.

1 me gusta

¿Puedo saber si ustedes están trabajando en esto pero sin prioridad real?

Sería genial que esto siguiera desarrollándose, tiene un gran potencial.

Descubrí que la SQL anterior extraía los resultados, pero no en un formato fácil de trabajar; básicamente, requeriría una tonelada de transformación a nivel de hoja de cálculo para permitir un análisis útil.

Sin embargo, con un poco de ayuda de IA generativa, pude producir una consulta de Data Explorer muy buena. Debido a algunas limitaciones de Data Explorer, no es posible hacerla lo suficientemente dinámica como para hacer frente a una variedad de encuestas; básicamente, necesita una consulta a medida por encuesta.

Afortunadamente, la IA generativa puede hacer que eso sea bastante sencillo. Aquí hay un ejemplo de prompt que probablemente funcionará en la mayoría de los servicios de IA generativa (si no tiene el plugin de IA activo): simplemente ingrese su markdown de encuesta y debería estar listo:

Prompt de IA generativa para producir una consulta SQL personalizada para una encuesta específica

Tengo una encuesta definida en formato markdown y necesito una consulta SQL para extraer los resultados de la encuesta de una base de datos de Discourse utilizando el plugin Data Explorer. La encuesta incluye varios tipos de preguntas como radio, desplegable, estrella, casilla de verificación, área de texto, pulgares y número. Quiero que la consulta genere resultados con cada usuario en una sola fila y cada pregunta en su propia columna. Para las preguntas de casilla de verificación, las respuestas múltiples deben concatenarse en una sola cadena.

Aquí está el markdown de la encuesta:

Pega aquí tu markdown de encuesta

Aquí está la consulta original utilizada para obtener los resultados de la encuesta:

-- [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

Por favor, genere una consulta SQL que:

  • Codifique de forma fija el nombre de la encuesta.
  • Utilice agregación condicional para pivotar los datos, con cada pregunta como una columna.
  • Utilice STRING_AGG para las preguntas de casilla de verificación para manejar respuestas múltiples.
  • Asegure que la salida se agrupe por user_id y se ordene por user_id.
  • Esté formateada para facilitar la lectura e incluya comentarios que expliquen la lógica cuando sea necesario.

Guía adicional para el plugin Data Explorer:

  • La consulta debe ser compatible con el plugin Discourse Data Explorer, lo que significa que no debe terminar con un punto y coma.
  • Utilice nombres de columna como user_id para aprovechar las funciones de enlace automático dentro de Data Explorer.
  • Evite el uso de SQL dinámico, ya que el plugin no lo admite.
  • Asegúrese de que la consulta sea eficiente y esté optimizada para el rendimiento, ya que puede ejecutarse en grandes conjuntos de datos.
7 Me gusta

Este es un excelente pequeño plugin que tiene sorprendentemente muchas funciones. Gracias por crearlo.

@nathank gran trabajo en la guía para construir rápidamente consultas de resultados.

4 Me gusta

¡Lo instalé en mi sitio autoalojado para probarlo, y es realmente agradable!

Me doy cuenta de que esto es un anatema para el discurso, pero sería útil si fuera posible crear encuestas que se puedan completar de forma anónima, sin iniciar sesión. O al menos anonimizar los resultados para que no se asocien con usuarios específicos.

Y, por supuesto, sí, la capacidad de ver los resultados como se puede hacer con las encuestas sin tener que recurrir al explorador de datos sería fantástica.

4 Me gusta

Sí, me encontré con el mismo problema. Espero que haya una solución.

3 Me gusta