Agenten in Abhängigkeit von Formel weiter ausführen bzw. vorzeitig beenden

  • Hi,


    bin jetzt bei den Eingehend Emails.
    Um da eine Blindkopie zu erhalten ist bei uns ein Agent gelaufen der die einfache Aktion Mail senden ausgeführt hat.


    Jetzt möchte ich aber nurnoch diese 'einfache Aktion' Ausführen, wenn die E-Mail von extern kommt.
    Bei Internen Emails soll der Agent garnicht anspringen, oder zumindest abbrechen.
    Um auf extern zu Vergleichen kommt bei mir folgende Formel bis jetzt zum tragen.
    (Keine Aktion und Einfache Aktion sollte an diesen Stellen der If ausgeführt werden, ist nur zur optik)


    @If(@Compare(@Right(@ReplaceSubstring(From;"CN=":"/O=":"@":".de":".":"<":">";"":"/":"/":"":"":"":"");"/");"firma";[CaseInsensitive]); Keine Aktion; Einfache Aktion)


    Kann ich einfache Aktionen verketten und Abhängig voneinander machen?
    So wie ich des gesehen habe, kann ich zwar einfache Aktionen aneinander reihen, aber nicht von einander abhängig machen.


    Sobald ich eine Formel verwende schreibt er automatisch "SELECT @ALL" oder "@true" hin, was mich verwirrt.


    @Mailsend ist keine Alternative, da ich da den Anhang nicht mitliefern kann. Habe hier mit "@Text(body)" nur eben in Textform die Email einbinden können. Vielleicht gibts da ne möglichkeit Anhänge noch anzubinden.


    MFg
    Tobias

  • Schade.
    Script ist für mich der letzte ausweg :(
    Vielleicht ist auf Folgenden wegen etwas Möglich?


    Kann ich im Agenten meine Formel eingeben, und dann bei bedarf eine "Gemeinsame Aktion" starten? Da kann ich ja auch einfache Aktionen hinterlegen.


    Oder kann ich/ist es Sinnvoll von einen Agenten einen Anderen bei bedarf zu starten, oder kann ich die auch nur fest aneinanderreihen.


    Mfg
    Tobias

  • Wenn es ein manuell gestarteter Agent wäre dann ginge das einen Agenten in Abhängigkeit vom anderen per Formelsprache auszuführen.
    Periodisch oder ereignisorientiert, also z.B. vor Eingang neuer Mail geht es nicht

  • Hab jetzt einfach den Agenten die Einfache Funktion @Funktionsformel eingefügt und folgenden Code hinterlegt:


    @If(@Compare(@Right(@ReplaceSubstring(From;"CN=":"/O=":"@":".de":".":"<":">";"":"/":"/":"":"":"":"");"/");"firma";[CaseInsensitive]);@Command([RunAgent];BKsenden);@True)
    /*Wenn intern, True, wenn extern, @Command...*/


    Die Formel scheint ganz gut zu laufen, außer wenn er
    @Command([RunAgent];BKsenden)
    ausführen soll.
    Dann sagt er in der Domino Konsole @Function is not valid in this context.


    Is des aus dem selben Grund warum du sagst, dass es nicht mit einem Ereignis funktioniert?



    Mfg

  • Gibt es sonst eine möglichkeit eine eingehende Email zu kopieren und woandershin weiterzuleiten?


    Kann man Fehler auf der DominoKonsole unterdrücken?
    Weil wenn ich die einfache Aktion "Mail senden" als Agent anlege,
    berechne ich das An-Feld(SendTo) für die neue Mail.
    Wenn die From Extern, dann gib im AN-Feld BK Email ein.
    Wenn E-Mail von Intern, dann steht bei mir nur "...;"")"
    Und wenn im SendTo Feld nichts steht, gibt er einen Fehler aus.
    Gibts vielleicht einen Dummywert im Anfeld?


    Mfg


    Und Danke dir bisher, hast mir sehr weiter geholfen bis jetzt.

  • Hi,


    Bin ja bei Lotus Scrip voll verplant.
    des Einzigste was ich bis jetzt hinbekommen habe, ist das Beispiel aus der Hilfe. Hab auch schon ein bisschen was zum Kopieren von Dokumenten gefunden, aber ich brauch erstmal zum grundverständnis, wie bekomme ich die Email, die gerade eingeht, in den Quellcode unten, damit ich damit arbeiten kann? Muss des ja irgendwie definieren oder so:


    Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set doc = New NotesDocument( db )
    doc.Form = "Memo"
    doc.SendTo = "tobias@firma.de"
    doc.Subject = "Blinkopie"
    Call doc.Send( False )
    End Sub



    muss ja irgendwie in die richtung getdocument gehen, aber welches document? hab ich hier vielleicht eine fest unid oder id oder so?
    Mfg

  • Hi,
    bin jetzt am Lotus Script dran,
    naja
    ich suche eine Möglichkeit um Hochkommas aus einem String zu entfernen.


    Aber bei allen befehlen die ich finde brauche ich die Hochkommas, um das zeichen zu definieren welches ich entfernen möchte!


    Gibt es einen weg Char(34) zu entfernen, oder zumindest erstmal durch ein anderes zeichen zu ersetzten?


    Mfg


    Weil wenn ich zumbeispiel eine Email von GMX bekomme sieht die so aus:
    |"Mein Name" <mein.name@gmx.de>|

  • Hi,
    Hat jetzt bei mir alles funktioniert wies soll!
    Weiß nicht obs umständlich ist aber jetzt prüft er bei Maileingang, ob die Email von Extern Kommt und erstellt eine neue Email mit den Werten der Alte und mit neuem Betreff:


    Sub Initialize
    Declarieren:
    Dim sForward As Variant
    Dim session As New NotesSession
    Dim note As NotesDocument
    Dim docNew As Notesdocument
    Dim db As NotesDatabase
    Dim item As NotesItem

    Umgebung_Aufbauen:
    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Set note = session.DocumentContext
    Set item = note.GetFirstItem("Body")

    REM Neues Email-Dokument erzeugen
    Set docNew = New Notesdocument(db)
    docNew.Form = "Memo"
    Call item.copyitemtodocument(docNew, "")

    REM Absenderadresse für Vergleich vorbereiten
    Dim tmpString As Variant, OldString As String, NewString As String,OldString1 As String, NewString1 As String
    OldString = " " & note.From(0)
    Mid$(OldString, 1, 1) = "<"
    OldString = Replace(OldString,Chr$(34),"")
    tmpString = Evaluate(|@ReplaceSubstring("| + OldString + |"; "CN=":"/O=":"@":".de":".":"<":">";"":"/":"/":" ":" ":"":"")|)
    NewString = tmpString(0)

    REM Empfängeradresse für Vergleich vorbereiten
    OldString1 = " " & note.SendTo(0)
    Mid$(OldString1, 1, 1) = "<"
    OldString1 = Replace(OldString1,Chr$(34),"")
    tmpString = Evaluate(|@Left(@ReplaceSubstring("| + OldString1 + |";"CN=":"/O=":"@":".de":" ":"<":">";"":"/":"/":"":".":"":"");"/")|)
    NewString1 = tmpString(0)

    REM Absender auf Intern prüfen, gegebenenfalls Vorgesetzten ermitteln sonst "ThisIsTheEnd" ausgeben
    tmpString = Evaluate(|@If(@Compare(@Right("| + NewString + |";"/"); "firma";[CaseInsensitive]);@DbLookup("";"mailserver/firma":"Mailkonfig.nsf";"Zuordnung";"| + NewString1 + |";2);"ThisIsTheEnd")|)
    sForward = tmpString(0)

    REM Prüfen ob "ThisIsTheEnd" herrauskam, wenn ja zum Ende springen
    If sForward = "ThisIsTheEnd" Goto TheEnd

    REM Die Felder der neu erzeugte Email mit den Inhalten der Felder der original Email füllen und anpassen
    docNew.SendTo = sForward
    docNew.From = " " & note.From(0)
    docNew.Principal = " " & note.From(0)
    tmpString = Evaluate(|"("+@DbLookup("";"mailserver/firma":"Mailkonfig.nsf";"Zuordnung";"| + NewString1 + |";3)+") "|)
    NewString = tmpstring(0)
    docNew.Subject = NewString+note.Subject(0)
    Call docNew.Send(False)

    TheEnd:
    End Sub

  • Hey,


    anscheinend war nur ein Item zu kopieren falsch,
    hab jetzt CopyAllItems verwendet, und dann nichtmehr die Felder vom Orginal verwendet, sondern da ja alle Items kopeirt sind, hab ich die werte dann direkt von der kopie verglichen


    ::::::::::::::::::::::::::::::::::::::::
    Neu Beta:


    Sub Initialize
    REM Deklarieren:
    Dim sForward As Variant
    Dim session As New NotesSession
    Dim note As NotesDocument
    Dim docNew As Notesdocument
    Dim db As NotesDatabase
    Dim item As NotesItem

    REM Umgebung aufbauen:
    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Set note = session.DocumentContext

    REM Neues Email-Dokument erzeugen
    Set docNew = New Notesdocument(db)
    Call note.CopyAllItems(docnew,True)

    REM Absenderadresse für Vergleich vorbereiten
    Dim tmpString As Variant, OldString As String, NewString As String,OldString1 As String, NewString1 As String
    OldString = " " & docnew.From(0)
    Mid$(OldString, 1, 1) = "<"
    OldString = Replace(OldString,Chr$(34),"")
    tmpString = Evaluate(|@ReplaceSubstring("| + OldString + |"; "CN=":"/O=":"@":".de":".":"<":">";"":"/":"/":" ":" ":"":"")|)
    NewString = tmpString(0)

    REM Empfängeradresse für Vergleich vorbereiten
    OldString1 = " " & docnew.SendTo(0)
    Mid$(OldString1, 1, 1) = "<"
    OldString1 = Replace(OldString1,Chr$(34),"")
    tmpString = Evaluate(|@Left(@ReplaceSubstring("| + OldString1 + |";"CN=":"/O=":"@":".de":" ":"<":">";"":"/":"/":"":".":"":"");"/")|)
    NewString1 = tmpString(0)

    REM Absender auf Intern prüfen, gegebenenfalls Vorgesetzten ermitteln sonst "ThisIsTheEnd" ausgeben
    tmpString = Evaluate(|@If(@Compare(@Right("| + NewString + |";"/"); "firma";[CaseInsensitive]);@DbLookup("";"mailserver/firma":"Mailkonfig.nsf";"Zuordnung";"| + NewString1 + |";2);"ThisIsTheEnd")|)
    sForward = tmpString(0)

    REM Prüfen ob "ThisIsTheEnd" herrauskam, wenn ja zum Ende springen
    If sForward = "ThisIsTheEnd" Goto TheEnd

    REM Die Felder der neu erzeugte Email mit den Inhalten der Felder der original Email füllen und anpassen
    docNew.SendTo = sForward
    tmpString = Evaluate(|"("+@DbLookup("";"mailserver/firma":"Mailkonfig.nsf";"Zuordnung";"| + NewString1 + |";3)+") "|)
    NewString = tmpstring(0)
    docNew.Subject = NewString+docnew.Subject(0)
    Call docNew.Send(False)

    TheEnd:
    End Sub