EmailSendSMTP dynamisch anhand Datastore-Processing-Status versenden

Hallo Team,


folgende Problemstellung:


Aus Plentymarkets holen wir Tickets, welche eine bestimmte Bedingung erfüllen, und schreiben je Ticket eine Zeile in einen Datastore. Der Eintrag (ProcessingStatus = UNPROCESSED) beinhaltet unter anderem auch die Absender-Mailadresse. Per EmailSendSMTP Step soll anschließend für jedes Ticket/für jede UNPROCESSED Zeile eine Empfangsbestätigung gesendet und der Status auf IN PROCESS angepasst werden.


Per #list Build-In wollte ich nun durch Zugriff auf den Ouput des vorangegangen SearchDatastore-Steps alle Mailadressen im "To"-Empfängerfeld sowie im Contentbereich der Mail alle Absenderindividuellen Inhalte füllen. Jeder Kunde sollte somit eine individuelle Empfangsbestätigung mit einer Zusammenfassung seiner Anfrage (hier: angefragtes Produkt) bekommen.


<#list spreadsheet@SearchMasterDatastore_12.getRows() as row>${row.get("EmailAddress")!},</#list>


Da hatte ich natürlich einen Denkfehler. Wenn mehr als ein Kunde für den Erhalt einer Empfangsbestätigung in Frage kommt, iteriert das #list Build-In natürlich einmal komplett durch den Datastore, und sendet an alle gültigen Empfänger eine Mail mit ALLEN Inhalten.


Ich bräuchte irgendwie eine Form der While-Schleife, um für jeden Datastore-Eintrag eine Mail zu verschicken "while" der ProcessingStatus UNPROCESSED ist.


Kann ich das irgendwie smart realisieren?


image

Hallo Marc,


so eine richtig gute bzw. smarte Lösung haben wir für solche Schleifen nicht. Was funktioniert ist den SearchDatastore mit limit = 1 zu verwenden (ähnlich wie hier https://forum.synesty.com/t/flow-pro-row-durchlaufen/1705 ) um dann pro Run eine individuelle Nachricht schicken zu können. Ohne Flow+ geht das aber schnell auf das Run Limit.


Ich kenn mich leider nicht so gut mit dem Plentymarkets Ticketsystem aus, aber gibt es da nicht auch Ereignisaktionen die eine Email verschicken können? Falls ja, wäre es da meiner Ansicht nach besser aufgehoben.


Viele Grüße

Torsten

Danke für das Feedback Torsten. Wir hatten bis dato noch keinen Anwendungsfall für unseren Flow+, ich werde es mal damit versuchen.


Gruß,

Marc

Hallo,

das Thema While-Schleifen tritt ja häufiger auf. Ich habe da gestern nochmal drüber nachgedacht und bin auf die Idee gekommen, dass man via APICall auch einen anderen Flow auslösen kann.
Der APICall kann ja dynamisch bestimmen, wie häufig der zweite Flow ausgelöst wird. Damit kann man also eine While-Schleife basteln, die sich beliebig häufig wiederholt.
Ich habe das ganze mal kurz zusammengeworfen und es funktioniert!

Mein Beispiel besteht aus zwei kurzen Flows, dem Haupt-Flow und dem Trigger-Flow.

Der Haupt-Flow löst über einen APICall beliebig häufig den Trigger-Flow aus. Nach jedem Trigger wartet der APICall-Step eine längere Zeit, damit der Trigger-Flow seine vorherige Exekution abschließen kann.

Der Trigger-Flow selbst besteht nur aus einem MailSend-Step und erhält alle relevanten Daten über den Aufruf durch den Haupt-Flow.

Ich habe einen Export meines Testprojektes angehangen. Bevor man den "Executing Flow" starten, muss man die beiden Variablen mit der Zielmail bzw. dem Trigger-Url füllen. Dann kann man das ganze in Aktion sehen.


Man muss dabei bedenken, dass der Haupt-Flow keinerlei Informationen über den Erfolg des Trigger-Flows erhält. Man kann nur feststellen, ob der Flow erfolgreich gestartet oder (weil der Flow bereits läuft) nicht gestartet wurde.
Daher sollte eine Erfolgmeldung (in deinem Falle die Umstellung des ProcessingStatus) in dem Trigger-Flow passieren.


Für deine Anwendung würde ich über den APICall nur den identifier für das Ticket an den Trigger-Flow übergeben. Der Trigger-Flow sucht sich dann anhand des identifier selbst alle relevanten Daten aus dem DataStore, versendet die Mail und aktualisiert im Anschluss den Status im DataStore.


Gruß

Gustav

Hallo Gustav,


danke für deinen Lösungsvorschlag! Ich schaue mir das asap mal an.


Gruß,

Marc