Hallo zusammen,
zunächst: Ich habe ein paar kleine Scripte und Agenten geschrieben und
habe daher "Basis-Erfahrung", würde aber behaupten, dass man solche Agenten auch kompakter lösen kann
.
Ich setze ein Ticket-System ein, welches automatisiert E-Mails einliest und
daraus Tickets generiert. Dabei sucht das Ticket System im Betreff nach
der ersten Zahl, und interpretiert diese als Ticket-Nummer.
Bekomme ich aus einem anderen Ticket-System eine ID, wird die E-Mail bei mir importiert und
mein Ticket-System erstellt unnötiger Weise ein neues Ticket, weil diese neue ID im Betreff vorne steht.
Die Aufgabenstellung lautet an dieser Stelle, den Betreff so umzubauen, dass MEINE Ticket-ID immer an erster Stelle steht,
damit die Antwort dem vorhandenen Ticket zugeordnet werden kann.
====
1.
Betreff der Antwort vom externen Absender:
Re: [Ticket#2017101910000093]
[Ticket ID: 19907] Testbetreff1
2.
Mein Agent soll die Mail so umbauen:
[Ticket ID: 19907] Re: [Ticket#2017101910000093] Testbetreff1
====
Nun bin ich hergegangen und habe einen Formel Agenten geschrieben, welcher vor Eingang einer neuen Mail
den Betreff als String einliest, zerlegt und sortiert, so dass unsere Ticket ID nach vorne gestellt wird.
Das funktioniert auch hervorragend.
Problem: Dies geschieht mit JEDEM Betreff einer eingehenden Mail, auch bei denen,
welche keine Ticket-ID beinhalten. Dort steht dann NUR der String "[Ticket ID:".
Um dieses Problem zu lösen, habe ich eine weitere @if Schleife eingebaut, welche auf das Vorhandensein der Ticket-ID prüft und
dann erst die eigentlichen Umbau-Maßnahmen startet. Leider ohne Erfolg.
Ein weiterer Versuch Bestand darin, einen eigenen Agenten zu erstellen, welcher die Bedingung "If Ticket ID vorhanden" abfragt und
bei positivem Ergebnis den zweiten Agenten "Betreff zerlegen" aufruft. Nach erfolglosen Versuchen habe ich im Forum gelesen,
dass man wohl aus einem Formel-Agenten keinen weiteren Formel-Agenten per @Command aufrufen kann, da es sich um eine Klick-Anweisung handelt.
Das kann ich nicht bewerten.
Als letzte Lösung, welche ich ebenfalls im Notes-Forum gefunden habe, wird empfohlen, die Agenten direkt in Lotus Script umzusetzen.
Dies scheint mir jedoch ein zu hoher Aufwand für das gewünschte Ergebnis. Ich denke, man muss nur die IF-Conditionen im Formel Agenten "Ticket zerlegen"
anpassen, damit die Prüfung auf das Vorhandensein der Ticket-ID dort abgehandelt wird.
Ich hänge hier an der Syntax der IF-Anweisung in Notes, welche statt "if-then-else" nach "if(condition1, action 1, condition2, action2, .... , else)" aufgebaut ist.
Es wird nur eine Kleinigkeit sein, aber ich komme hier einfach nicht weiter und würde mich über einen kurzen Tipp / Unterstützung freuen.
Ich bin wahrscheinlich schon "Script-Blind" :-)
1. Agent "Ticket-ID vorhanden"?========
FIELD subject:=subject;SELECT
@If(@Contains(subject;"[Ticket ID:");
@Command([RunAgent];"TicketZerlegen");
subject)
=========
2. Agent "Ticket zerlegen"========
FIELD subject:=subject;
TempSubject:=@If(@Contains(subject;"[Ticket ID:");
@Trim(@Right(subject;"[Ticket ID:"));
subject);
TicketNummer:= @Middle(TempSubject;0;6);
ReineTicketID:="[Ticket ID: " + TicketNummer;
LinksVonTicketID:=@Trim(@Right(subject;ReineTicketID));
RechtsVonTicketID:=@Trim(@Left(subject;ReineTicketID));
@SetField("subject";ReineTicketID + RechtsVonTicketID + LinksVonTicketID);
SELECT @All
========