Benutzer ohne Passwörter über API erstellen

I am migrating my support forum to Discourse from a helpdesk (YouTrack).
I would like to use API to do the following:

  1. Pull users (name, username, e-mail) from YouTrack and create similar users in Discourse. Not setting passwords for them!
  2. Send an invitation to all these users to sign up in Discourse, using the same usernames and e-mails (for them to create new passwords).
  3. Pull certain topics, attachments, and comments from YouTrack and create the same in Discourse.
    For that, I will need the same users to exist in Discourse so that they could be made authors of topics and comments. This has to be done, no matter whether such users have signed up in Discourse after receiving the invitation, or not.

Problems:
a) The API documentation says that the “password” field is required when creating a user. How can I work around it?
b) What should be the state of such user (created via API, already has some topics under his name, but not yet confirmed, nor password set)?

1 „Gefällt mir“

I would create the users, categories, topics, and posts using an import script rather than the API.

I’m not quite sure how best to email every single user, but one way would be to have the import script leave users activated and allow them to get a summary message emailed to them and see that the summary email includes instructions for accessing the new forum.

2 „Gefällt mir“

What would such script work with? Directly with the database?

Have a look at the import scripts in scripts/import.

1 „Gefällt mir“

I tried to use this script of yours, that seems to be doing the trick, but keep getting an error message:

 ./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"}

Can’t figure out, what have I done wrong. Also, is it possible not to set group and password here?

I mostly don’t know, but it seems like you have a bogus group number and you’re getting an error? If it’s adding the user then it would seem that it’s not setting a group already. :wink:

You could change the script to have it not set a password, I think, but setting a random password that no one knows is pretty much the same thing as no password.

If you need customization and have a budget, I can probably do it later today.

The group number is correct, I took it from /groups.json. Anyway, my current goal is to find out the solution with whatever tools are available. Thank you for your offer and help though!

1 „Gefällt mir“

Hmm. Maybe that api changed. I think that it’ll now take a group name. You’re welcome to submit a PR if you come up with something.

I’ve got a bunch of stuff on my list before I can have a closer look at this.

No. If I use the group name instead of the ID, I get
{"status":404,"error":"Not Found"}

It’s also strange, that although the error message appears after user test6 created. . . Adding to group, the user is actually not created.

Hmm. Well, the script definitely needs to be updated to send the API user and key in a header rather than in the URL. While I’m pretty sure that it worked two years ago, it looks like it was written by someone with two years less experience than I have now. :wink:

It doesn’t do any error checking to see if the user actually gets created, so that’s something that I’d change if I were to work on it.

It looks like if you don’t have any groups it’ll skip trying to add the user to the group.

1 „Gefällt mir“

Hallo Dmitry @dm.linov!

Ich bin auf dieses Thema gestoßen, als ich nach einer Möglichkeit suchte, zwischen Confluence, Youtrack und Discourse zu wechseln.

Könntest du deine wichtigsten Punkte zum Wechsel von Youtrack zu Discourse teilen? War der Grund Kosten, Leistung oder Suchprobleme?

Hallo Ivan,

beide Gründe treffen zu. Wir wollten unseren Kunden Unterstützung auf einem offenen Forum bieten, damit die ganze Welt sehen kann, wie großartig wir sind :slight_smile: Und YouTrack war aus mehreren Gründen nicht das richtige Werkzeug dafür, und die Tatsache, dass es pro Nutzer berechnet wird, ist einer davon.

Unsere aktuelle Einrichtung sieht wie folgt aus:

  • Discourse für Support, Feature-Requests und Diskussionen. Die „Kontaktieren Sie uns"-Formulare auf unseren Websites landen ebenfalls dort (neue Themen und „gestaffelte" Benutzer werden automatisch über die API erstellt)
  • YouTrack für die Entwicklung – Aufgaben, Fehler und andere Probleme
  • Confluence für allgemeine Dokumentation. Einige Artikel, die spezifische Anwendungsfälle beschreiben, werden auch manuell auf Discourse veröffentlicht

Wir haben auch versucht, Discourse als Unternehmensblog zu nutzen, bevorzugen jedoch später Hashnode.

3 „Gefällt mir“

Vielen Dank, Dmitry. Diese Erfahrung wird für uns nützlich sein.

Wir stehen kurz vor der Migration der Dokumentation von Confluence. Confluence hat eine schwache Suchfunktion und teure Lizenzkosten. YouTrack verfügt über eine Wissensdatenbank mit Markdown-Unterstützung. Zudem bietet es einen einfachen Import, und die Suchfunktion ist akzeptabel. YouTrack ist unser Bugtracking-System, das wir beibehalten werden.

Falls du bestätigen kannst, dass die YouTrack-Wissensdatenbank in der Produktion langsam ist, könnten wir in Betracht ziehen, sie nicht zu verwenden.

Discourse wird als Support-System der dritten Ebene eingesetzt. Die Hauptaufgabe besteht darin, Kundenlösungen zu speichern und bewährte Praktiken zu teilen. Leider ist die Nutzung von Discourse für Kunden schwierig, da das Kundendienstteam einen Service Desk verwendet. Außerdem ist es zu aufwendig, hunderte private Kategorien für jeden Kunden anzulegen.

Trotzdem ist Discourse insgesamt großartig :slight_smile:.

1 „Gefällt mir“

Soweit ich weiß, haben wir die YT-Wissensdatenbank noch nie verwendet, daher kann ich dazu nichts sagen.

Was Confluence angeht, suchen wir derzeit ebenfalls nach einer Alternative :slight_smile: aber es hat keine Eile.

3 „Gefällt mir“

Haben Sie Discourse für Teams schon einmal gesehen?

3 „Gefällt mir“

@blake Noch nicht, ich werde mir das ansehen, danke!

1 „Gefällt mir“

Es könnte sich lohnen, Discourse for Teams in Kombination mit Google Currents zu verwenden. :speech_balloon:

2 „Gefällt mir“