| Resumen | El complemento Solved Reminders Plugin amplía la funcionalidad del complemento Solved ofreciendo capacidades adicionales de recordatorio para temas resueltos. | |
| Enlace al repositorio | https://github.com/discourse/discourse-solved-reminders-plugin | |
| Guía de instalación | Cómo instalar complementos en Discourse |
Ten en cuenta que este complemento está en desarrollo activo y aún no está completamente terminado.
El complemento Solved Reminders amplía la funcionalidad del complemento Discourse Solved añadiendo capacidades de recordatorio y notificación para temas que requieren cierre. Este complemento no solo ayuda a mantener una gestión eficiente de temas al fomentar que los usuarios marquen los temas como resueltos, sino que también involucra a los usuarios mediante mensajes de felicitación.
Características
- Recordatorios automatizados: Envía notificaciones a los usuarios, instándolos a volver a visitar y marcar sus temas como resueltos.
- Mensajes de compromiso: Felicita a los usuarios que han resuelto temas con éxito y sugiere temas adicionales que podrían ayudar a resolver.
- Integración perfecta: Funciona junto con el complemento Discourse Solved para garantizar una experiencia de usuario fluida.
Instalación
Para instalar el complemento Solved Reminders, sigue el proceso general de instalación de complementos descrito en la guía de Discourse Meta:
- Edita la configuración de tu contenedor: Agrega el enlace al repositorio del complemento a tu archivo
app.ymlen la secciónhooks.
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
- Reconstruye el contenedor de Discourse: Aplica el complemento reconstruyendo tu aplicación.
./launcher rebuild app
Configuración
Después de la instalación, puedes ajustar los ajustes del complemento a través del panel de administración de Discourse. Considera ajustar:
Uso
Una vez configurado, el complemento funcionará automáticamente según los ajustes configurados por el administrador. Participa activamente en asegurar que los temas lleguen a su resolución instando a los usuarios relevantes con recordatorios y mensajes.
MP enviado al usuario para recordarle que marque una publicación como solución:
MP enviado al usuario que marcó la publicación como solución:
Los usuarios pueden desactivar el MP para recomendar temas similares para marcar como solución desde sus preferencias:
Los administradores pueden ajustar las configuraciones según sea necesario para satisfacer las necesidades de la comunidad.
Personalización del texto del mensaje
El mensaje de recordatorio que se envía a los usuarios se puede encontrar en la página Apariencia → Texto del sitio de tu sitio bajo mark_as_solution.message.
Informes y análisis de datos
Este complemento no agrega tablas de bases de datos específicas a Discourse; sin embargo, puedes usar este complemento en combinación con el complemento Data Explorer para rastrear y analizar la efectividad de tus mensajes de recordatorio.
A continuación se muestran dos consultas SQL de ejemplo de Data Explorer que podrías usar con este complemento.
Conteos de mensajes de recordatorio resuelto
Esta consulta proporciona estadísticas agregadas mensuales sobre los mensajes de recordatorio resuelto. Hace lo siguiente:
- Identifica mensajes privados que contienen el texto «Ha habido una respuesta en el tema que publicaste»
- Agrupa los datos por mes y calcula:
- Número de mensajes de recordatorio enviados
- Número total de usuarios que recibieron estos recordatorios
- Número de usuarios que leyeron estos recordatorios
- Porcentaje de tasa de lectura (lectores/receptores)
- Los resultados muestran tendencias mensuales en la actividad y efectividad de los mensajes de recordatorio
Detalles de SQL
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %Ha habido una respuesta en el tema que publicaste%
WITH reminder_pms AS (
SELECT
t.id AS topic_id,
t.created_at,
p.id AS post_id,
p.user_id AS sender_id,
DATE_TRUNC('month', t.created_at) AS month
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE
t.archetype = 'private_message'
AND t.created_at BETWEEN :start_date AND :end_date
AND p.raw LIKE :reminder_text
),
recipient_stats AS (
SELECT
r.topic_id,
r.month,
COUNT(DISTINCT tu.user_id) AS total_recipients,
COUNT(DISTINCT CASE WHEN tu.last_read_post_number > 0 THEN tu.user_id END) AS read_recipients
FROM reminder_pms r
JOIN topic_users tu ON tu.topic_id = r.topic_id AND tu.user_id != r.sender_id
GROUP BY r.topic_id, r.month
)
SELECT
TO_CHAR(month, 'YYYY-MM') AS month,
COUNT(DISTINCT topic_id) AS reminder_pms_sent,
SUM(total_recipients) AS total_users_received,
SUM(read_recipients) AS users_who_read,
ROUND(100.0 * SUM(read_recipients) / NULLIF(SUM(total_recipients), 0), 2) AS read_rate_percentage
FROM recipient_stats
GROUP BY month
ORDER BY month
Mensajes individuales de recordatorio resuelto
Esta consulta proporciona datos detallados a nivel individual para cada usuario que recibió un mensaje de recordatorio. Hace lo siguiente:
- Identifica mensajes privados que contienen el texto «Ha habido una respuesta en el tema que publicaste»
- Enumera a cada receptor individual con:
- Información del usuario (ID, nombre de usuario, nombre, correo electrónico)
- Detalles del mensaje (título, enlace)
- Si leyeron el mensaje (VERDADERO/FALSO)
- Cuándo lo leyeron (si corresponde)
- Cuántos segundos pasaron viéndolo
- Los resultados están ordenados por fecha de envío y nombre de usuario, mostrando exactamente quién recibió y leyó cada mensaje
Detalles de SQL
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %Ha habido una respuesta en el tema que publicaste%
WITH reminder_pms AS (
SELECT
t.id AS topic_id,
t.title AS message_title,
t.slug AS message_slug,
t.created_at AS sent_at,
p.id AS post_id,
p.user_id AS sender_id,
p.raw AS message_content
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE
t.archetype = 'private_message'
AND t.created_at BETWEEN :start_date AND :end_date
AND p.raw LIKE :reminder_text
)
SELECT
u.id AS user_id, -- Se muestra como enlace al usuario
u.username,
u.name,
ue.email,
r.topic_id, -- Se muestra como enlace al tema
r.message_title,
-- Enlace al mensaje (construido manualmente para referencia)
'/t/' || r.message_slug || '/' || r.topic_id AS message_link,
r.sent_at,
-- Verificar si el usuario leyó el mensaje
CASE
WHEN tu.last_read_post_number > 0 THEN TRUE
ELSE FALSE
END AS message_read,
-- Cuándo lo leyeron (si lo hicieron)
CASE
WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at
ELSE NULL
END AS read_at,
-- Cuánto tiempo pasó viendo (en segundos)
ROUND(tu.total_msecs_viewed / 1000.0, 1) AS time_viewed_seconds
FROM reminder_pms r
JOIN topic_users tu ON tu.topic_id = r.topic_id
JOIN users u ON u.id = tu.user_id
LEFT JOIN user_emails ue ON ue.user_id = u.id AND ue.primary = TRUE
WHERE
-- Excluir al remitente (sistema/bot) de la lista de receptores
tu.user_id != r.sender_id
ORDER BY
r.sent_at DESC,
u.username





