Crear usuarios sin contraseñas mediante API

Estoy migrando mi foro de soporte de un sistema de helpdesk (YouTrack) a Discourse.
Me gustaría utilizar la API para lo siguiente:

  1. Extraer usuarios (nombre, nombre de usuario, correo electrónico) de YouTrack y crear usuarios equivalentes en Discourse. ¡No establecer contraseñas para ellos!
  2. Enviar una invitación a todos estos usuarios para que se registren en Discourse, utilizando los mismos nombres de usuario y correos electrónicos (para que puedan crear nuevas contraseñas).
  3. Extraer ciertos temas, archivos adjuntos y comentarios de YouTrack y crearlos en Discourse.
    Para ello, necesitaré que los mismos usuarios existan en Discourse para que puedan ser asignados como autores de temas y comentarios. Esto debe hacerse, independientemente de si dichos usuarios se han registrado en Discourse tras recibir la invitación o no.

Problemas:
a) La documentación de la API indica que el campo “password” es obligatorio al crear un usuario. ¿Cómo puedo sortear esto?
b) ¿Cuál debería ser el estado de dicho usuario (creado vía API, ya tiene algunos temas bajo su nombre, pero aún no ha confirmado su cuenta ni establecido una contraseña)?

1 me gusta

Crearía los usuarios, categorías, temas y publicaciones mediante un script de importación en lugar de usar la API.

No estoy completamente seguro de cuál es la mejor manera de enviar un correo electrónico a cada usuario, pero una opción sería que el script de importación deje los usuarios activados y permita que reciban un mensaje de resumen por correo electrónico, de modo que puedan ver que dicho correo incluye instrucciones para acceder al nuevo foro.

2 Me gusta

¿Con qué funcionaría ese script? ¿Directamente con la base de datos?

Echa un vistazo a los scripts de importación en scripts/import.

1 me gusta

Intenté usar este script tuyo, que parece hacer el trabajo, pero sigo recibiendo un mensaje de error:

 ./create-user 'Test User Four' me@[domain] test4 41 default
Creating user: test4 user test4 created. .  . Adding to group 41. . . {"errors":["You supplied invalid parameters to the request: usernames"],"error_type":"invalid_parameters"}

No logro entender qué he hecho mal. Además, ¿es posible no establecer el grupo y la contraseña aquí?

No lo sé con certeza, pero parece que tienes un número de grupo inválido y estás recibiendo un error. Si se está agregando el usuario, parecería que no se está asignando un grupo. :wink:

Podrías modificar el script para que no establezca una contraseña, creo, pero asignar una contraseña aleatoria que nadie conoce es prácticamente lo mismo que no tener contraseña.

Si necesitas personalización y tienes un presupuesto, probablemente pueda hacerlo más tarde hoy.

El número de grupo es correcto, lo tomé de /groups.json. De todos modos, mi objetivo actual es encontrar la solución con las herramientas disponibles. ¡Gracias de todos modos por tu oferta y ayuda!

1 me gusta

Hmm. Quizás esa API haya cambiado. Creo que ahora acepta un nombre de grupo. Si logras encontrar una solución, eres bienvenido a enviar una PR.

Tengo un montón de cosas en mi lista antes de poder echar un vistazo más de cerca a esto.

No. Si uso el nombre del grupo en lugar del ID, obtengo
{"status":404,"error":"Not Found"}

También es extraño que, aunque el mensaje de error aparece después de user test6 created. . . Adding to group, el usuario en realidad no se haya creado.

Hmm. Bueno, el script definitivamente necesita actualizarse para enviar el usuario y la clave de la API en un encabezado en lugar de en la URL. Aunque estoy bastante seguro de que funcionaba hace dos años, parece que fue escrito por alguien con dos años menos de experiencia que la que tengo ahora. :wink:

No realiza ninguna verificación de errores para comprobar si el usuario se crea realmente, así que eso es algo que cambiaría si fuera a trabajar en él.

Parece que si no tienes ningún grupo, omitirá intentar agregar el usuario al grupo.

1 me gusta

¡Hola Dmitry @dm.linov!

Encontré este tema mientras buscaba cualquier enfoque para moverme entre Confluence, YouTrack y Discourse.

¿Podrías compartir tus puntos principales sobre la migración de YouTrack a Discourse? ¿La razón fue el costo, el rendimiento o problemas de búsqueda?

Hola Ivan,

Ambas razones son ciertas. Queríamos ofrecer soporte a nuestros clientes en un foro público, para que todo el mundo pudiera ver lo geniales que somos :slight_smile: Y YouTrack no era una buena herramienta para eso por varias razones, y el hecho de que cobre por usuario es una de ellas.

Nuestra configuración actual es la siguiente:

  • Discourse para soporte, solicitudes de características y discusiones. Los formularios de “Contáctenos” en nuestros sitios web también se dirigen allí (se crean automáticamente nuevos temas y usuarios “en espera” mediante la API).
  • YouTrack para desarrollo: tareas, errores y otros problemas.
  • Confluence para documentación general. Algunos artículos que describen casos de uso específicos también se publican en Discourse (manualmente).

También intentamos usar Discourse como nuestro blog corporativo, pero más tarde preferimos Hashnode.

3 Me gusta

Gracias, Dmitry. Esta experiencia será útil para nosotros.

Estamos a punto de migrar la documentación desde Confluence, que tiene una función de búsqueda débil y pagos costosos. Youtrack cuenta con una función de base de conocimientos con soporte para Markdown. Además, tiene una importación sencilla y una función de búsqueda aceptable. Youtrack es nuestro sistema de seguimiento de errores y lo mantendremos.

Si puedes confirmar que la base de conocimientos de YT es lenta en producción, podríamos considerar no utilizarla.

Discourse se utiliza como sistema de soporte de tercer nivel. La función principal es guardar las soluciones de los clientes y compartir las mejores prácticas. Lamentablemente, el uso de Discourse para los clientes es difícil. Esto se debe a que el equipo de atención al cliente utiliza un servicio de mesa de ayuda. Además, es demasiado complicado crear cientos de categorías privadas para cada cliente.

De todos modos, Discourse es excelente en general :slight_smile: .

1 me gusta

Por lo que sé, nunca hemos utilizado la base de conocimientos de YT, así que no puedo decirte nada al respecto.

En cuanto a Confluence, también estamos buscando una alternativa ahora :slight_smile: pero sin prisa.

3 Me gusta

¿Ya revisaste Discourse para equipos?

3 Me gusta

@blake Todavía no, lo revisaré, ¡gracias!

1 me gusta

Podría valer la pena considerar usar Discourse for Teams en combinación con Google Currents. :speech_balloon:

2 Me gusta