Plugin de Lembretes Resolvido

|||
-|-|-|
:discourse2: | Resumo | O Solved Reminders Plugin estende a funcionalidade do Solved plugin oferecendo recursos adicionais de lembrete para tópicos resolvidos.
:hammer_and_wrench: | Link do Repositório | \u003chttps://github.com/discourse/discourse-solved-reminders-plugin\u003e
:open_book: | Guia de Instalação | Como instalar plugins no Discourse

\u003e :warning: Observe que este plugin está em desenvolvimento ativo e ainda não está totalmente completo.
O Solved Reminders Plugin estende a funcionalidade do Discourse Solved Plugin adicionando recursos de lembrete e notificação para tópicos que exigem encerramento. Este plugin não apenas ajuda a manter o gerenciamento eficiente de tópicos, incentivando os usuários a marcarem os tópicos como resolvidos, mas também engaja os usuários por meio de mensagens de parabéns.

Funcionalidades

  • Lembretes Automáticos: Envia notificações aos usuários, solicitando que revisitem e marquem seus tópicos como resolvidos.
  • Mensagens de Engajamento: Parabeniza os usuários que resolveram tópicos com sucesso e sugere tópicos adicionais nos quais eles podem ajudar a resolver.
  • Integração Perfeita: Funciona em conjunto com o Discourse Solved plugin para garantir uma experiência de usuário tranquila.

Instalação

Para instalar o Solved Reminders Plugin, siga o processo geral de instalação de plugins descrito no guia Discourse Meta:

  1. Edite a configuração do seu container: Adicione o link do repositório do plugin ao seu arquivo app.yml na seção hooks.
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
  1. Reconstrua o Container do Discourse: Aplique o plugin reconstruindo sua aplicação.
./launcher rebuild app

Configuração

Após a instalação, você pode ajustar as configurações do plugin através do painel de administração do Discourse. Considere ajustar:

Uso

Uma vez configurado, o plugin funcionará automaticamente com base nas configurações definidas pelo administrador. Ele participa ativamente para garantir que os tópicos cheguem à resolução, solicitando aos usuários relevantes lembretes e mensagens.

PM enviado ao usuário para lembrá-lo de marcar uma postagem como solução:

PM enviado ao usuário que marcou a postagem como solução:

Os usuários podem desativar o PM para recomendar tópicos semelhantes para marcar como solução em suas preferências:

Os administradores podem ajustar as configurações conforme necessário para atender às necessidades da comunidade.

Personalizando o Texto da Mensagem

A mensagem de lembrete que é enviada aos usuários pode ser encontrada na página Aparência → Texto do Site do seu site em mark_as_solution.message.

Relatórios e Análise de Dados

Este plugin não adiciona nenhuma tabela de banco de dados específica ao Discourse, no entanto, você pode usar este plugin em combinação com o plugin Data Explorer para rastrear e analisar a eficácia de suas mensagens de lembrete.

Abaixo estão duas consultas SQL de exemplo do Data Explorer que você poderia usar com este plugin.

Contagem de Mensagens de Lembrete de Solução

Esta consulta fornece estatísticas agregadas mensais sobre as mensagens de Lembrete de Solução. Ela:

  • Identifica mensagens privadas contendo o texto “Houve uma resposta em um tópico que você postou”
  • Agrupa dados por mês e calcula:
    • Número de mensagens de lembrete enviadas
    • Número total de usuários que receberam esses lembretes
    • Número de usuários que leram esses lembretes
    • Porcentagem de taxa de leitura (leitores/destinatários)
  • Os resultados mostram tendências mensais na atividade e eficácia das mensagens de lembrete
Detalhes SQL
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %Houve uma resposta em um tópico que você postou%

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

Mensagens Individuais de Lembrete de Solução

Esta consulta fornece dados detalhados em nível individual para cada usuário que recebeu uma mensagem de lembrete. Ela:

  • Identifica mensagens privadas contendo o texto “Houve uma resposta em um tópico que você postou”
  • Lista cada destinatário individual com:
    • Informações do usuário (ID, nome de usuário, nome, e-mail)
    • Detalhes da mensagem (título, link)
    • Se eles leram a mensagem (VERDADEIRO/FALSO)
    • Quando eles a leram (se aplicável)
    • Quantos segundos eles passaram visualizando-a
  • Os resultados são ordenados por data de envio e nome de usuário, mostrando exatamente quem recebeu e leu cada mensagem
Detalhes SQL
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %Houve uma resposta em um tópico que você postou%

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,  -- Renderiza como link para o usuário
  u.username,
  u.name,
  ue.email,
  r.topic_id,       -- Renderiza como link para o tópico
  r.message_title,
  -- Link para a mensagem (construído manualmente para referência)
  '/t/' || r.message_slug || '/' || r.topic_id AS message_link,
  r.sent_at,
  -- Verifica se o usuário leu a mensagem
  CASE
    WHEN tu.last_read_post_number > 0 THEN TRUE
    ELSE FALSE
  END AS message_read,
  -- Quando eles leram (se leram)
  CASE
    WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at
    ELSE NULL
  END AS read_at,
  -- Tempo gasto visualizando (em 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
  -- Exclui o remetente (sistema/bot) da lista de destinatários
  tu.user_id != r.sender_id
ORDER BY
  r.sent_at DESC,
  u.username
15 curtidas

O PM congratulatório poderia declarar o título do tópico em seu título? Se o usuário obtiver várias Soluções ao mesmo tempo, pode ser confuso para o usuário se ele não souber a qual Solução o PM está se referindo.
Poderia haver uma configuração para controlar após n postagens o lembrete será enviado?

3 curtidas

Só para verificar duas coisas:

  1. Ele envia mensagens apenas para os autores de tópicos que receberam pelo menos 1 resposta?
  2. Ele funciona em conjunto com a configuração do plugin de solução por categoria, significando que, se você quiser desativá-lo para algumas categorias, deverá desativar o alternador do plugin de solução em todo o site e, em vez disso, ativá-lo para as categorias onde deseja usá-lo?
3 curtidas

Os tópicos sugeridos são tópicos não resolvidos aleatórios ou conversas relacionadas ao tópico original resolvido? Se estiverem relacionados, como são identificados?

1 curtida

2 posts foram divididos em um novo tópico: Como transformar código-fonte em um plugin

Eu poderia ver isso sendo extremamente útil, especialmente em nosso fórum, onde as pessoas tendem a esquecer de marcar uma resposta como solução após receber uma, e então nossa equipe teria que entrar e lembrá-las manualmente :weary:

Algumas outras perguntas que tenho são:

  • Podemos configurar quem envia a mensagem privada de lembrete, ou é sempre o Discobot por padrão?
  • Podemos também ajustar os textos das mensagens privadas, se quiséssemos?

Obrigado

1 curtida

Obrigado por este plugin, muito útil!

Pelo que entendi, o notificador para isso só roda a cada 14 dias. Isso significa que quantos tópicos eu iniciei em 14 dias (e não marquei como solução) gerarão DM + e-mail.

Acabei de rodá-lo manualmente, 5 dias após instalar o plugin e recebi 7 DMs (e e-mails):

Isso parece um pouco exagerado. Sei que sou um pouco atípico como o administrador que ativamente cria muitos tópicos no momento, mas muitos de nossos usuários criam muitos tópicos (oba).

Seria possível criar uma opção onde essa notificação seja combinada em 1? Então “Marcar 7 de suas postagens como solução” em 1 mensagem em vez de uma mensagem por thread?

4 curtidas