Experiência do usuário para usuários importados?

Estou pensando em importar cerca de 600 endereços de e-mail de uma lista de distribuição para o Discourse, com o objetivo de configurar automaticamente todos para acompanhar a categoria Announcements, que essencialmente cumprirá a função principal da lista de e-mail.

Entendo que, como parte do processo de importação, nós (sei que há scripts envolvidos e precisarei que meu desenvolvedor faça isso) podemos forçar todos os usuários importados a estar acompanhando a categoria Announcements, de modo que eles receberão e-mails para cada postagem (a menos que parem de acompanhá-la manualmente). Isso é verdade?

O que está menos claro para mim é qual será a experiência do usuário para os usuários importados. Eles terão cada um uma conta, mas presumo que não poderão fazer login até definir uma senha, e na primeira vez que visitarem o site, o Discourse solicitará que façam isso. Correto?

E se eles nunca definirem uma senha? (A maioria não percebe que agora possui contas no Mailman; houve resistência em ter que ter outra conta. Suspiro.) Se alguém nunca visitar o site e nunca fizer login, ainda receberá e-mails sobre tópicos e postagens na categoria Announcements?

Para quem já fez isso, que tipo de problemas de suporte vocês tiveram que lidar após a importação?

Obrigado!

Se você já tem um relacionamento transacional com essas pessoas, ou seja, está migrando-as para uma nova plataforma, existem maneiras de simplificar o processo de criação de usuários. Isso é mais indicado para administradores avançados, mas aqui estão algumas ideias de linha de comando (rails console) que podem funcionar:

u = User.new({username: 'testuser', email: 'testuser@example.com', name: 'Test User', trust_level: 2, password: SecureRandom.hex});
u.activate();
t = u.email_tokens.create(email: u.email);
Jobs.enqueue(:critical_user_email, type: :account_created, user_id: u.id, email_token: t.token);

Na minha experiência, isso criará o novo usuário com os detalhes fornecidos, ativará a conta para que ela possa receber e-mails e, em seguida, enviará um e-mail informando que uma conta foi criada para eles no seu site Discourse, fornecendo um link para configurar a conta:

Uma nova conta foi criada para você em Nome do Seu Site Discourse

Clique no link abaixo para escolher uma senha para sua nova conta:
https://discourse.example.org/u/password-reset/(randomdigits)

Você precisará configurar sua categoria de Anúncios para que todos os novos usuários estejam automaticamente acompanhando-a, o que é uma configuração do site.

Obrigado! Isso parece relativamente simples (e sim, todos esses são usuários de uma lista que eu administro e estou tentando migrar do Mailman).

Você sabe o que acontecerá se eles nunca configurarem sua conta, no que diz respeito ao recebimento de e-mails na categoria “Anúncios de Observação Automática”?

Há pessoas mais inteligentes que eu neste tópico, mas acho que, como você executa o comando u.activate();, elas já estão totalmente ativadas. A única coisa que fazem por meio do e-mail é alterar a senha da string aleatória inicial que ninguém conhece.

Existe a ideia de que usuários inativos eventualmente param de receber e-mails, mas não tenho certeza se isso se aplicaria aqui para categorias “observadas automaticamente”. Eu realmente só pensei nisso em relação aos destinatários do resumo/digesto. Espero que alguém possa complementar essa resposta.

Outra pergunta rápida sobre importações. Você sabe o que acontece se tentar importar um endereço de e-mail que já está atribuído a um usuário no sistema? Ele será simplesmente ignorado?

:man_shrugging:

Eu apenas testaria com um endereço descartável para descobrir.

Eu temia que você dissesse isso. A abordagem do console do Rails provou ser muito além das minhas capacidades de administrador (o Rails nem estava instalado no nosso VPS, e eu não conseguia ver como importaria 600 endereços dessa maneira de qualquer forma), então estou tendo que chamar nosso desenvolvedor. Vou pedir para ele verificar.

Você pode acessar o console do Rails no seu site Discourse auto-hospedado da seguinte forma:

ssh ....
cd /var/discourse
./launcher enter app
rails c

Obrigado! Tive que adicionar sudo su antes da terceira linha para obter permissão de conexão com o daemon do Docker, mas depois funcionou e consegui executar as linhas no script do Rails acima e criar um usuário de teste. Uhu!

Mas como esse script seria expandido para funcionar com uma lista de 600 endereços de e-mail? Executá-lo 600 vezes parece… cansativo. :slight_smile:

Você geraria um script que tivesse essa linha para os 600 usuários ou inseriria os dados em alguma estrutura de dados e iteraria sobre ela.

Como ninguém aqui tinha experiência com Ruby, optamos por criar um arquivo grande contendo todos os comandos e colá-los no console do Rails. Parece funcionar, exceto pelo fato de que agora há quatro erros no Sidekiq (dos primeiros 50 imports de teste), e eu não sei o que fazer com eles ou o que significam. Os usuários foram criados? Eles apenas não receberam o e-mail de boas-vindas? Como as retentativas estão falhando, devo simplesmente excluir esses erros e seguir em frente?

Seria bom você descobrir isso.

É difícil para mim imaginar como o user_id seria inválido.

Provavelmente sim, mas você vai querer descobrir quais usuários falharam e por quê. Houve erros quando você colou os comandos? Se não conseguir descobrir isso, precisará examinar os usuários que existem e aqueles que você espera que existam, para ver qual é a diferença.

Se você não tem uma maneira fácil de rolar para trás através das informações, deve trabalhar em lotes menores para que possa verificar o progresso deles com mais facilidade.

Não fui notificado sobre isso até bastante tempo depois, então não havia como voltar atrás. É possível que esses erros estejam ocorrendo quando um endereço de e-mail importado já existe no sistema — posso testar isso. Todos os usuários que eu esperava que tivessem sido criados, foram.

Mas o que não consigo entender é se há alguma conexão entre as informações nesta captura de tela e qualquer coisa que eu possa consultar no Discourse. Os email_tokens são algo que pode ser vinculado a outras informações?

Parece que vou continuar fazendo isso em pequenos lotes e ver se consigo associar um erro a uma dessas mensagens.

Acontece que esses erros eram gerados toda vez que havia um erro na importação, como nomes de usuário com mais de 20 caracteres, dois caracteres especiais seguidos em um nome de usuário ou, possivelmente, o e-mail já estar em uso (observei resultados inconsistentes com esse último). Eu apenas corrigi cada problema e segui em frente, e excluí todos os erros do Sidekiq no final.