JSON Webhook Import Import JSON Orders to CSV

Hallo zusammen,

ich arbeite derzeit an einem Projekt, bei dem ich Daten von einer Webseite mit einem Python-Skript scrape und diese Informationen dann an Synesty weiterleiten möchte. Die gesammelten Daten wurden bereits in ein JSON-Format umgewandelt. (Sind Produktdaten einer Webseite: Artikelnummer, Preis, Bestand etc.) Jetzt stehe ich vor der Herausforderung, diese Daten effizient an Synesty zu übermitteln.

Meine Frage ist, ob es möglich ist, einen Webhook zu nutzen, um die JSON-Daten an Synesty zu senden. Ziel ist es, die Daten in einen bestehenden Flow einzuspeisen, der die JSON-Daten in eine CSV-Datei konvertiert und diese im Data Store speichert. Konkret geht es um den Schritt „Import JSON Orders to CSV“.

Ich stehe jedoch vor dem Problem, dass ich nicht weiß, wie ich eine Webhook-URL in Synesty erstellen kann. Diese URL sollte so konfiguriert sein, dass jedes Mal, wenn ich eine JSON-Datei an den Webhook sende, die Daten automatisch in eine CSV umgewandelt und im Datastore gespeichert werden. Also im Code gebe ich eine Artikelnummer ein und diese Produktseite wird auf der Webseite aufgerufen und dann gescrapet.

Könnte mir jemand erklären, wie ich einen solchen Webhook in Synesty einrichten kann? Und ob mein Vorhaben so generell möglich wäre? Ich nutze aktuell die kostenlose Testversion hier.

Vielen Dank für eure Unterstützung und noch einen guten Abend
Grüße
Michael

Hallo Michael,

Es ist prinzipiell möglich einen Webhook („Url Trigger“) für einen Flow einzurichten und Daten beim Aufruf zu übergeben. Für dieses Vorhaben benötigst du allerdings das „Erweiterter URL-Trigger“ Feature (ab dem Starter Paket verfügbar ist (siehe Basis-Pakete vergleichen - Synesty Studio)). Damit ein neuer Flowrun über die Trigger Url erstellt wird, darf der Flow nicht laufen und der letzte Run muss mindestens den zeitlichen Abstand des Minimum Intervalls (paketabhängig) haben.

Eine kurze Anleitung wie du einen Url Trigger für einen Flow einrichtest findest du in der Dokumentation unter Flows / Flow ausführen / Flows per URL antriggern

Unter Flows / Flow ausführen / Request Mapping findest du auch eine Anleitung wie man die request Parameter / body auf die Flow Variablen mappen bzw. auch wie eine Datei übermittelt werden kann ( Flows / Flow ausführen / Datei-Upload per URL-Trigger).

Die übermittelte Datei kannst du dann mit Hilfe des JSONReader oder JSONReaderVisual Step einlesen und in eine CSV Datei umwandeln und/oder in einen Datastore schreiben.

Ich hoffe das hilft dir etwas weiter. Fall du noch Fragen hast, kannst du dich gern melden.

Viele Grüße
Torsten

Moin @synesty-Torsten ,

besten Dank für die Antwort!

Heißt, ich kann dann über Synesty diesen Link erstellen und diesen in mein Python-Skript einbauen und damit dann die JSON Datei nach Synesty herüberschieben? Also ohne, dass ich irgendwo irgendwas hosten muss oder FTP Server oder so in der Art?

Kann ich das auch in der kostenlosen Testphase testen oder ist dafür ein Upgrade möglich?

Grüße
Michael

Hallo Michael,

ja genau, so wie du es zusammengefasst hast funktioniert es.

Momentan ist das in der kostenlosen Testphase nicht möglich, erst ab dem Starterpaket.
Ich würde intern absprechen, ob es vielleicht eine Möglichkeit gibt, damit du es testen kannst oder ob du dafür auf das Starterpaket upgraden musst.

Viele Grüße
Felix

Hallo @synesty-Felix ,

alles klar, das wäre mega.

Grüße

Moin @synesty-Felix @synesty-Torsten,

habe mir mal eben schnell die Starter Version geholt, dann habt ihr auch bisschen was davon, wenn ich hier maximale Amateur Fragen stelle.

Habe den Flow wie folgt aufgebaut:

Für den Dateiupload per Trigger URL habe ich eine Variable erstellt vom Typ Datei.

Diese habe ich dann hier bei dann im URL Trigger im Request Mapping gemappt:

die URL davon habe ich dann bei mir im Python Code hinterlegt und dort wird wenn ich Enter drücke die JSON Datei an die Webhook URL gesendet.

Nur irgendwie kommt nichts an :smiley:
Was mache ich falsch?

Der 2. Step im Flow sieht so aus:

Der 3. Step im Flow so:

Habt ihr hier irgendwie eine Lösung?
Grüße
Michael

Habe irgendwie 2 Accounts also ich bin eigentlich der „Schnittstellenmaster“ xD

Hallo Michael,

ich habe das gerade nochmal getestet analog zu deinem Flow getestet. Am Aufbau des Flows und deiner Konfiguration sollte es nicht liegen. Das sieht für mich alles korrekt aus.

Ich habe Postman (statt Python) für den Aufruf der Trigger Url verwendet. Ich kann dir bei dem Python Skript leider nicht helfen. Wichtig ist, dass du als HTTP Methode POST und den Content-Type multipart/form-data verwendest, wenn du eine Datei übermittelst (den id Parameter nicht vergessen).

Kannst du bitte mal noch folgendes prüfen:

  • Wurde bei deinem Aufruf der Url überhaubt ein Run erzeugt ? Du findest die Runs hier:

  • Da sollte dann „Getriggert von url“ stehen:

image

  • Im Eventlog findest du ganz unten die „Ausführungsparameter“. Da sollte bei „JSON Datei“ eine ID vorhanden sein, wenn die Datei korrekt übergeben wurde:

Viele Grüße
Torsten