Benutzer ohne Passwörter über API erstellen

Ich migriere mein Support-Forum von einem Helpdesk-System (YouTrack) zu Discourse.

Ich möchte die API nutzen, um Folgendes zu erledigen:

  1. Benutzer (Name, Benutzername, E-Mail) aus YouTrack abrufen und entsprechende Benutzer in Discourse anlegen. Keine Passwörter setzen!
  2. Allen diesen Benutzern eine Einladung senden, sich in Discourse anzumelden, unter Verwendung derselben Benutzernamen und E-Mail-Adressen (damit sie neue Passwörter festlegen können).
  3. Bestimmte Themen, Anhänge und Kommentare aus YouTrack abrufen und in Discourse entsprechend anlegen.

Dafür müssen dieselben Benutzer in Discourse existieren, damit sie als Autoren von Themen und Kommentaren hinterlegt werden können. Dies ist unabhängig davon, ob diese Benutzer nach Erhalt der Einladung in Discourse angemeldet wurden oder nicht.

Probleme:
a) Laut API-Dokumentation ist das Feld “password” beim Anlegen eines Benutzers erforderlich. Wie kann ich das umgehen?
b) Welchen Status sollte ein solcher Benutzer haben (über die API angelegt, bereits mit Themen unter seinem Namen, aber noch nicht bestätigt und ohne gesetztes Passwort)?

Ich würde Benutzer, Kategorien, Themen und Beiträge lieber über ein Import-Skript anlegen als über die API.

Ich bin mir nicht ganz sicher, wie man am besten jeden einzelnen Benutzer per E-Mail erreicht, aber eine Möglichkeit wäre, das Import-Skript so zu konfigurieren, dass die Benutzer aktiviert werden und eine Zusammenfassung per E-Mail erhalten. Dabei sollte in der Zusammenfassungs-E-Mail auch stehen, wie man auf das neue Forum zugreifen kann.

Mit was würde ein solches Skript arbeiten? Direkt mit der Datenbank?

Schauen Sie sich die Import-Skripte in scripts/import an.

Ich habe versucht, dieses Skript von dir zu verwenden, das den Anschein hat, den Zweck zu erfüllen, aber ich erhalte weiterhin eine Fehlermeldung:

 ./create-user 'Test User Four' me@[domain] test4 41 default
Benutzer erstellen: test4 Benutzer test4 erstellt. . . Hinzufügen zur Gruppe 41. . . {"errors":["Sie haben ungültige Parameter für die Anfrage übergeben: usernames"],"error_type":"invalid_parameters"}

Ich kann nicht herausfinden, was ich falsch gemacht habe. Ist es außerdem möglich, hier weder eine Gruppe noch ein Passwort festzulegen?

Ich bin mir nicht ganz sicher, aber es scheint, als hättest du eine ungültige Gruppennummer und bekommst daher einen Fehler? Wenn der Benutzer hinzugefügt wird, würde das bedeuten, dass keine Gruppe bereits festgelegt ist. :wink:

Du könntest das Skript so ändern, dass es kein Passwort festlegt, denke ich. Allerdings ist ein zufälliges Passwort, das niemand kennt, praktisch dasselbe wie kein Passwort.

Wenn du Anpassungen benötigst und ein Budget hast, kann ich das wahrscheinlich noch heute erledigen.

Die Gruppennummer ist korrekt, ich habe sie aus /groups.json übernommen. Wie auch immer, mein aktuelles Ziel ist es, die Lösung mit den verfügbaren Werkzeugen zu finden. Trotzdem vielen Dank für dein Angebot und deine Hilfe!

Hmm. Vielleicht hat sich diese API geändert. Ich glaube, sie erwartet jetzt einen Gruppennamen. Du kannst gerne einen PR einreichen, wenn du eine Lösung findest.

Ich habe noch einiges auf meiner To-Do-Liste, bevor ich mir das genauer ansehen kann.

Nein. Wenn ich stattdessen den Gruppenamen anstelle der ID verwende, erhalte ich:
{"status":404,"error":"Not Found"}

Es ist auch seltsam, dass die Fehlermeldung zwar nach user test6 created. . . Adding to group erscheint, der Benutzer aber tatsächlich nicht erstellt wurde.

Hmm. Nun, das Skript muss definitiv aktualisiert werden, um den API-Benutzer und den Schlüssel in einem Header statt in der URL zu senden. Zwar bin ich mir ziemlich sicher, dass es vor zwei Jahren funktioniert hat, aber es sieht so aus, als wäre es von jemandem geschrieben worden, der zwei Jahre weniger Erfahrung hat als ich heute. :wink:

Es wird keine Fehlerprüfung durchgeführt, um festzustellen, ob der Benutzer tatsächlich erstellt wurde. Das wäre etwas, was ich ändern würde, wenn ich daran arbeiten würde.

Es scheint, dass, wenn keine Gruppen vorhanden sind, der Versuch, den Benutzer zur Gruppe hinzuzufügen, übersprungen wird.

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.

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:.

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.

Haben Sie Discourse für Teams schon einmal gesehen?

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

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