Ich vermute, es schlägt bei is_api? fehl. Wenn ich mir den Code ansehe, ist mir nicht klar, warum er bei der Anfrage von Zapier fehlschlagen würde, aber ich sehe keine andere Stelle, an der er fehlschlagen könnte.
Ich bin daran interessiert, weil mich vor ein paar Wochen jemand wegen desselben Problems bei der Erstellung von Benutzern über Zapier gefragt hat.
Ja. Ich bin überrascht, dass das nicht funktioniert, aber zumindest weiß ich jetzt, dass ich nicht der Einzige bin.
Ich betrachte diesen Ansatz, eine externe Datenbank und ein Automatisierungstool wie Zapier oder Make (ich erhielt ähnliche Fehler bei Make) als Proof of Concept für ein Pilotprogramm.
Ich kann kurzfristig in der Pilotphase ohne eines dieser Tools auskommen, aber langfristig wird Discourse ein Teil einer größeren Plattform sein, und ich muss definitiv Mitglieder in einer externen Datenbank in einem separaten Backend mit Mitgliederverwaltung und anderen Diensten verwalten.
Ich vermute, das Problem hängt damit zusammen, wie Sie die Anfrage in Zapier strukturieren. Verwenden Sie die Aktion “Webhooks by Zapier” und versuchen Sie Folgendes:
Wählen Sie “POST” als Ereignis. Dann:
URL: <https://forum.example.com/users.json>
Payload Type: “json”
Daten:
name: <vollständiger Name des Benutzers> (wird in der Dokumentation als erforderlich angezeigt, sollte aber weggelassen werden können)
username: Benutzername des Benutzers
email: E-Mail des Benutzers
password: Ein Passwort, das die Anforderungen Ihrer Website erfüllt
active: "true" (in Anführungszeichen)
approved: "true" (in Anführungszeichen)
Füllen Sie den Abschnitt “Header” aus, um Ihren Api-Key und Api-Username hinzuzufügen (ich habe dies nur mit system als Api-Username ausprobiert).
Verwenden Sie die Standardwerte für alle anderen Abschnitte.
Hier sind ein paar Screenshots mit gefälschten Daten:
Das funktioniert für mich. Wenn es nicht funktioniert, sollten Sie noch überprüfen, ob die Einstellung “nur Einladung” auf Ihrer Discourse-Website aktiviert ist.
Um zu sehen, ob es funktionieren würde, habe ich auch gerade eine benutzerdefinierte Integration mit dem Zapier CLI erstellt, die neue Benutzer erstellt. Wenn Discourse möchte, könnte diese Aktion zur offiziellen Discourse Zap hinzugefügt werden. Ich bin mir jedoch nicht sicher, ob das Hinzufügen einer Aktion zum Erstellen von Benutzern Priorität hat. Ich glaube nicht, dass dies so oft angefordert wurde wie Dinge wie das Erstellen einer Einladung oder das Suspendieren eines Benutzers.
Hinweise aus weiteren Tests:
Der Payload Type kann entweder auf “json” oder “form” gesetzt werden. Um benutzerdefinierte Felder mit der Anfrage zu setzen, muss der Payload Type auf “form” gesetzt werden.
Multiselect-Benutzerdefinierte Felder sind ein kleines Problem. Zapier erlaubt keine doppelten Schlüsselnamen im Datenabschnitt. Es sollte möglich sein, Multiselect-Benutzerdefinierte Felder mit der Zapier-Aktion “Benutzerdefinierte Anfrage” zu setzen.
Die Werte der Parameter active und approved müssen nicht in Anführungszeichen gesetzt werden.
@simon Danke! Ich habe es zum Laufen gebracht! Dein Screenshot hat mir geholfen, die Probleme mit der Art und Weise zu lösen, wie Zapier die Datenfelder erstellt. Es hat einige seltsame Dinge getan, aber ich habe im Grunde nicht verstanden, wie die Daten für Airtable formatiert / zugeordnet werden müssen. Ich muss die End-to-End-Automatisierung zum Laufen bringen, aber die Benutzererstellung hat definitiv funktioniert.
Hallo @simon – nochmals vielen Dank für die Hilfe bei der Formatierung. Jetzt versuche ich, einige benutzerdefinierte Felder zum Benutzerprofil hinzuzufügen und zu sehen, ob ich Zapier dazu bringen kann, diese in einem neuen Discourse-Benutzer zu befüllen. Es scheint, dass die gesamte Anfrage fehlschlägt und ich erhalte die Meldung „Sie haben nicht alle Benutzerfelder ausgefüllt“.
Ich habe diesen Beitrag gefunden, also habe ich versucht, ihn von JSON auf Formular umzustellen, aber das hat nicht funktioniert.
Haben Sie Ratschläge, wie benutzerdefinierte Profilfelder formatiert werden können? Danke!
Außer, dass dieser Ansatz nicht mit Multiselect-Dropdown-Feldern funktioniert. Für diesen Feldtyp müssen Sie meiner Meinung nach die Aktion “Benutzerdefinierte Anfrage” verwenden. Es könnte etwas Bastelei erfordern, um es zum Laufen zu bringen.
Wow – Sie sind wirklich der Großmagier von Zapier + Discourse. Die Änderung des roten Pfeils hat beim ersten Versuch funktioniert. Ich hatte ihn als Namen des Feldes, aber das ergibt natürlich keinen Sinn, da er das nicht vorgelagert wissen würde. Also verwende ich für jedes neue Feld, das ich erstelle, einfach die [#] und es wird sie automatisch in der richtigen Reihenfolge zuordnen? Ich plane einige – vielleicht etwa 10. Außerdem schien es auch dann gut zu funktionieren, wenn mein Testfeld ein Dropdown ist – vielleicht, weil es einfach aus Airtable gezogen wird?
Ja, fügen Sie einfach die id des Feldes in die [] ein. Sie können die id des Feldes abrufen, indem Sie die JSON-Version Ihrer Seite Admin / Anpassen / Benutzerfelder (/admin/customize/user_fields.json) laden.
(Es ist einfacher zu lesen, wenn Sie eine Browsererweiterung haben, die JSON formatiert.)
Dropdown-Felder sollten in Ordnung sein. Nur Multi-Select-Felder werden Probleme bereiten. Zum Beispiel das Feld “hobbies” im Screenshot, das ich oben gepostet habe.
Ich frage mich, ob es in Ordnung ist, dies noch einmal zu öffnen und nach dem Erstellen von Gruppen zu fragen?
Ich kann Benutzer von Zapier ohne Probleme erstellen (auch wenn nur auf Einladung aktiviert ist)
Die Zapier-Oberfläche erlaubt einzelne API-Header, aber wenn sie ein Objekt verlangt (was das Erstellen einer Gruppe zu erfordern scheint) … bekomme ich dies, selbst wenn ich den Body manuell so formatiere, wie es die API-Dokumentation verlangt:
Erstellen einer benutzerdefinierten Aktion in Discourse fehlgeschlagen
Rohe Anfrage fehlgeschlagen. Problem bei der Ausführung Ihrer Anfrage: Fehlercode 400: Parameter fehlt oder der Wert ist leer: group
Gibt es eine Möglichkeit, dieses anfängliche Objekt group { zu senden und es mit Zaiper wieder zu schließen?
Jede Einsicht wäre erstaunlich und sehr willkommen!