Hauptmenü

Variablen des PreMacros im PostMacro verwenden

Begonnen von kerstin, 20.09.2023 15:16:12

⏪ vorheriges - nächstes ⏩

kerstin

Hallo,

Ich würde gerne bei einer Action Variablen im PreMacro setzen, die ich im PostMacro benötige - ist das irgendwie möglich?

Konkret geht es darum, dass ich gerne unseren Agenten die Möglichkeit geben würde Kontake "zusammenzuführen" d.h. wenn ein Kontakt unter einer neuen/weiteren Email schreibt (was bei uns leider häufiger vorkommt), würde ich den Agenten gerne ein Action anbieten mittels der sie diese Email als zusätzliche Email zum bereits bestehenden Kontakt hinzufügen können.

Meine Idee dazu war, dass ich die ID und Email des ursprünglichen Kontakts des Tickets (also des Kontaktes der zu der neuen Email des bereits bestehenden Kontakts erzeugt wurde) im PreMacro in Variablen schreibe, so dass ich diese im PostMacro dann entsprechend nutzen kann um einerseits die Mail im neu erstellten Kontakt zu löschen und andererseits diese dann dem bereits bestehenden (und vom Agenten in dieser Action als neuen Kontakt des Tickets gesetzten) Kontakt  als weitere Email Adresse hinzuzufügen.

Aber leider scheint es so zu sein, dass die im PreMacro gesetzten Variablen im PostMacro nicht mehr existieren - oder ich mache irgendwas falsch.

Oder gibt es vielleicht insgesamt eine elegantere Art zwei Kontakte "zusammenzuführen"?

Danke und Gruß,
Kerstin
 
P.S: Wir nutzen KIX18 Pro v29 Build: 4276-4.1758-1

Richard Leis

Hallo Kerstin,

die Variablen, die man in einer PreAction setzt, können nicht nochmal in einer PostAction genutzt werden. Diese Variablen werden nur innerhalb der PreActions gespeichert.
Aber man kann die E-Mail-Adresse und die ID des Kontakts in einer PreAction in dynamische Felder schreiben und diese dann über Platzhalter in der PostAction wieder verwenden.
Ich konnte das in meinem Testsystem erfolgreich umsetzen, Beispiel-Screenshots hänge ich hier an.

Komplizierter wird es hier allerdings, wenn dann zu einem Kontakt eine dritte E-Mail-Adresse hinzugefügt werden soll.
Dann müsste man in den PostActions noch eine Bedingung einführen, die erstmal prüft, welche E-Mail-Felder bereits gefüllt sind, um noch freie E-Mail-Felder zu ermitteln.
Andernfalls würde mein Ansatz immer einfach die zweite E-Mail-Adresse überschreiben.
Aber solange man nur eine zweite Adresse zu einem Kontakt hinzufügen möchte, sollte es mit dem obigen Beispiel keine Probleme geben.

Viele Grüße,
Richard

kerstin

Hallo Richard,

Vielen Dank für die Antwort - ich hatte gehofft, dass ich keine dynamischen Felder als Zwischenlager benötigen würde, aber dann ist das eben so :-)

Die Umsetzung klappt mit einer weiteren Email auch ganz gut, aber in der Tat kann man bei uns leider nicht davon ausgehen, dass Kunden nicht mehr als 2 Email Adressen benutzen. Daher habe ich versucht über ein Conditional zunächst mittels"!defined" und "defined" zu überprüfen, welche Email Slots bereits gefüllt sind. Allerdings scheint der Platzhalter (oder die Variable - damit habe ich es auch versucht) zunächst ausgewertet zu werden, wodurch dann ein Problem mit dem @-Zeichen in der vorhandenen Email Adresse entsteht.
Meine Bedingung ist z.B.
!defined  <KIX_CONTACT_Email1>
was im Log die folgende Fehlermeldung erzeugt:
[Tue Oct 17 10:39:33 2023][Error][Kernel::System::Automation::_Log][281] An error occured while evaluating the logical expression (Bareword "kerstin_kix" not allowed while "strict subs" in use at (eval 817) line 1.
syntax error at (eval 817) line 1, near "kerstin_kix@streber24"
Global symbol "@streber24" requires explicit package name (did you forget to declare "my @streber24"?) at (eval 817) line 1.
)! (Job: -, RunID: , Macro: PostMacro-1695204618125 (47), MacroAction: Conditional (73))
[Tue Oct 17 10:39:33 2023][Error][Kernel::System::Automation::_Log][281] Macro action "Conditional" returned execution error. (Job: -, RunID: , Macro: PostMacro-1695204618125 (47), MacroAction: Conditional (73))

Wie kann ich das vermeiden?
Eine weitere Frage, die sich während des Testens ergeben hat, ist ob man die Fehlermeldungen der Macros irgendwie "weiterreichen" kann, so dass dem Nutzer kein Erfolg gemeldet wird, obwohl die Postmacros gescheitert sind?

Vielen Dank und schöne Grüße,
Kerstin

Richard Leis

Hallo Kerstin,

ich konnte MakroActions erstellen, die in meinem Testsystem funktioniert haben, um nacheinander die Email1 bis Email5 Felder zu aktualisieren.
So bin ich hier vorgegangen:

  • Zunächst habe ich die Adresse des fälschlich erstellten Kontakts gelöscht - wie vorher auch
  • PostAction_Makro1.png
  • Dann habe ich eine Hilfsvariable eingeführt
    • Mit dieser möchte ich den Kontrollfluss regeln, damit nicht immer gleich alle Email-Felder befüllt werden, sondern nur das nächste leere
    • Diese erhält initial den Wert "0"
  • PostAction_Makro2.png
  • Für "Email1" habe ich eine Bedingung eingefügt, in der ich prüfe, ob diese leer ist
    • Mit den einfachen Anführungszeichen sorge ich dafür, dass der Inhalt des Platzhalters als Text interpretiert wird
    • Ein "!defined" hat hier nicht funktioniert, weil die Felder definiert, aber leer sind
    • Zuletzt setze ich innerhalb dieses Bedingungs-Komplexes noch die Hilfsvariable auf 1
      • Damit kann ich verhindern, dass nach dem Ausführen dieses Teils die folgenden auch noch ausgeführt werden
  • PostAction_Makro3.png
  • Für "Email2" habe ich die Bedingung noch um die Prüfung der Hilfsvariable erweitert
    • Nur, wenn die Hilfsvariable noch 0 ist, wurde die Adresse nicht bereits in "Email1" geschrieben
    • Diese Bedingung ist also nur erfüllt, wenn "Email1" bereits zuvor gefüllt war
  • PostAction_Makro4.png
  • Das habe ich analog für die Felder "Email3" bis "Email5" wiederholt
    • Bei der Aktualisierung des Feldes "Email5" habe ich dann aber auf das Setzen der Hilfsvariable verzichtet, weil es eh kein "Email6" mehr gibt
  • PostAction_Makro5.png
  • PostAction_Makro6.png 
  • PostAction_Makro7.png 
  •  Zuletzt habe ich dann die Hilfsvariable wieder auf "0" gesetzt
    • Das könnte man aber wahrscheinlich weg lassen, weil die Variable sowieso nur innerhalb der einen Ausführung existiert
  • PostAction_Makro8.png

In meinem Testsystem hat das gut funktioniert. Ich konnte an meinem Testnutzer nach und nach die Email-Felder befüllen.

Die Fehler, die innerhalb von Pre- oder PostActions auftreten, kann man leider nur im Log finden. Die User sehen dort die Erfolgsmeldung, weil ja die Ausführung der Aktion - also das Neusetzen eines Kontakts geklappt hat.
Es gibt aber bereits einen Feature Request, dass man die Problem in Pre- und PostActions besser auswerten kann. Hier ist aber noch in Diskussion, wie genau das am besten umgesetzt werden sollte. Bis zur Veröffentlichung wird es also noch eine Weile dauern.

Viele Grüße
Richard