Autor Thema: Anfänger GetProfileDocument("OutOfOfficeProfile")  (Gelesen 7051 mal)

Offline Fanker

  • Frischling
  • *
  • Beiträge: 20

Lotus Client 8.5.2FP3
Domino Designer 8.5

Hallo,

ich möchte die Mail-Datenbanken auslesen, die aktuell den
Abwesendheitsagenten laufen haben:



Dim dbverz As NotesDbDirectory
Dim verz As String
Dim dbmail As NotesDatabase

verz = "\Mail"
Set dbverz = New NotesDbDirectory(verz)
Set dbmail = dbverz.GetFirstDatabase( Database )
Set dbmail = session.CurrentDatabase


Do While Not (dbmail Is Nothing)
      On Error Resume Next

?? Wenn ooo ist aktiviert
   ?? GetProfileDocument("OutOfOfficeProfile")
               ?? do while (Adressaten) ??
             ?? GetProfileField("OutOfOfficeProfile";"notified")
                         ?? next Adressaten
                ?? Loop
?? ende


Set dbmail = dbverz.GetNextDatabase
Loop


Sobald eine DB gefunden wurde, möchte ich die 'Haken' aus dem Feld
'bereits benachrichtigt' herausnehmen.

Nur weiß ich nicht wie dieses Profile-Dokument aufgebaut ist.
Vermutlich muss hier wieder ein do while Loop über die Informierten
'Absender' laufen.

Kann mir jemand weiterhelfen?

Vielen Dank.

 


Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #1 am: 23.10.12 - 15:21:19 »
Hallo,

Was genau willst Du denn mit Deinem Script erreichen?

Und was machst Du, wenn auf Eurem/Euren Servern eingestellt ist, dass die Out of Office Benachrichtigung nicht als Agent,
sondern als Service laufen soll?


Andreas

Offline shiraz

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 648
  • Geschlecht: Männlich
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #2 am: 23.10.12 - 15:26:04 »
http://www-01.ibm.com/support/docview.wss?rs=899&uid=swg21212467

kann dir helfen... ;D


"tell router o" ist auch nicht schlecht.
« Letzte Änderung: 23.10.12 - 15:32:24 von shiraz »
Gruß
Christian

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #3 am: 23.10.12 - 15:35:05 »
@shiraz
Gesetzt den Fall, es laeuft wirklich der Agent, bin ich mir nicht sicher ob hier Dein tell router o auch wirklich etwas anzeigt.


Andreas

Offline Fanker

  • Frischling
  • *
  • Beiträge: 20
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #4 am: 23.10.12 - 16:09:49 »
Hallo,

ein tell router o ergibt

Out of office service is activated in the following databases:
... 12 Mail-DB's
Completed scan for active Out of office service.

Im Router>SMTP > Erweitert ist
Abwesenheitstyp:   Service
aktiviert.

Ich möchte erreichen, dass die Benachrichtigung an den Absender alle 7 Tage neu erfolgt.
..und soviel ich mitbekommen habe, wird der Absender in eine 'Liste' eingetragen und bei jeden neuem Maileingang überprüft, ob der Absender bereits
eine Abwesenheitsnachricht bekommen hat.

Daraus folge ich, dass man den Absender löschen könnte oder ein Feld 'bereits
eine Nachricht versendet' auf 0 setzen könnte - Dann würde die Person noch einmal über die Abwesenheit informiert werden.

Nur weiß ich nicht wie diese Profil-Dokumente - mit der Absenderlise - aufgebaut sind.

Vielen Dank für eure Unterstützung.


 




   

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #5 am: 23.10.12 - 16:47:31 »
Also nutz ihr bereits den Service.

Dann bringt Dich das OutOfOfficeProfile nicht wirklich weiter, da dieses, wenn ich das noch richtig im Kopf habe, vom Service nicht verwendet wird.

Ich glaube in der Maske (OOOServiceReport) gibt es ein Feld d_NOtifyNames, in dem die Namen der bereits benachrichtigten Personen enthalten sind.
Jedoch weiss ich nicht mehr genau, ob dieses auch als Profile-Dokument abgelegt wird.

Eventuell kannst Du ja mit entsprechenden Tools, z.B. NotesPeek, herausfinden, ob es sich hierbei um ein Profile handelt.


Andreas

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #6 am: 23.10.12 - 17:17:53 »
Das ist nicht korrekt @Andreas: Das OOO- Profile wird auch für die Konfiguration des Service verwendet (das Feld TaskType ist dabei für die Info Agent oder Service zuständig). Des weiteren gibt es noch ein "ooserviceprofile", das ebenfalls Daten enthält.

Die Liste der benachrichtigen User steht im OOO- Profile im Feld "Notified".
Was mich gerade etwas "neugierig" macht ist dieser Code im OutOfOffice- Agenten:
Code
If Me.m_nMultiNotification <> "0" Then			
						Call NotifySender(Me.m_noteDocument)		
					Else
wobei sich m_nMultiNotification auf das Feld "NotificationConfirmation" aus dem OOO- Profile bezieht, aber nur wenn im Kalenderprofile das selbe Feld gefüllt ist... siehe hier:
Code
		If Me.m_CalendarProfile.HasItem("NotificationConfirmation") Then
			Me.m_nMultiNotification = Me.m_OutOfOfficeProfile.GetItemValue("NotificationConfirmation")(0)
			If Me.m_nMultiNotification<> "0" Then
  				Me.m_nMultiNotification = "0"
			End If
			
		Else
			Me.m_nMultiNotification = 0
		End If
Offensichtlich hat hier mal jemand angefangen an "Multi- Notifications" zu arbeiten. Aber die Art und Weise, wie der Code geschrieben ist, lässt mich darauf schliessen, dass das nicht zu Ende gemacht ist (einmal Me.m_nMultiNotification = 0 also numerisch, dann wieder abgefragt auf "0" also Text....)... Dann wird ein Feld im CalendarProfile abgefragt, ob es gefüllt ist und danach das selbe Feld aus dem OOO- Profile gelesen... Da hat jemand Megamässig rumgepfuscht...
« Letzte Änderung: 23.10.12 - 17:20:29 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #7 am: 23.10.12 - 19:25:23 »
@Tode
Das das 'alte' OOO-Profile auch weiterhin verwendet wird, stelle ich nicht in Abrede.

Aber ich habe es eben in meiner Testumgebung nochmals nachgestellt.

Im Mailfile des Benutzers, der den OOO-Agent (Service) aktiviert hat, gibt es das OOServiceProfile.
In diesem wiederum gibt es ein Feld Notified_<Servername>.

In diesem Feld wird gespeichert, welche Benutzer bereits benachrichtigt wurden.

Der Servername bezieht sich aller Wahrscheinlichkeit auf den Server, auf dem siich das Mailfile des Benutzers befindet, der den 'Agenten' aktiviert hat.


Andreas

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #8 am: 23.10.12 - 22:54:11 »
Ok... Ich war echt der Meinung, dass das auch im oooprofile gespeichert wird... Weil das ooservice- profile hatte ich bei mir untersucht, und das war nur ein stub mit sehr wenigen Infos. danke für die Richtigstellung. Jetzt haben wir ja alle infos zusammen, die der Fragesteller braucht, um seine Aufgabe zu bewältigen.

Noch ein tipp: ibm vertraut selbst nicht auf das Feld TaskState des ooo profile wenn es darum geht, herauszufinden, ob der ooo- service aktiviert ist oder nicht (eigentlich sollte dieses Feld genau das anzeigen). In der entsprechenden scriptlib findet man bei der suche nach taskstate den code, den Ibm verwendet, um sicherzustellen, dass der ooo service WIRKLICH aktiviert oder deaktiviert ist...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Fanker

  • Frischling
  • *
  • Beiträge: 20
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #9 am: 24.10.12 - 09:25:59 »
Hallo,

vielen Dank für eure Unterstützung.

Wenn ich es richtig verstanden habe sollte ich mit

if GetProfileField("OutOfOfficeProfile";"TaskType") <> 0 then

               ??     GetProfileDocument("OOServiceProfile")
                ??    GetProfileField("OOServiceProfile";"Notified_Servername")
       end if
 


überprüfen, ob der Agent des Users gestartet wurde. Anschließend im OOServiceProfile die Liste der benachrichtigten Personen durchsuchen.

Gibt es hierzu auch eine Funktion GetNextField?
Oder wird bei der Funktion "Notified_Servername" eine Liste zurückgegeben?

TaskState: Wie finde ich die scriptlib bzw. den Beispielcode gibt es dazu einen Link für mich?

Vielen Dank

 



Offline smokyly

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
  • Nicht jeder ist ersetzbar.
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #10 am: 24.10.12 - 09:32:42 »

Ich möchte erreichen, dass die Benachrichtigung an den Absender alle 7 Tage neu erfolgt.

Das heißt, den schon informierten Sender nach 7 Tagen wieder zu informieren - Sender A schickt am Montag eine Mail und bekommt Benachrichtigung, dann eine Woche später wieder am Montag, Sender B schickt am Dienstag und... wieder am Dienstag?

Dazu braucht man dann aber noch eine Beziehung zwischen Sender und Tag der Benachrichtigung.
Geri

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #11 am: 24.10.12 - 09:40:54 »
1. TaskType ist ein Text, und da steht = "1" für Agent und ="2" für Service...
2. Wenn Du den Servernamen nicht kennst musst Du über Forall item in doc.Items gehen und prüfen ob Left( item.Name , 9 ) = "Notified_"
3. Wie bereits geschrieben: Dir fehlt noch die Relation zwischen Eintrag in Notified_xxxx und dem Datum zu dem der eingetragen wurde...Das musst Du Dir irgendwo merken...
4. Scheint mir das alles ne Nummer zu gross für Dich zu sein... Wir haben Dir doch jetzt wirklich fast alles vorgekaut, wenn Du da keinen funktionierenden Code rauskriegst, dann solltest Du dringend über eine LotusScript- Programmierungs- Schulung nachdenken...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #12 am: 24.10.12 - 09:58:29 »
Jetzt muss ich Tode vollkommen zustimmen.

Zumal in keinem der genannten Profile-Dokumenten in irgendeiner Art und Weise vermerkt wird, wer an welchem Tag (Datum) die Benachrichtigung erhalten hat.
Und allein das noch zusaetzlich zu implementieren ist schon nicht einfach, zumal wenn der Service aktiv ist.

Ich koennte mir nur vorstellen, einen eigenen kleinen Agenten zu schreiben, der 1x am Tag laeuft, das OOOServiceProfile ausliest, und in einer gemerkten Liste der Namen vom Vortag vergleicht, wer wurde alles neu in das Notified_-Feld geschrieben.
In einem eigenen kleine Profile merke ich mir nun die Namen + Datum, nachdem ich vorher noch verglichen habe, wer aus meiner Liste wurde vor 7 Tagen hinzugefuegt. Diese Namen loesche ich aus dem Notifed_-Feld.

Vorher natuerlich noch die Pruefung einbauen, ob der Service bzw. der Agent aktiv ist, da man ja nicht vollstaendig ausschliessen kann, dass doch noch irgendwer den Agenten verwendet. (Schablone des Mailfiles ist nicht auf Version 8.x)


Andreas

Offline Fanker

  • Frischling
  • *
  • Beiträge: 20
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #13 am: 24.10.12 - 10:46:40 »
Es soll erreicht werden, dass die Sender, wenn sie in der nächsten Woche erneut schreiben, wieder einen Hinweis bekommen dass der Empfänger Abwesend ist.
Bei drei Wochen Urlaub somit evt. 3 mal eine Abwesenheitsnachricht.
Unabhängig davon, ob die Nachricht am Montag oder Dienstag gesendet wurde.
Ab Sonntag dann - alle 7 Tage die Einträge entweder löschen, oder das Kennzeichen entfernen dass sie eine Nachricht erhalten haben.

Es ist somit nicht relevant an welchem Tag der Sender informiert wurde. Wenn er am Freitag das erste mal schreibt wird er am Montag wieder einen Hinweis bekommen .. aber dann erst weider am darauf folgendem Montag.

Es ist ein Vergleich der Namenslisten somit nicht erforderlich. Ich möchte nur die Senderliste auslesen und diese entweder löschen oder das Kennzeichen entfernen, dass sie eine Nachricht bekommen haben (sofern es das gibt).

Nur weiß ich nicht wie diese Notfied Liste aussieht. Muss eine Schleife über die Liste laufen? oder erhält man ein  (beispielsweise) Array zurück?
Gibt es hinter dem Namen ein Feld 'wurde benachrichtigt' ?

Ich bin Script-anfänger und möchte nun etwas weiter kommen.
Ich habe eine Testumgebung und werde natürlich die Liste -erst einmal- nicht wirklich löschen.

Vielen Dank für eure Geduld



 





 

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #14 am: 24.10.12 - 11:04:31 »
Also unter diesen Voraussetzungen ist es absolut nicht relevant, wie die Liste in dem basgten Feld des Profiles aussieht.

Du musst doch nur alle Eintraege in diesem Feld loeschen.

NotesDocument.Notified_<Servername> = "" oder

NotesDocument.RepliceItemValue("Notified_<Servername>, "")

und danach ein NotesDocument.Save(True, False)


Andreas

Offline Fanker

  • Frischling
  • *
  • Beiträge: 20
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #15 am: 24.10.12 - 14:22:23 »
Vielen Dank :-)

Ich habe vermutet das es ein ja/nein-Feld hinter dem Sendernamen gibt, worin gespeichert wird dass er eine Nachricht erhalten hat, aber vermutlich wird der Sender nur in die Liste eingetragen sobald er eine Abwesenheitnachricht bekommt: Ist er in der Liste, hat er eine Abwesenheits-Nachricht erhalten - Ist er nicht in der Liste, hat er keine Abwesenheits-Nachricht erhalten.

Also reicht ein Löschen der Liste.

Ihr habt mir sehr geholfen, damit komme ich jetzt weiter. Vielen Dank für
eure Geduld.

 

   

Offline Fanker

  • Frischling
  • *
  • Beiträge: 20
Re: Anfänger GetProfileDocument("OutOfOfficeProfile")
« Antwort #16 am: 09.11.12 - 08:52:55 »
Hallo 
vielen Dank ich habe es soweit hinbekommen, aber..

Im Test habe ich jetzt die Values im "ooserviceprofile" gelöscht:

sItemName = "Notified_SERVERMAIL/TEST"
sProfileName = prfdoc.Nameofprofile
                  
If sProfileName = "ooserviceprofile" Then
     If prfdoc.Hasitem(sItemName) Then
         Call prfdoc.Replaceitemvalue(sItemName,"")
         Call prfdoc.Save(True, False)
     End If
     Exit Do
End If


Über debug habe ich die Einträge geprüft im Feld Items Values steht
korrekt
VALUE  [""]


Jetzt bin ich davon ausgegangen, dass damit die Sender erneut
eine Banachrichtigung erhalten?

Was habe ich noch vergessen?




 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz