Autor Thema: Mail Schablonen und variable eMails  (Gelesen 5403 mal)

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich
Mail Schablonen und variable eMails
« am: 27.09.05 - 15:37:14 »
Hallo Leute,

bin relativer Anfänger mit eurem !!Help!!-Tool. Deswegen paar Anfänger-Fragen  O0

Wir benutzen Lotus Notes 6.5.4 und momentan noch !!Help!! 1.0.10 BETA2
Upgrade auf Final wird bald erfolgen

Wir haben es jetzt soweit, dass !!Help!! grundsätzlich funktioniert aber wir haben noch Probleme mit den Mail Schablonen (Mail Templates).

Wie funktionieren die? Was für Schlüssel muss ich da angeben?
z.B. wie verändert man das Aussehen bzw. den Text einer Mail, die automatisch an einen User geschickt wird, wenn sein Ticket angenommen wird??
Zum einen geht das ja über Sprachdokument -> Ticket Actions & Strings -> msgTicketClick
Alles was man da rein schreibt, wird ja im Body der eMail eingetragen.

Für was braucht man dann Mail-Schablonen und wie funktionieren diese?? Wie stellt man ein, ob der Text aus msgTicketClick oder aus der MailSchablone genommen wird?

Dann noch eine zusätzliche Frage zu Variablen in msgTicketAssigned: Wenn ich darin z.B. folgenden Text habe: "Hallo ~~&User~~ ! Ihr Ticket wurde angenommen", dann wird ~~&User~~ durch einen Usernamen ersetzt.
Wenn ich aber das Gleiche bei msgTicketClick eintrage, dann bleibt wortwörtlich ~~&User~~ bestehen und der Username wird nicht eingetragen.....wo ist der Unterschied bzw. das Problem?


zur Mail Schablone:
Unter Konfiguration -> Systemparameter -> MailSignatureEventName ist ja z.B. IsAcceptedMail aufgelistet. Verstehe ich das richtig, dass ich neue Schablonen nur mit diesen Schlüsseln (z.B. IsAcceptedMail) erstellen kann??
Bzw: gibt es ein klar verständliches Tutorial, dass die Mail Schablone für Dummies erklärt :) ?!?
Habe im Forum und im OpenWiki nichts dazu gefunden bzw. nichts was es mir verständlicher macht

Vielen Dank für jede Hilfe & grüße,
baces
BaCeS

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Mail Schablonen und variable eMails
« Antwort #1 am: 27.09.05 - 16:14:15 »
Mail Schablonen kannst du grundsätzlich ohne diese Schlüssel erstellen. Die sollte er dir eigentlich in diesem Fall erst gar nicht anbieten. ???
Mail Signaturen hängt er wenn eine Mail aus dem System versendet wird bzw. auch dann wenn eine manuell erstellte Mail aus den System heraus gesendet wird unten an.
Die Mail Signaturen könnne die msg...Click ersetzen. Müssen sie aber nicht. Grundsätzlich ist es so das msg...Click vor einem möglichen Link steht.
Sowohl in Mail Signaturen als auch in Mail Schablonen funktioniert es das du mit <<Feldname>> irgendwo ein Feld einträgt das er dann zur Laufzeit aus dem jeweils gültigen Dokument holt.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich
Re: Mail Schablonen und variable eMails
« Antwort #2 am: 28.09.05 - 09:43:18 »
Hi Thomas!
Danke für die Antwort! Du hast recht, die Schablonen werden erst später angeboten.

Was msg...Click betrifft, so hab ich folgende Anpassung vorgenommen.



Leider gibt er jedoch nicht die Variablen im Body nicht aus, in der Betreffzeile aber schon.  :-:



Die Syntax für die Variable ist aber doch identisch zu der in den anderen msg....Clicks wo die Ausgabe funktioniert?!? Oder verstehe ich da was falsch?

Danke für eure !!HELP!!

BaCes
BaCeS

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Mail Schablonen und variable eMails
« Antwort #3 am: 28.09.05 - 10:45:30 »
Beim CreateNewTicket wird diese Click Nachricht aktuell nicht geparst. D.h. hier kannst du auch keine Feldnamen eintragen.
Ändern kannst du das wenn du in der "lib.appl.functions" die "Createnewtickets" Routine durch das hier ersetzt:
Function CreatenewTicket(me_db As NotesDatabase, me_doc As notesdocument) As String
%REM
###################################################################################
Goal: This function creates a new Ticket out of a mailed document

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Arguments: Description:
me_db      Notesdatabase                        The Calling Notes DB
me_doc   Notesdocument                        the document that is worked on
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Return:
string                                             UNID of the created document
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Example:
UNID = CreatenewTicket(db,doc)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
VERSION / WHEN / WHO / CHANGES
1.0/24.03.2005/Thomas Schulte/none
1.1/4.04.2005/eknori/ErrorHandling for fields
1.2/06.06.2005/Thomas Schulte/Handling of two different document types (memo/Reply and newbugreport)
1.3/02.08.2005/Thomas Schulte/Creating info mail the same way the save event within the bugReoprt form does
'###################################################################################
%END REM   
   Dim newticket As NotesDocument
   Dim item As NotesItem
   Dim rtitem As NotesRichTextItem
   Dim rtBodyNewTicket As NotesRichTextItem
   Dim problem As String
   Dim plainText As String
   Dim asubject As Variant
   Dim namesfield As Variant
   Dim uniquenumber As Variant
   Dim maxProblemLength As Integer
   Dim me_notesitem As NotesItem
   Dim docmailsend As String
   Dim evalstring As String
   Dim evalvar As Variant
   Dim isnotesuser As Boolean
   Dim message As String
   Dim messageClick As String
   Dim messageintern As String
   Dim messagestringsplit As Variant
   Dim ok As Boolean
   
   
   Const NEW_LINE = Uchr$(13)
   
   On Error Goto ERRHANDLE
   createnewticket = ""
   
   Set NewTicket = New NotesDocument( me_db )
   If me_doc.form(0) = "newBugReport" Then
      ' Copy the all the documents items into the new document
      Call me_doc.CopyAllItems(newTicket,True)
   Else
      If me_doc.HasItem("From") Then
         Set item = me_doc.GetFirstItem( "From" )
         Call item.CopyItemToDocument ( NewTicket, "User")
      End If
      If me_doc.HasItem("CopyTo") Then
         Set item = me_doc.GetFirstItem( "CopyTo" )
         Call item.CopyItemToDocument ( NewTicket, "OtherUsers")
      End If
      If me_doc.HasItem("Body") Then
         Set rtitem = me_doc.GetFirstItem( "Body" )
         If ( rtitem.Type = RICHTEXT ) Then
            plainText = rtitem.GetFormattedText( False, 0 )
         End If
         ' find the max melnth of the problem text
         maxProblemLength = Cint(GetConfigDocByKey("MaxLengthProblemDescription"))
         Problem = Left$(plainText,maxProblemLength)
         Set  rtBodyNewTicket = New NotesRichTextItem ( NewTicket, "Body" )
         Call rtBodyNewTicket.AppendRTItem( rtitem)      
      End If
      If me_doc.HasItem("Subject") Then
         Set item = me_doc.GetFirstItem ("Subject")
         Set item = NewTicket.ReplaceItemValue("problem", item.Text & NEW_LINE & NEW_LINE & Problem)      
      End If
      If me_doc.HasItem("DeliveredDate") Then
         Set item = me_doc.GetFirstItem( "DeliveredDate" )
         Call item.CopyItemToDocument ( NewTicket, "DateCreated")      
      End If
   End If
   ' Create the unique Number of the ticket
   Uniquenumber = Evaluate(|@unique|)
   Set item = NewTicket.ReplaceItemValue("ReqNumber",Uniquenumber)
   ' create the asubject field
   asubject = CreateASubject(newticket,"ASubjectMail")
   If Isarray( asubject) = True Then
      Set item = NewTicket.ReplaceItemValue("ASubject",asubject)
   End If
   Set item = NewTicket.ReplaceItemValue ("Form", "BugReport")
   Set Item = NewTicket.ReplaceItemValue("FormType","Ticket")
   Set item = NewTicket.ReplaceItemValue ("Status", "0")
   Set item = NewTicket.ReplaceItemValue ("Escalated", "0")
   Set item = NewTicket.ReplaceItemValue ("Rerouted", "0")
   Set item = NewTicket.ReplaceItemValue ("transformed", "1")
   ' build the reader and the authors field if necessary
   If Ucase(GetConfigDocByKey("LockDocumentsgeneral"))="YES" Then
      ' create the readers field
      namesfield = CreateNamesField(newticket,"LockDocumentsTicketReaders")
      If Isarray( namesfield) = True Then
         Set item = NewTicket.ReplaceItemValue("AReaders",namesfield)
         item.IsReaders = True
      End If
      ' create the authors field
      namesfield = CreateNamesField(newticket,"LockDocumentsTicketAuthors")
      If Isarray( namesfield) = True Then
         Set item = NewTicket.ReplaceItemValue("AAuthors",namesfield)
         item.IsAuthors = True
      End If
   End If
   Call NewTicket.Save (True,True)
   
   ' Create a mail message because his is a new ticket
   ' Get the messages for this document
   message = GetLanguageStringByKey(GetConfigDocByKey("Language"),"TICKET ACTIONS & STRINGS","msgTicketAssigned")
   ' split this string search the fields and reconnect it
   Messagestringsplit = Split(Message,"~~")
   Message = ""
   For i = 0 To Ubound(Messagestringsplit) Step 1
      messageintern = ""
      If messagestringsplit(i) <> "" Then
         If Left(messagestringsplit(i),1) = "&" Then
            ' This is a field get the value of that field
            messageintern = itemtextexists(NewTicket,Right(messagestringsplit(i),Len(messagestringsplit(i))-1))
         Else
            messageintern = messagestringsplit(i)         
         End If
      End If
      Message = Message + messageintern
   Next
   ' check if there
   ' Get the messages for this document
   messageclick = GetLanguageStringByKey(GetConfigDocByKey("Language"),"TICKET ACTIONS & STRINGS","msgTicketClick")
   ' split this string search the fields and reconnect it
   Messagestringsplit = Split(Message,"~~")
   Messageclick = ""
   For i = 0 To Ubound(Messagestringsplit) Step 1
      messageintern = ""
      If messagestringsplit(i) <> "" Then
         If Left(messagestringsplit(i),1) = "&" Then
            ' This is a field get the value of that field
            messageintern = itemtextexists(NewTicket,Right(messagestringsplit(i),Len(messagestringsplit(i))-1))
         Else
            messageintern = messagestringsplit(i)         
         End If
      End If
      Messageclick = Messageclick + messageintern
   Next
   'is a field that steers mail information sending
   If itemTextExists(NewTicket,"fldMailIfNew") = True Then
      Set me_notesitem = NewTicket.GetFirstItem("fldMailIfNew")
      docmailsend = me_notesitem.text
   Else
      docmailsend = ""
   End If
   '   doc.form = "BugReport"
   ' check if the user is a notes user because only this ones get documents with links
   Evalstring = |@unique(@NameLookup ( [Exhaustive]; "| + newticket.user(0) + |" ;"FullName"))|
   EvalVar = CheckAndEvaluate(Evalstring)
   If Isempty(EvalVar) Then
      isnotesuser = False
   Else
      isnotesuser = True
   End If
   
   
   ' send the mail either as mail with link or as mail
   If Ucase(GetConfigDocByKey ("NoNotification")) = "YES" Or docmailsend = "NO"  Or (Ucase(GetConfigDocByKey ("MailIfNewDocDispatcher")) <> "YES" And docmailsend = "")Then
         ' do not do anything
   Else
      If Ucase(GetConfigDocByKey ("MailIfNewDocDispatcherLink")) = "YES" And isnotesuser= True Then
         BoolLink = True
      Else
         BoolLink = False
      End If
         ' Send Mail
      OK = Spoofmessage(_
      GetConfigDocByKey("sendMailonBehalfof"),_
      newticket.user, _
      newticket.otherusers,_
      message,_
      messageclick,_
      doc,_
      "",_
      GetConfigDocByKey("MailIfNewDocDispatcherBodyFieldName"),_
      BoolLink,_
      True,_
      "BugReport",_
      "IsNewMail")         
   End If
   Createnewticket = newticket.UniversalID
   
EXITPOINT:
   Exit Function
ERRHANDLE:
   xProc = Getthreadinfo(LSI_THREAD_PROC)
   xError = xProc  & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
   If UseOpenLog Then
      Call LogError
   Elseif LogScriptErrors Then
      Call ThrowException ( xProc, xError  )
   End If
   Print xError   'In all cases
   If ResumeMethodNext Then
      Resume Next   
   Else
      Resume EXITPOINT
   End If   
End Function
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich
Re: Mail Schablonen und variable eMails
« Antwort #4 am: 28.09.05 - 15:00:10 »
Hallo Thomas,

danke für die schnelle Antwort.

Jetzt noch eine Frage von einem Nicht-Programmierer:

Wenn ich die Function ersetze, bekomme ich noch einen Script Fehler:

Varaiable nicht deklariert in Zeile 161: CHECKANDEVALUATE  ???


 
 
BaCeS

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich
Re: Mail Schablonen und variable eMails
« Antwort #5 am: 28.09.05 - 16:14:54 »
und noch ein Problem :)

Wir haben jetzt die Änderung gemacht und gleichzeitg auch auf die Finale Version 1.0.10 upgedatet.

Jetzt bekommen wir bei jedem Doppelklick auf ein Ticket folgende Fehlermeldung:
Field: Set Validation: Entry not Found



Nochmals Danke

Grüße
BaCeS

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.710
  • Geschlecht: Männlich
Re: Mail Schablonen und variable eMails
« Antwort #6 am: 28.09.05 - 16:24:06 »
gucke mal in die Konfigurationsdokumente; da scheinen die Docs für die Feldvalidierung zu fehlen ( ValidationMail, ValidationTicket und ValidationToDo ).

Thomas ist auf dem Weg zu mir; heute abend haben wir dann die komplette !!HELP!! Competence an einem Rechner vereint  ;D
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich
Re: Mail Schablonen und variable eMails
« Antwort #7 am: 29.09.05 - 07:51:18 »
 :-* JupeeHuraaah! Es funktioniert alles! Vielen Dank! Wir testen dann mal fleißig weiter!
Ein kleiner Zusatz für die nächste Version, der für die Übersicht ganz schön wäre: die Anzahl der Tickets von/zu einem User könnten schön in Klammern neben dem jeweiligen User stehen. Dann wüsste man immer sofort, wem man auf die Finger klopfen muss ;)
BaCeS

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich
Re: Mail Schablonen und variable eMails
« Antwort #8 am: 29.09.05 - 10:39:30 »
jetzt hab ich zwar die Änderung von Thomas für das CreateNewTicket gemacht... (die fehlende Variablendefinition hab ich oben beim DIM eingebaut), aber.... bekomme zum einen im CreateNewTicket einen Fehler, zum anderen auch beim Agent. Beim Agent mit dem Effekt, daß alle MailTickets immerwieder als neue Tickets erscheinen, obwohl sie als Tickts aufgenommen wurden. Und die vermehren sich "selbständig" bei jedem Agent Durchlauf  ???

Soll ich lieber die Änderung im CreateNewTicket rückgängig machen?  :-[
BaCeS

Offline baces

  • Aktives Mitglied
  • ***
  • Beiträge: 148
  • Geschlecht: Männlich
Re: Mail Schablonen und variable eMails
« Antwort #9 am: 29.09.05 - 12:38:28 »
okay ... wir haben die Veränderung von CreateNewTicket zurück genommen und das Original eingespielt und jetzt sind alle Fehler weg.... alles roger jetzt :)

noch ne kleine Verständnisfrage:
links im Menü unter "Aufgaben in Bearbeitung" gibt es einen Menüpunkt namens "Annehmen". Für was ist der?? Irgendwie ist der bei unseren Tests nie gefüllt.
BaCeS

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz