Experiencia de usuario para usuarios importados?

Estoy considerando importar alrededor de 600 direcciones de correo electrónico de una lista de distribución a Discourse, con el objetivo de configurar automáticamente a todos para que observen la categoría Announcements, la cual servirá esencialmente para replicar la función principal de la lista de correo.

Entiendo que, como parte del proceso de importación, nosotros (sé que hay scripts involucrados y necesitaré que mi desarrollador lo haga) podemos obligar a que todas las personas importadas estén observando la categoría Announcements, de modo que definitivamente recibirán correos electrónicos por cada publicación (a menos que dejen de observarla manualmente). ¿Es eso cierto?

Lo que me resulta menos claro es cómo será la experiencia de usuario para los usuarios importados. Cada uno tendrá una cuenta, pero supongo que no podrán iniciar sesión hasta que establezcan una contraseña, y la primera vez que visiten el sitio, Discourse les pedirá que lo hagan. ¿Correcto?

¿Y qué pasa si nunca establecen una contraseña? (La mayoría no se da cuenta de que ahora tienen cuentas en Mailman; hubo resistencia a tener que crear otra cuenta. Suspiro.) Si alguien nunca visita el sitio y nunca inicia sesión, ¿seguirá recibiendo correos electrónicos sobre temas y publicaciones en la categoría Announcements?

Para cualquiera que haya hecho esto, ¿qué tipo de problemas de soporte tuvieron que enfrentar después de la importación?

¡Gracias!

Si ya tienes una relación transaccional con estas personas, es decir, si las estás migrando a una nueva plataforma, existen formas de agilizar el proceso de creación de usuarios. Está pensado para administradores más avanzados, pero aquí tienes algunas ideas de línea de comandos (consola de Rails) que podrían 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);

Por experiencia, esto creará el nuevo usuario con los detalles que proporciones, activará su cuenta para que pueda recibir correos electrónicos y luego le enviará un mensaje informándole que se ha creado una cuenta para él en tu sitio de Discourse, junto con un enlace para configurar su cuenta:

Se ha creado una nueva cuenta para ti en Nombre de tu sitio de Discourse

Haz clic en el siguiente enlace para elegir una contraseña para tu nueva cuenta:
https://discourse.example.org/u/password-reset/(randomdigits)

Necesitarás configurar tu categoría de Anuncios de modo que todos los nuevos usuarios la estén siguiendo automáticamente, lo cual es una configuración del sitio.

¡Gracias! Eso parece relativamente sencillo (y sí, todos estos son usuarios de una lista que administro y de la que estoy intentando migrar fuera de Mailman).

¿Sabes qué sucederá si nunca configuran su cuenta, en cuanto a recibir correos electrónicos en la categoría de Anuncios de Seguimiento Automático?

Hay personas más inteligentes que yo en este tema, pero creo que, dado que ejecutas el comando u.activate();, ya están completamente activados y lo único que hacen a través del correo electrónico es cambiar su contraseña de la cadena aleatoria inicial que nadie conoce.

Existe la idea de que los usuarios inactivos eventualmente dejan de recibir correos electrónicos, pero no estoy seguro de si esto entraría en juego aquí para las categorías “auto-suscritas”; realmente solo lo he pensado en términos de los destinatarios del resumen/digesto. Espero que alguien más pueda aportar una respuesta sobre eso.

Otra pregunta rápida sobre las importaciones. ¿Sabes qué sucederá si intentas importar una dirección de correo electrónico que ya está asignada a un usuario en el sistema? ¿Simplemente se omitirá?

:man_shrugging:

Yo simplemente le daría una prueba con una dirección temporal para averiguarlo.

Tenía miedo de que dijeras eso. El enfoque de la consola de Rails resultó estar muy por encima de mis capacidades de administración (Rails ni siquiera estaba instalado en nuestro VPS, y no veía cómo podría importar 600 direcciones de esa manera de todos modos), así que tengo que llamar a nuestro desarrollador. Le pediré que lo revise.

Puedes acceder a la consola de Rails en tu sitio de Discourse autoalojado de la siguiente manera:

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

¡Gracias! Tuve que agregar sudo su antes de la tercera línea para obtener permiso de conectarme al daemon de Docker, pero luego funcionó y pude ejecutar las líneas del script de Rails de arriba y crear un usuario de prueba. ¡Genial!

¿Cómo se expandiría este script para trabajar con una lista de 600 direcciones de correo electrónico? Ejecutarlo 600 veces parece… tedioso. :slight_smile:

Generarías un script que incluyera esa línea para los 600 usuarios o insertaras los datos en alguna estructura de datos y recorrieras el bucle.

Como nadie aquí tenía experiencia con Ruby, optamos por crear un archivo grande con todos los comandos y pegarlos en la consola de Rails. Parece que funciona, excepto que ahora hay cuatro errores en Sidekiq (de los primeros 50 importes de prueba), y no sé qué hacer con ellos ni qué significan. ¿Se crearon los usuarios? ¿O simplemente no recibieron el correo de bienvenida? Dado que los reintentos están fallando, ¿debería simplemente eliminar estos errores y seguir adelante?

Eso sería algo bueno que tú mismo podrías averiguar.

Me cuesta imaginar cómo el user_id podría ser inválido.

Probablemente sí, pero querrás determinar qué usuarios fallaron y por qué. ¿Hubo errores al pegar los comandos? Si no puedes averiguarlo, necesitarás revisar los usuarios que existen y los que esperabas que existieran, y ver cuál es la diferencia.

Si no tienes una forma sencilla de desplazarte hacia atrás por el historial, deberías trabajar en lotes más pequeños para poder verificar su progreso con mayor facilidad.

No me notificaron sobre esto hasta bastante después, así que no hubo manera de volver atrás. Es posible que estos errores ocurran cuando una dirección de correo electrónico importada ya existe en el sistema; puedo probar eso. Todos los usuarios que esperaba que se crearan, se crearon.

Pero lo que no logro entender es si hay alguna conexión entre la información en esta captura de pantalla y cualquier cosa que pueda consultar en Discourse. ¿Los email_tokens son algo que se pueda vincular a otra información?

Parece que seguiré haciendo esto en pequeños lotes y veré si puedo asociar un error a alguno de estos mensajes.

Resulta que estos errores se generaban cada vez que había un error en la importación, como nombres de usuario con más de 20 caracteres, o dos caracteres especiales seguidos en un nombre de usuario, o posiblemente que el correo electrónico ya estuviera en uso (vi resultados inconsistentes con eso). Simplemente solucioné cada problema y seguí adelante, y al final eliminé todos los errores de Sidekiq.