Autor Thema: Betreff zerlegen und umbauen  (Gelesen 3397 mal)

Offline ScriptChris

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Betreff zerlegen und umbauen
« am: 27.12.17 - 10:53:36 »
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  O0.

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
========


Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
Re: Betreff zerlegen und umbauen
« Antwort #1 am: 27.12.17 - 11:51:03 »
Warum der Umstand mit 2 Agenten. Es reicht ein einziger.

Hier der Code. Habe es der Einfachheit halbe in einen Button gepackt. Kannst du ja leicht in deinen Agenten integrieren.
der Code prüft, ob der Suchstring im subject enthalten ist. Wenn nicht, dann wird subject verwendet; wenn vorhanden, dann findet der Umbau statt.


Code
subject:="Re: [Ticket#2017101910000093] [Ticket ID: 19907] Testbetreff1";

@If ( @Contains(subject;"[Ticket ID:");
@Do (
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));
subject:= ReineTicketID + RechtsVonTicketID + LinksVonTicketID
);"");

@Prompt([Ok];"";subject)
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
Re: Betreff zerlegen und umbauen
« Antwort #2 am: 27.12.17 - 12:41:56 »
Und mit ein bisschen Optimierung  kann man den Code noch reduzieren.
Das mindert die Gefahr, daß der Code nicht mehr funktioniert, wenn die übermittelte TicketID nicht 5 stellig ist.

Code
subject:="Re: [Ticket#2017101910000093] [Ticket ID: 19907] Testbetreff1";

@If ( @Contains(subject;"[Ticket ID:");
@Do (
_tid:="[Ticket ID: " + @Word(@Right(subject;"[Ticket ID: ");"] ";1) + "] ";
subject:=@ReplaceSubstring(subject; _tid;"");
subject:= _tid + subject
);"");

@Prompt([Ok];"";subject)
« Letzte Änderung: 27.12.17 - 12:44:17 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline ScriptChris

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Re: Betreff zerlegen und umbauen
« Antwort #3 am: 27.12.17 - 12:53:30 »
Hallo eknori,

vielen lieben Dank für die Unterstützung.

Ich habe in der letzten Stunde die noch nicht komprimierte Version ausprobiert und getestet.
Mit ganz kleinen Anpassungen (Prompt durch SetField ersetzt, Agent "Vor Eingang neuer Mail", etc.)
macht es jetzt genau das, was es bei mir erledigen soll.

Es scheiterte an der @Do-Anweisung. Ich hatte in einer vorherigen Version (und davon gab es zahlreiche) eine @Do-Anweisung eingebaut,
mich dann im weiteren Verlauf aber verhaspelt und andere Wege ausprobiert. Irgendwann ist der Knoten dann zugeschnürt.

Ich werde noch einige Tests ausführen und einen neuen Agenten mit der komprimierten Fassung parallel testen.
An dieser Stelle bin ich aber schon sehr glücklich. Danke für den Einsatz!

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
Re: Betreff zerlegen und umbauen
« Antwort #4 am: 27.12.17 - 13:27:19 »
Ich befürchte, du musst noch einen Agenten aufsetzen  ;D

Code
subject:="Re: [Ticket#2017101910000093] [Ticket ID: 19907] Testbetreff1";

_result:=@If ( @Contains(subject;"[Ticket ID:");
@Word(subject;"]";2) + "] " + @Word(subject;"]";1) + "]" +  @Word(subject;"]";3) ;
subject);


@Prompt([Ok];"";@Trim(_result))
« Letzte Änderung: 27.12.17 - 13:30:29 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline ScriptChris

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Re: Betreff zerlegen und umbauen
« Antwort #5 am: 27.12.17 - 13:31:13 »
Ach Mensch, ich probiere doch gerne neue Sachen aus  ;D

Ich befürchte, du musst noch einen Agenten aufsetzen  ;D

Code
subject:="Re: [Ticket#2017101910000093] [Ticket ID: 19907] Testbetreff1";

_result:=@If ( @Contains(subject;"[Ticket ID:");
@Word(subject;"]";2) + "] " + @Word(subject;"]";1) + "]" +  @Word(subject;"]";3) ;
subject);


@Prompt([Ok];"";@Trim(_result))

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz