Zapier-Aufgabe mit Discourse-Webhooks auslösen

Möchtest du Discourse Webhooks nutzen, um eine Aufgabe über Zapier auszulösen? Dann legen wir los!

:bulb: Tipp: Zapier bietet nun eine offizielle Discourse-Integration mit integrierten Auslösern und Aktionen (z. B. „Neuer Beitrag", „Beitrag erstellen"). Für gängige Anwendungsfälle ist dies einfacher als das manuelle Konfigurieren generischer Webhooks. Die folgende Anleitung behandelt den manuellen Webhook-Ansatz, der dir mehr Flexibilität bietet und Zugriff auf alle Discourse-Ereignistypen gewährt.

Zapier benötigt einen Auslöser (Trigger) und eine Aktion. In dieser Anleitung ist der Auslöser ein Discourse-Webhook und die Aktion das Senden einer E-Mail.

E-Mail bei jedem Benutzerereignis senden

Wir richten nun einen „Zap" ein, der bei jedem Benutzerereignis eine E-Mail versendet (z. B. wenn ein Benutzer erstellt, genehmigt, aktualisiert, angemeldet, abgemeldet, gesperrt usw. wird). Um ein spezifisches Benutzerereignis auszulösen, siehe unten unter Auslösen bei einem spezifischen Benutzerereignis.

Ein Discourse-Webhook erstellen

  • Erstelle einen neuen Discourse-Webhook für Benutzerereignisse.

    Wir aktualisieren die „Payload-URL", sobald die Webhook-URL in den nächsten Schritten generiert wurde.

Einen neuen Zap erstellen

Suche auf dem Zapier-Dashboard nach diesem Button:

Auslöser einrichten

  • Wähle „Webhook" als Auslöser. Suche nach:

  • Auslöser auswählen

    Wähle „Catch Hook" aus.

  • Du kannst den Schritt „Webhooks by Zapier Hook einrichten" überspringen.

    Drücke einfach auf „Weiter".

  • Auslöser testen

    Kopiere die generierte benutzerdefinierte Webhook-URL und füge sie im Abschnitt „Payload-URL" des ursprünglich erstellten Discourse-Webhooks ein.

    Versuche nun, auf deiner Discourse-Instanz einen Benutzer zu erstellen, zu aktualisieren oder zu genehmigen.

    Wenn du alle Schritte erfolgreich befolgt hast und einen Benutzer erstellt/aktualisiert/genehmigt hast, erscheint in Zapier eine Erfolgsmeldung:

    Wenn du auf den Hyperlink „view your hook" klickst, werden die analysierten Daten angezeigt.

Aktion in Zapier einrichten

Den Zap aktivieren

Das war’s. Du erhältst nun für jedes Benutzerereignis eine E-Mail. Die vollständige Liste der Benutzerereignisse, die einen Webhook auslösen können, lautet:

Ereignisname Beschreibung
user_created Ein neues Benutzerkonto wird erstellt
user_approved Ein Benutzer wird genehmigt
user_updated Ein Benutzerprofil wird aktualisiert
user_logged_in Ein Benutzer meldet sich an
user_logged_out Ein Benutzer meldet sich ab
user_confirmed_email Ein Benutzer bestätigt seine E-Mail-Adresse
user_destroyed Ein Benutzerkonto wird gelöscht
user_suspended Ein Benutzer wird gesperrt
user_unsuspended Ein Benutzer wird entsperrt
user_anonymized Ein Benutzerkonto wird anonymisiert

:tada:


Auslösen bei einem spezifischen Benutzerereignis

Möchtest du E-Mails nur für ein bestimmtes Benutzerereignis senden, z. B. nur bei der Kontoerstellung, aber nicht bei Aktualisierungen? Verwende den Auslöser „Catch Raw Hook".

  1. Klicke auf „weniger häufige Optionen anzeigen".
  2. Klicke auf „Catch Raw Hook".
  3. Folge den verbleibenden Schritten, um den Auslöser normal zu konfigurieren.

Sobald der Auslöser konfiguriert ist, füge einen Filter hinzu.

  1. Klicke auf „Schritt hinzufügen".
  2. Klicke auf „Filter".
  3. Klicke auf „Speichern und Weiter".
  4. Wähle im ersten Dropdown-Menü „Headers Http X Discourse Event" aus.
  5. Wähle im zweiten Dropdown-Menü „(Text) Stimmt genau überein" aus.
  6. Gib den vollständigen Header ein, nach dem du filtern möchtest (z. B. user_logged_out).
  7. Wenn Zapier bei mehreren Headern ausgeführt werden soll, klicke auf „+OR" und füge sie genauso hinzu wie den ersten.
  8. Klicke auf „Testen & Weiter".
  9. Überprüfe den Filtertest und klicke dann auf „Weiter".

Sobald der Filter konfiguriert ist, richte deine bevorzugte Aktion ein.

Den vollständigen Webhook-Header verwenden

Um Zugriff auf den Header zu erhalten, folge den vorherigen Schritten – wähle „Catch Raw Hook" und füge dann einen Filter hinzu. Konfiguriere den Filter so, dass er nur fortfährt, wenn Headers Http X Discourse Event mit dem gesuchten Ereignis übereinstimmt.

Die Schwierigkeit hierbei besteht darin, dass „Catch Raw Hook" den Rohinhalt (Raw Body) des Webhooks übergibt. Die finale Aktion, die ich verwende, benötigt analysierte Daten aus dem Body. Was bei mir funktioniert, ist das Hinzufügen einer Code-Aktion nach dem Filter. Wähle im Modal „Code-Aktion" die Option „JavaScript ausführen":

Zapier erstellt ein inputData-Objekt, dem du benannte Eigenschaften hinzufügen kannst. Gib links einen Namen für deine Eigenschaft ein. Wähle rechts im Dropdown-Menü „Catch Raw Hook" und dann „Raw Body" aus:

Scrolle nach unten, um eine Code-Eingabe zu sehen:

Ersetze den Beispielcode nun durch Code, der den Raw Body analysiert und ein Objekt zurückgibt, das die Werte enthält, die du für deine finale Aktion benötigst. Hier ist der Code, den ich verwende. Das zurückgegebene Objekt wird von der Salesforce-Integration verwendet. Salesforce erfordert einen Nachnamen; wenn kein Nachname vorhanden ist, wird ein Fehler zurückgegeben:

const parsed = JSON.parse(inputData.raw);
if (parsed.user) {
  const user = parsed.user,
        name = user.name,
        userFields = user.user_fields;
  let firstName,
      lastName,
      company;
  
  if (name) {
    const splitName = name.split(' ');
    firstName = splitName[0];
    lastName = splitName[1]
    }
  if (userFields) {
    company = userFields['10'];
  }
  if (lastName) {
    return {id: user.id,
            username: user.username,
            lastName: lastName,
            firstName: firstName,
            email: user.email,
            company: company
           };
  } else {
    return {error: \"Missing last name\"}
  }
} else {
  return {error: \"A user object was not returned\"};
}

Um zu vermeiden, dass in der finalen Aktion eine fehlgeschlagene Anfrage gestellt wird, kann ein weiterer Zapier-Filter hinzugefügt werden. Stelle diesen Filter so ein, dass er nur fortfährt, wenn das vom JavaScript zurückgegebene Fehlerfeld nicht existiert:

Du kannst nun deine finale Aktion hinzufügen. Um die Felder auszuwählen, die in der finalen Aktion verwendet werden sollen, verwende die Eigenschaften, die von der Aktion „JavaScript ausführen" zurückgegeben werden.

32 „Gefällt mir“