Plugin de recordatorios resuelto

||||\n-|-|-|\n:discourse2: | Resumen | Solved Reminders Plugin extiende la funcionalidad del Solved plugin al ofrecer capacidades adicionales de recordatorio para temas resueltos.\n:hammer_and_wrench: | Enlace al Repositorio | \u003chttps://github.com/discourse/discourse-solved-reminders-plugin\u003e\n:open_book: | Guía de Instalación | Cómo instalar plugins en Discourse\n\n[quote]\n\n:discourse2: Dado que este es un plugin #oficial mantenido por el equipo de Discourse, las solicitudes de #soporte, #errores, UX y #características se pueden realizar en las categorías correspondientes aquí en Meta, y etiquetarse con la etiqueta del plugin apropiada. Haz clic en un enlace a continuación para comenzar una. :+1: \n\n\u003ckbd\u003e [:question:\u0026nbsp;Soporte](Discourse Meta "Solicita soporte para configurar y usar Solved Reminders") \u003c/kbd\u003e \u003ckbd\u003e [:bug:\u0026nbsp;Error](Discourse Meta "Un informe de error significa que algo está roto, impidiendo el uso normal/típico del plugin") \u003c/kbd\u003e \u003ckbd\u003e [:eyes:\u0026nbsp;UX](Discourse Meta "Discusión sobre la interfaz de usuario de Solved Reminders y cómo se presentan las funciones (incluyendo elementos de lenguaje e interfaz de usuario)") \u003c/kbd\u003e \u003ckbd\u003e [:bulb:\u0026nbsp;Característica](Discourse Meta "Discusión sobre cómo se pueden mejorar o ampliar las funciones existentes de Solved Reminders y cómo funcionarían las nuevas funciones propuestas")\u003c/kbd\u003e\n\n[/quote]\n\n\u003e :warning: Ten en cuenta que este plugin está en desarrollo activo y aún no está completo.\n\nEl Solved Reminders Plugin extiende la funcionalidad del Discourse Solved Plugin al agregar capacidades de recordatorio y notificación para temas que requieren cierre. Este plugin no solo ayuda a mantener una gestión eficiente de temas al alentar a los usuarios a marcar los temas como resueltos, sino que también involucra a los usuarios a través de mensajes de felicitación.\n\n## Características\n\n* Recordatorios Automáticos: Envía notificaciones a los usuarios, instándoles a revisar y marcar sus temas como resueltos.\n* Mensajes de Interacción: Felicita a los usuarios que han resuelto temas con éxito y sugiere temas adicionales en los que podrían ayudar a resolver.\n* Integración Transparente: Funciona en conjunto con el Discourse Solved plugin para garantizar una experiencia de usuario fluida.\n\n## Instalación\n\nPara instalar el Solved Reminders Plugin, sigue el proceso general de instalación de plugins descrito en la guía de Discourse Meta:\n\n1. Edita la configuración de tu contenedor: Agrega el enlace del repositorio del plugin a tu archivo app.yml en la sección hooks.\n\n\nhooks:\n after_code:\n - exec:\n cd: $home/plugins\n cmd:\n - git clone https://github.com/discourse/discourse-solved-reminders-plugin.git\n\n\n2. Reconstruye el Contenedor de Discourse: Aplica el plugin reconstruyendo tu aplicación.\n\n\n./launcher rebuild app\n\n\n## Configuración\n\nDespués de la instalación, puedes ajustar la configuración del plugin a través del panel de administración de Discourse. Considera ajustar:\n\n

\n\n## Uso\n\nUna vez configurado, el plugin funcionará automáticamente según la configuración establecida por el administrador. Participa activamente para asegurar que los temas lleguen a una resolución, solicitando a los usuarios relevantes recordatorios y mensajes.\n\nMensaje privado enviado al usuario para recordarle que marque una publicación como solución:\n\n\n\nMensaje privado enviado al usuario que marcó la publicación como solución:\n\n\n\nLos usuarios pueden deshabilitar los mensajes privados para recomendar temas similares a marcar como solución desde sus preferencias:\n\n\n\nLos administradores pueden ajustar las configuraciones según sea necesario para satisfacer las necesidades de la comunidad.\n\n## Personalización del Texto del Mensaje\n\nEl mensaje de recordatorio que se envía a los usuarios se encuentra en la página Apariencia → Texto del Sitio de tu sitio bajo mark_as_solution.message.\n\n\n\n## Informes y Análisis de Datos\n\nEste plugin no agrega tablas de base de datos específicas a Discourse; sin embargo, puedes usar este plugin en combinación con el plugin Data Explorer para rastrear y analizar la efectividad de tus mensajes de recordatorio.\n\nA continuación, se presentan dos ejemplos de consultas SQL de Data Explorer que podrías usar con este plugin.\n\n### Conteo de Mensajes de Recordatorio de Solución\n\nEsta consulta proporciona estadísticas agregadas mensuales sobre los mensajes de Solved Reminder. \n\n* Identifica mensajes privados que contienen el texto "There has been a reply on topic you posted"\n* Agrupa los datos por mes y calcula:\n * Número de mensajes de recordatorio enviados\n * Número total de usuarios que recibieron estos recordatorios\n * Número de usuarios que leyeron estos recordatorios\n * Porcentaje de tasa de lectura (lectores/destinatarios)\n* Los resultados muestran las tendencias mensuales en la actividad y efectividad de los mensajes de recordatorio\n\n\n[details="Detalles SQL"]\n\n\nsql\n-- [params]\n-- date :start_date = 2024-01-01\n-- date :end_date = 2025-12-31\n-- text :reminder_text = %There has been a reply on topic you posted%\n\nWITH reminder_pms AS (\n SELECT \n t.id AS topic_id,\n t.created_at,\n p.id AS post_id,\n p.user_id AS sender_id,\n DATE_TRUNC('month', t.created_at) AS month\n FROM topics t\n JOIN posts p ON p.topic_id = t.id AND p.post_number = 1\n WHERE \n t.archetype = 'private_message'\n AND t.created_at BETWEEN :start_date AND :end_date\n AND p.raw LIKE :reminder_text\n),\n\nrecipient_stats AS (\n SELECT\n r.topic_id,\n r.month,\n COUNT(DISTINCT tu.user_id) AS total_recipients,\n COUNT(DISTINCT CASE WHEN tu.last_read_post_number \u003e 0 THEN tu.user_id END) AS read_recipients\n FROM reminder_pms r\n JOIN topic_users tu ON tu.topic_id = r.topic_id AND tu.user_id != r.sender_id\n GROUP BY r.topic_id, r.month\n)\n\nSELECT \n TO_CHAR(month, 'YYYY-MM') AS month,\n COUNT(DISTINCT topic_id) AS reminder_pms_sent,\n SUM(total_recipients) AS total_users_received,\n SUM(read_recipients) AS users_who_read,\n ROUND(100.0 * SUM(read_recipients) / NULLIF(SUM(total_recipients), 0), 2) AS read_rate_percentage\nFROM recipient_stats\nGROUP BY month\nORDER BY month\n\n[/details]\n\n### Mensajes Individuales de Recordatorio de Solución\n\nEsta consulta proporciona datos detallados a nivel individual para cada usuario que recibió un mensaje de recordatorio. \n\n* Identifica mensajes privados que contienen el texto "There has been a reply on topic you posted"\n* Enumera a cada destinatario individual con:\n * Información del usuario (ID, nombre de usuario, nombre, correo electrónico)\n * Detalles del mensaje (título, enlace)\n * Si leyeron el mensaje (VERDADERO/FALSO)\n * Cuándo lo leyeron (si corresponde)\n * Cuántos segundos pasaron viéndolo\n* Los resultados se ordenan por fecha de envío y nombre de usuario, mostrando exactamente quién recibió y leyó cada mensaje\n\n[details="Detalles SQL"]\n\n\nsql\n-- [params]\n-- date :start_date = 2024-01-01\n-- date :end_date = 2025-12-31\n-- text :reminder_text = %There has been a reply on topic you posted%\n\nWITH reminder_pms AS (\n SELECT \n t.id AS topic_id,\n t.title AS message_title,\n t.slug AS message_slug,\n t.created_at AS sent_at,\n p.id AS post_id,\n p.user_id AS sender_id,\n p.raw AS message_content\n FROM topics t\n JOIN posts p ON p.topic_id = t.id AND p.post_number = 1\n WHERE \n t.archetype = 'private_message'\n AND t.created_at BETWEEN :start_date AND :end_date\n AND p.raw LIKE :reminder_text\n)\n\nSELECT \n u.id AS user_id, -- Se renderiza como enlace al usuario\n u.username,\n u.name,\n ue.email,\n r.topic_id, -- Se renderiza como enlace al tema\n r.message_title,\n -- Enlace al mensaje (construido manualmente como referencia)\n '/t/' || r.message_slug || '/' || r.topic_id AS message_link,\n r.sent_at,\n -- Comprueba si el usuario ha leído el mensaje\n CASE \n WHEN tu.last_read_post_number \u003e 0 THEN TRUE\n ELSE FALSE\n END AS message_read,\n -- Cuándo lo leyó (si lo hizo)\n CASE \n WHEN tu.last_read_post_number \u003e 0 THEN tu.last_visited_at\n ELSE NULL\n END AS read_at,\n -- Tiempo dedicado a la visualización (en segundos)\n ROUND(tu.total_msecs_viewed / 1000.0, 1) AS time_viewed_seconds\nFROM reminder_pms r\nJOIN topic_users tu ON tu.topic_id = r.topic_id\nJOIN users u ON u.id = tu.user_id\nLEFT JOIN user_emails ue ON ue.user_id = u.id AND ue.primary = TRUE\nWHERE \n -- Excluye al remitente (sistema/bot) de la lista de destinatarios\n tu.user_id != r.sender_id\nORDER BY \n r.sent_at DESC,\n u.username\n\n\n[/details]",“target_locale”:“es”}

15 Me gusta

¿Podría el primer ministro felicitador indicar el título del tema en su título? Si el usuario recibe varias soluciones a la vez, podría ser confuso para el usuario si no sabe a qué solución se refiere el primer ministro.
¿Podría haber una configuración para controlar después de cuántas publicaciones se enviará el recordatorio?

3 Me gusta

Solo para verificar dos cosas:

  1. ¿Solo envía mensajes a los autores de temas que recibieron al menos una respuesta?
  2. ¿Funciona junto con la configuración del complemento de solución por categoría, lo que significa que si desea deshabilitarlo para algunas categorías, debe deshabilitar el interruptor del complemento de soluciones en todo el sitio y, en cambio, habilitarlo para las categorías donde desea usarlo?
3 Me gusta

¿Los temas sugeridos son temas aleatorios sin resolver o conversaciones relacionadas con el tema original resuelto? Si están relacionados, ¿cómo se identifican?

1 me gusta

2 publicaciones se dividieron en un nuevo tema: Cómo convertir código fuente en un plugin

Esto podría ser extremadamente útil, especialmente en nuestro foro, donde la gente tiende a olvidar marcar una respuesta como solución después de recibir una, y luego nuestro equipo tiene que recordárselo manualmente :weary:

Otras preguntas que tengo son:

  • ¿Podemos configurar quién envía el mensaje privado de recordatorio, o siempre es por defecto Discobot?
  • ¿Podemos también modificar los textos de los mensajes privados si quisiéramos?

Gracias

1 me gusta

¡Gracias por este plugin, muy útil!

Según entiendo, el notificador de esto se ejecuta solo cada 14 días. Eso significa que, independientemente de cuántos temas haya iniciado en 14 días (y no haya marcado como solución), se generarán mensajes directos + correos electrónicos.

Lo acabo de ejecutar manualmente, 5 días después de instalar el plugin y recibí 7 mensajes directos (y correos electrónicos):

Esto parece un poco excesivo. Sé que soy un caso un poco atípico como administrador que crea activamente muchos temas en este momento, pero bastantes de nuestros usuarios crean muchos temas (genial).

¿Sería posible crear una opción donde esta notificación se combine en 1? ¿Por ejemplo, “Marcar 7 de tus publicaciones como solución” en 1 mensaje en lugar de un mensaje por hilo?

4 Me gusta