Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: addict84 am 29.07.15 - 08:24:04

Titel: Agent mit @mailsend
Beitrag von: addict84 am 29.07.15 - 08:24:04
Guten Morgen Community,
ich bin neu hier und wende mich gleich mit einer (für mich großen) Problemstellung an euch.
In der Forumssuche habe ich leider keine Antworten gefunden.

Also ich nutze in einer DB eine bestimmte Maske um Informationen zu sammeln und allen Mitarbeitern zur Verfügung zu stellen. Außerdem möchte ich das ein bestimmter Kreis bei einem neuen Dokument per Mail mit informiert wird (mit DokLink). Soweit so gut. Der Agent läuft auch, aber jedesmal wenn ich an dem Agenten etwas ändere (z.b. die Empfänger), sendet er für alle Dokumente an alle Empfänger erneut ein Mail.
Es scheint mir fast, als hätte er vergessen dass er das schon mal gemacht hat.
Außerdem sendet er auch gelöschte (obwohl ich das vermeintlich ausgeklammert habe)

Dokumentenauswahl:  Benutzt Maske 'Knowledgebase-Eintrag'
Aktion: @MailSend("Max Muster/";"";"";"Neuer Knowledgebase-Eintrag";"";"Es liegt ein neuer oder geänderter Knowledgebase-Eintrag vor " + @NewLine +"Thema: " + Kurzbeschreibung + @NewLine; [IncludeDoclink]);
SELECT (LÖSCHDATUM = "")
Trigger: Nachdem Dokum. erstellt oder geändert wurden

Für euch ist es bestimmt eine recht einfache Sache, aber ich kann mir beide Phänome nicht erklären (also das alle gesendet werden sobald ich etwas ändere und das gelöschte auch mit dabei sind (gelöschte sind aber nur bei der"ersten Runde" mit dabei wenn ich danach etwas ändere undweroder lösche, werde ich darüber nicht informiert, was auch so sein soll))


ps. sorry für den Roman ;-)
Titel: Re: Agent mit @mailsend
Beitrag von: Peter Klett am 29.07.15 - 08:58:39
Willkommen im Forum!

Als erstes würde ich den Empfänger definierbar machen (Einstellungsdokument, Profildokument o.ä.), dann brauchst Du den Agenten nicht anzufassen, wenn sich der ändert.

Ein neu gespeicherter Agent "vergisst" alles, was vorher war, deshalb würde ich mich nicht auf solche Steuerungen verlassen. Markiere die Dokumente, zu denen eine Mail gesendet wurde und berücksichtige das beim Versand. Z.B. so (ungetestet, ich würde das in Script schreiben, in diesem Jahrtausend habe ich wohl keinen Formelagenten solcher Art geschrieben)

Code
@If (Gesendet = "";@MailSend("Max Muster/";"";"";"Neuer Knowledgebase-Eintrag";"";"Es liegt ein neuer oder geänderter Knowledgebase-Eintrag vor " + @NewLine +"Thema: " + Kurzbeschreibung + @NewLine; [IncludeDoclink]); "");
FIELD Gesendet := "1"
Titel: Re: Agent mit @mailsend
Beitrag von: addict84 am 29.07.15 - 16:11:46
Sehr gute, Danke Peter.
Das werde ich mal probieren. Mit LS kenne ich mich leider nicht aus, bin noch Laie im Bereich ;-)

Die editierbare Einstellung würde ich dann mit dblookup versuchen?!

VG
Marcel
Titel: Re: Agent mit @mailsend
Beitrag von: Peter Klett am 29.07.15 - 17:09:10
@DBLookup ist eine Möglichkeit, wenn Du ein separates Dokument für Einstellungen hast / baust.

Alternativ kannst Du auch mit Profildokumenten arbeiten, @GetProfileField und @SetProfileField wären da die relevanten Formelbefehle.

Ist Geschmacksache ...
Titel: Re: Agent mit @mailsend
Beitrag von: addict84 am 30.07.15 - 14:53:14
Profildokumente sind mir ehrlich gesagt noch recht fremd, daher würde ich da bei mir selbst eine größere Baustelle aufmachen müssen
@dblookup ist mir da aktuell lieber

leider funktioniert folgende Variante nicht:
(es gibt ein Einstelldokument in dem die Namen der Kollegen Max Muster und Maxi Tester als Liste stehen)

Empfänger:=@Implode(@DbLookup("":"NoCache";EinstellServer : EinstellDatenbank;"Funktionen";"Test";2);":");

@If (LÖSCHDATUM = "" & gesendet = "";@MailSend(Empfänger;"";"";"Neuer Knowledgebase-Eintrag";"Es liegt ein neuer oder geänderter Knowledgebase-Eintrag vor " + @NewLine +"Thema: " + Kurzbeschreibung + @NewLine;""; [IncludeDoclink]);"");
FIELD gesendet:="1";


Trage ich die Namen konkret in den Agenten, dann macht er auch das was er soll, über die Variable leider nicht.
Frage ich mit einem Prompt ab wie die Empfänger aussehen kommt Max Muster: Maxi Tester

mir fehlt also irgendwie die Brücke aus diesem String dann eine kompatible Form für den Versand zu erstellen
Titel: Re: Agent mit @mailsend
Beitrag von: TRO am 30.07.15 - 15:02:54
Warum machst Du ein @Implode bei der Berechnung des Empfängers?
Dadurch wird doch aus der Empfängerliste ein skalarer String und taugt nicht zum Versenden.

hth

Thomas
Titel: Re: Agent mit @mailsend
Beitrag von: addict84 am 30.07.15 - 15:13:28
Hallo Thomas,

um die Zeichenkette nachzubilden die ich manuell erstellen würde/müsste.
Aber auch ohne Implode funzt es nicht

Marcel
Titel: Re: Agent mit @mailsend
Beitrag von: umi am 31.07.15 - 10:58:38
Moin

Beim @Mailsend sind die Empfänger entweder Text (=eine Person) oder eine TextListe (= mehrere Personen).
Beim @Implode machst Du aus der Textliste "Max Muster":"Maxi Tester" einen String
"Max Muster:Maxi Tester" .....  Der wird wohl so im Adressbuch nicht vorkommen...

Mit Script hättest Du ja einen Debugger zur Verfügung...
Titel: Re: Agent mit @mailsend
Beitrag von: Driri am 31.07.15 - 11:25:44
Was liefert denn DBLookup zurück ? Einen Text oder eine Textliste ? Laß dir doch mal via Prompt den Wert von @Elements(Empfänger) ausgeben. Dann siehst Du zumindest, wieviele Werte enthalten sind. Wenn da 1 zurück kommt, obwohl mehrere Werte enthalten sind, liefert der Lookup nur einen String zurück.

Dem könntest Du dann via @Explode entgegenwirken.
Titel: Re: Agent mit @mailsend
Beitrag von: addict84 am 31.07.15 - 12:42:23
Moin,

okay aber auch ohne implode gehts nicht, die Einstell-DB liefert eine Textliste, das passt also.
Script kann ich leider nicht, das hilft mir leider an der Stelle nicht wirklich.
Ich hab den Agenten jetzt erstmal mit allen Leuten manuell gefüllt, aber so richtig glücklich macht mich das nicht. Da Leider keine Fehlermeldung kommt, weiß ich nicht richtig wo ich ansetzen soll.
Hab schon die wildesten anderen Tipps aus dem Netz probiert, alles ohne Erfolg.


@prompt mit dem dblookup liefert mir zumindest den ersten Eintrag
@elements geprompt liefert mir gar nichts zurück, was ich gerade sehr seltsam finde
Titel: Re: Agent mit @mailsend
Beitrag von: TRO am 31.07.15 - 13:33:50
und was sagt @Text( @Elements() ) in Deinem Prompt?
Titel: Re: Agent mit @mailsend
Beitrag von: koehlerbv am 31.07.15 - 13:43:41
Ich würde mit dem dbLookup auch nicht auf eine Spalte zugreifen, sondern auf das wirklich zugrunde liegende Item mit der Textliste.

HTH,
Bernhard
Titel: Re: Agent mit @mailsend
Beitrag von: addict84 am 03.08.15 - 11:37:28
@tro
der liefert dann tatsächlich auch die Zahl der Einträge im Dokument

@bernhard
das bringt leider keinen Unterschied
Titel: Re: Agent mit @mailsend
Beitrag von: koehlerbv am 03.08.15 - 22:29:13
Entweder, im Inhalt Deines Empfängerfelds steht Murks, ode Du sendest, ohne das Dokument vorher zu speichern, denn das [IncludeDocLink] würde das Senden ohne Speichern kommentarlos verhindern.

HTH,
Bernhard
Titel: Re: Agent mit @mailsend
Beitrag von: addict84 am 04.08.15 - 08:40:55
der Agent läuft (auch mit Doc-Link) wenn ich den Namen in Klarschrift drin habe, also kann die zweite Fehlerquelle schon mal ausgeschlossen werden.
aktuell sieht das ganze Einstelldokument so aus:

Feldname: Bearbeiter
Datentyp: Textliste
Datenlänge: 18 Byte
Seq.-Num.: 9
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

"Max Muster"

Und der Agent:
Empfänger:=@DbLookup("":"NoCache";EinstellServer : EinstellDatenbank;"Funktionen";"EmpfängerInfomail";"Berater");

@If (LÖSCHDATUM = "" & gesendet = "" ;@MailSend(Empfänger;"";"";"Neuer Knowledgebase-Eintrag1";"Es liegt ein neuer oder geänderter Knowledgebase-Eintrag vor " + @NewLine +"Thema: " + Kurzbeschreibung + @NewLine;""; [IncludeDoclink]);"");
FIELD gesendet:="1";
SELECT @All


Durchsucht er vielleicht nur mein persönliches Adressbuch?
Titel: Re: Agent mit @mailsend
Beitrag von: ascabg am 04.08.15 - 09:03:34
hallo,

Ich habe mir jetzt nicht den biherigen Verlauf angesehen, aber, hast du denn schon einmal geprueft
was zum Zeitpunkt des Sendens in "Empfänger" enthalten ist?

Und was entaehlt "EinstellServer" und "EinstellDatenbank"?


Andreas
Titel: Re: Agent mit @mailsend
Beitrag von: addict84 am 04.08.15 - 09:57:50
hallo andreas,

wie gesagt ich habe die Prompts probiert (in einem der Dokumente um die es geht), die passen, dort werden die Namen angezeigt.
Die Serverangaben sind Felder in der Maske die dann die Hauptdatenbank und die dazugehörige Einstelldatenbank angeben. Ich gehe davon aus, dass der Agent in der Maske nachschaut und die dann auch nutzt?!

Habe nun die Daten bank und den Server direkt im Agenten eingetragen, keine Änderung im Verhalten
Titel: Re: Agent mit @mailsend
Beitrag von: addict84 am 04.08.15 - 10:31:43
um Betriebsblindheit ausszuschließen habe ich den Agenten nochmal neu erstellt und alle Formeln sauber aufgeschrieben (bzw. abgeschrieben) und siehe da, es funktioniert
ich gehe davon aus, dass der Fehler darin lag, dass die Server selbst nicht im Agenten sondern nur in der Maske, aus der aus der Agent gestartet wurde, enthalten waren; kombiniert mit einem Rechtschreib-/Leerzeichenfehler

Vielen Dank für eure Hilfe, jetzt läuft alles so wie es soll und ist auch noch ohne Designer editierbar, perfekt :)))