InfoCenter Com API

  • Hi ich bin neu im Forum.



    Ich habe 3 Fragen


    1) gibt es für das InfoCenter d.h. der göffnete MailClient eine Com-Schnittstelle, die ich von C# aus bedienen kann.



    2) gibt es eine Möglichkeit ein Event zu registrieren, wenn der Benutzer die Mail versendet hat (und wie finde ich sie wieder)



    3) gibtg es eine Möglickeit den Mailclient um eigene Buttons, Menues zu erweitern und wie hinterlege ich den aufzurufenden Code



    Es wäre Super wenn andere dieses Problem schon gehabt und gelöst hätten.


    Für jeden tipp dankbar.


    Peter

  • Hallo Peter,


    zu 1.: Ja, die DvAPI. Findest Du im Downloadbereich Deines TSSM Accounts (Account der Lizenz).


    zu 2.: Nein, soweit mir bekannt nicht. Wie genau soll der Workflow werden den Du realisieren willst?
    Bei CRM oder ERP Anbindungen gibt es meist zwei Standardwege. Bei work ... for all! kann man z.B. per Rechtsklick aus David E-Mails zuordnen (so gehen die meisten Tools damit um) oder E-Mails direkt aus der work ... for all! E-Mail Maske versenden. Der Versand erfolgt mit entsprechender Einstellung dann über die API und damit über David. Die versendete E-Mail liegt also im CRM System und in David.
    Das schöne hieran ist, dass man mit entsprechender Programmierung auch die @@-Befehle (z.B. @@Warten, @@VCF, @@VON, etc.) und damit viele David eigene Features nutzen kann.


    zu 3.: Ja, mit Client Scripts die in David\Code\Scripts abgelegt werden. Sprache entweder Javascript oder VBS. In diesem Verzeichnis findest Du einige Beispiele und die Schnittstellenbeschreibung. Die Scripte werden im David Administrator in den Benutzereigenschaften unter Benutzerdaten hinterlegt, aktiviert und werden beim Clientstart geladen.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hi


    Das ist ja schon mal was



    zu 1) mit der DvApi kann ich meines Wissens nicht mit dem Client kommunizieren, Also Client aufmachen eine Mail erzeugen und dann den Benutzer den Rest machen lassen



    Der Workflow sollte bei mir so aussehen



    a) Client wenn noch nicht geöffnet öffnen


    b) Ein paar Standarddaten an den Client übergeben (z.B. to, CC, BCC default subject ...)


    c) der User vervollständigt die mail mit body und Attachments


    d) Nach dem Versenden bekomme ich einen Zugriff auf die versendete Mail umd die Daten im CRM System abzulegen.



    Also genau wie Du es im Punkt 2 beschrieben hast



    zu 2) genau das suche ich, wo gibt es Besipiele dazu



    zu 3) So werde ich es machen und dann mittels eines VBSScripts meiner Applikation ein Event zusenden.



    Weiter Frage eines Neulings bei Tobit



    Was sind bitte @@-Befehle und wie und wo kann ich sie einsetzen ??



    Kannst Du mir zu Punkt 2 helfen.


    Gruß


    Peter

  • Hallo Peter,


    korrekt, die API kommuniziert nicht mit dem Client, sondern direkt mit dem David Server.


    Mittels des Client-Scripting kannst Du mit dem Client kommunizieren.


    Was ich in 2. beschrieben hatte war nicht ganz was Du suchst, sondern genau die andere Richtung. Also im CRM eine eigene E-Mailmaske programmieren, die dann nur die Daten beim Klick auf Senden an David oder Outlook abgibt.


    Du kannst den sog. TIC Befehl benutzen. Schau mal in diesem Beitrag: email erstellen und in InfoCenter zum Versenden anzeigen


    Problematisch ist aber die Rückmeldung, die erfolgt nicht. D.h. Du musst Dir die Nachricht irgendwie im Ausgang des Users suchen.


    Eine Alternative wäre, eine neue Nachricht zu erzeugen und zu speichern, diese dann per dvwin-Parameter (siehe unten oder KB Artikel Q-106.693) zu öffnen und die gespeicherte Nachricht im Ausgang zu löschen. Aber auch hier fehlt Dir die Rückmeldung oder die Referenz auf die versendete Nachricht.



    Aber wie oben gesagt, eine Möglichkeit ist auch, das Ganze mit einer eigenen E-Mailmaske in Deinem CRM zu lösen und die Daten dann an die entsprechenden Programme zu übergeben.



    David Befehle

    Zitat

    Aus der David Hilfe (Im Client F1, dann im Inhalt auf "David Befehle")
    David unterstützt eine Vielzahl von Kommandos, so genannte »David Befehle«, mit denen der Anwender das Layout von Nachrichten und deren Versand beeinflussen kann. Der wohl wichtigste dieser Befehle dient der Angabe der Zieladresse (z.B. Faxnummer oder eMail-Adresse). Weiterhin können Sie mit David Befehlen beispielsweise den Versandtermin festlegen, das optische Layout bei Faxaufträgen regeln oder Rundsendungen erstellen.


    David Befehle können direkt innerhalb des Nachrichtentextes von Sendeaufträgen verwendet werden. Sie sind hierbei durch eine so genannte »Befehls-ID« zu kennzeichnen. Üblicherweise besteht diese Befehls-ID aus zwei direkt aufeinanderfolgenden @-Zeichen. (...)

    Zitat

    Bsp. @@WARTEN@@ / @@WRT@@
    Wenn man den Text @@WARTEN@@ in eine Nachricht schreibt, dann wird dieser Text beim Versenden vom David Service Layer ausgewertet und aus dem Nachrichtentext entfernt. Der Befehl selbst hat zur Folge, dass die Nachricht im Wartezustand (nur bei externen Nachrichten möglich) in das Versandbuch gestellt wird.


    Die schließenden @@-Zeichen werden nur dann benötigt, wenn man mehrere Befehle in eine Zeile schreiben will. Man sollte aber versuchen diese möglichst immer zu verwenden um Fehlern vorzubeugen.


    In der Hilfe (F1 im Client) findest Du alles was Du brauchst. Es gibt allerdings noch mehr David @@-Befehle die nicht dokumentiert sind. Manche davon findet man in der KnowledgeBase. Interessante Artikel zu dem Thema sind noch Q-109.646 und Q-109.131.


    Bei Verwendung der API ist darauf zu achten, dass die @@-Befehle bei Plaintextnachrichten durchgereicht werden, ich kann diese also in meinem Programm im Text verwenden und der Service Layer führt Sie dann bei Verarbeitung aus. Anders ist es mit HTML Mails die man über die API versendet. Hierbei gehen die @@-Befehle verloren, bzw. werden nicht beachtet.
    In der API selbst gibt es aber das "MessageOptions" Objekt, mit dem man die entsprechenden Befehle übergeben kann (für HTML- und Plaintext Nachrichten).



    Weitere interessante Ressourcen

    Q-106.236 - Variablen im Nachrichteneditor
    Q-103.503 - Nutzung von Variablen im Tobit InfoCenter PC mit "if-then-else" Funktionen
    Q-103.076 - Adressbuch-Variablen


    Q-105.207 - Verschachtelte DvISE Befehle und Variablen verwenden
    Q-101.196 - Variablen für den DvISE-Server und für das Tobit InfoCenter


    Q-103.045 - Variablen für die Verteilung empfangener Nachrichten
    Q-106.499 - Erweiterte Variablen für die Verteilung
    Q-106.583 - Einsatz von Variablen mit Verteilregeln



    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Noch ein kleiner Tip am Rande. Falls Du mit Taskobjekten arbeitest (Aufgaben) und den Reminder verwendest, benutze als Zeitangabe den Unix-TimeStamp. In der Hilfe steht Minuten in Integer, das stimmt aber nicht. Dies trifft nur für den Reminder von Terminen zu.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Jens


    Danke für die vielen Tipps



    Das senden von Emails über TIC erscheint mir für meine Aufgabe nicht ausreichend da


    1) Die Möglichkeit einer BCC Angabe fehlt


    2) Wie ist den das, wenn ich sehr viele Adressen habe an die versendet werden soll z.B. > 3000 ich denke das schafft die Schnittstelle nicht. Es handelt sich da ja wohl um die normale mailto Schnittstelle


    Ein schönes Beispiele ist unter http://www.david-forum.de/inde…page=Thread&threadID=5815


    Call TobitVersand


    3) Das Suchen der gesendeten Mail wird bei andern EmailProgrammen i.a. so gemacht, das der Email ein eigenes Attribut hinzugefügt wird. Der Wert des Attributs dient dann dem CRM System um die Mail wieder im Ausgangspostfach zu finden. das geht über diese Schnittstelle auch nicht.



    Was denkst Du über folgende Idee



    Ein Clientscript zu schreiben, das auf Events vom CRM wartet. Irgendwo habe ich gelesen, das Eventhandling möglich ist, ich weis aber nicht wie vom CRM an VBS Events gesendet werden.


    Diesem Script werden dann alle notwendigen Daten mittels events übergeben und global da gespeichert.


    Wird dann vom CRM ein Event (z.B. Display) geschickt wird die Mail aufgebaut und angezeigt. Gleichzeitig wird ein Eventhandler registriert der aufgerufen wird, wenn die Email versendet wurde.


    Danach wird über eine Com-Schnittstelle dem CRM mitgeteilt,dass die Mail versendet wurde.


    Wäre das ein gangbarer Weg.


    Danke für deine Hilfe


    Gruß


    Peter

  • Hallo Peter,


    zu 2.: Nicht getestet, sry.


    Das ganze ist keine MAPI Schnittstelle (mailto). Die gibt es natürlich auch, bzw. nur die Simple Mapi, darüber kannst Du auch arbeiten.
    Über den TIC Befehl kannst Du aber z.B. auch Vorlagen und ähnliches übergeben oder direkt zu einem bestimmten Ordner springen.


    zu 3.: Mit der Variante die ich ebenfalls schon erwähnte (Nachricht über API erzeugen, speichern, per dvwin32.exe Parameter öffnen, löschen) könntest Du ein Userfield oder eine Property schreiben. Allerdings musst Du zum wiederfinden dann das gesamte Ausgangsverzeichnis in einer Schleife durchlaufen, da Du nicht direkt nach der Property oder dem Userfield suchen kannst.



    Ob Dein Lösungsansatz über Scripting und API klappen wird weiß ich nicht, ich glaube aber fast nicht. Das Scripting nutzen wir in der Regel nur um Anwendungen zu starten und dahin entsprechende Daten zu übergeben. Ich kann mir nicht vorstellen, dass man auf einen externen Event horchen kann.
    Events die es dort gibt haben immer mit dem Client selbst zu tun, also z.B. eine Aktion nach dem Klick auf Senden ausführen. Das könntest Du natürlich nutzen, allerdings greift das dann bei jeder Mail...


    Wie gesagt, genau kann ich es Dir nicht sagen, da ich diesen Weg bisher nicht gegangen bin.



    Aber was spricht denn gegen eine eigene E-Mailmaske im CRM? Ich behaupte mal, dass dies für Deine Anforderung der beste Weg wäre. Hört sich zunächst mal nach mehr Aufwand an, aber letztlich wird das vermutlich schneller gehen, wie das rumgeochse mit den verschiedenen Schnittstellen. ;)


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Jens




    Gegen eine eigene Mailmaske spricht, dass wir Kunden haben die Tobit zum Mail versenden benutzen.


    Da ist es nicht zumutbar, wenn Mails über das CRM versendet werden, eine andere Mailmaske verwendet wird.


    Außerdem müssten ja dann die Logindaten des Benutzers im CRM hinterlegt werden, damit der Account dann auch richtig ist.


    Diesen Weg kann ich also nicht gehen.




    Derzeit versuche ich es mit folgendem Code (Word.Application dient nur als Testobjekt und wird durch die Comm-Schnittstelle zum CRM ersetzt)






    Kannst Du den Code kommentieren ??



    Gruß


    Peter


    Edit: Beispielcode in entsprechende Tags gesetzt

  • Hallo Peter,


    ich habe Deinen Beispielcode zur besseren Lesbarkeit mal in Code-Tags gesetzt. Benutze beim Einfügen von Beispielcode bitte den #-Button des Editors hier im Forum.


    Aus eigener Erfahung kann ich sagen, dass die Verwendung einer eigenen E-Mailmaske keineswegs unzumutbar ist. Im Gegenteil, dadurch kann der Workflow sogar verbessert werden. Wir selbst nutzen work ... for all! welches wir auch vertreiben und hier ist es genauso gelöst. Bisher hatte kein Kunde damit ein Problem.


    Anmeldedaten gibt man bei der API in der Regel nicht an. Startet man die Connection mit leeren Parametern, werden die der aktuellen Verbindung genommen, also mein Username und Passwort (die auf Windows basieren) und der "Current Server" aus der Registry, also der zuletzt verbundene Server:



    Zu Deinem Beispiel kann ich nicht viel sagen. Ich mache fast nichts in VB, nur C# und JS.


    Zitat

    oInfoCenter.Msgbox(errtxt) ' leider tritt immer ein Error Text Objekt erforderlich

    Handelt es sich bei errtxt.description wirklich um Text? Oder musst Du zunächst in eine String konvertieren?
    Das würde zumindest die Meldung erklären.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Jens,



    Das mit dem Code einfügen kannte ich nicht sorry.



    Der Code mit err.descriptipon stimmt schon. Ich habe es in anderer Umgebung ausprobiert.


    Meine einzige Erklärung ist, dass es im VBS von Tobit das Object



    WScript



    nicht gibt. Stimmt das??



    Googeln hat auch bei anderen Produkten schon gebracht, dass dessen VBS-Engine das Object WScript nicht kennt.


    Ich werde noch weiter bohren.


    Vielleicht ist ja auch die mailitem.Save Methode statt mailItem.Send aus DvApi eine Möglichkeit dem Benutzer die Regie zu übergeben.


    Wenn ich eine Lösung gefunden habe poste ich sie auf alle Fälle.


    Vielen Dank für Deine Hillfe und Tipps


    Gruß


    Peter

  • Hallo Peter,

    Meine einzige Erklärung ist, dass es im VBS von Tobit das Object


    WScript


    nicht gibt. Stimmt das??


    möglich ist das, kann ich aber nicht wirklich beantworten.



    Vielleicht ist ja auch die mailitem.Save Methode statt mailItem.Send aus DvApi eine Möglichkeit dem Benutzer die Regie zu übergeben.


    Geht auch, aber auch die hat den ein oder anderen Nachteil. Denn wenn der User auf Senden klickt, wird ein neues Item im Ausgang erzeugt, und das hat natürlich Deine Property nicht...


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hi


    ich melde mich nochmals. Wie ist das mit den Userfields. Ich habe versucht eines zu erzeugen. Bekomme aber einen Absturz, wenn ich darauf zugreifen will. Mein c# code sieht so aus



    Code
    DvApi32.Fields oFields = mailItem.Fields;                 // Dies ist meine Mail die ich zuvor abgespeichert habe
    DvApi32.UserFields oUserFields = oFields.UserFields; // ERROR!!! Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben. 
    
    
    DvApi32.FieldDefinition oFielddef = oUserFields.CreateDefinition("myField", DvApi32.DvFieldType.DvFieldText); 
    oUserFields.Add(oFielddef , "myValue");


    Gruß


    Peter

  • Klappt das so mit dem code



    Code
    DvApi32.Fields oFields = mailItem.Fields; 
    DvApi32.UserFields oUserFields = oFields.UserFields; // ERROR!!! Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben.
    
    
    DvApi32.FieldDefinition oFielddef = oUserFields.CreateDefinition("myField", DvApi32.DvFieldType.DvFieldText); 
    oUserFields.Add(oFielddef , "myValue");


    Gruß Peter

  • Hallo Peter,


    der Code ist beide male der Gleiche, oder?


    Klappt das so mit dem code

    Vermutlich nicht, da Du ja ein Kommentar mit nem Error dran geschrieben hast. ;)


    Ich denke das Problem ist, dass Du ein neues Item erzeugst. Du kannst aber das Userfield anscheinend nur auf bereits existierende Items anwenden. Du musst also vorher speichern, was dann aber wieder dazu führt, dass Du nicht weißt, wie Du den Eintrag findest.


    Wie erwähnt nutze ich immer SetProperty und nicht die Userfields. Habe das Ganze aber gerade mal getestet (ich hoffe Du weißt den Einsatz zu schätzen, meine Amazon Wunschliste ist lang ;) ). Beim Userfield kommt bei mir der gleiche Fehler sofern es ein neues Item ist, mit bereits existierenden Items geht es.


    Mit SetProperty geht es auch mit neu erzeugten MessageItem2.



    Code
    oMessageItem2 = oArchive.CreateArchiveEntry(DvItemTypes.DvEMailItem);
    oMessageItem2.Subject = "Test";
    oMessageItem2.SetProperty(4190, "Test");
    oMessageItem2.Save();



    Wenn Du die .0tx des zugehörigen Eintrags im Editor öffnest, wirst Du Deine Property darin finden.


    Übrigens ist das MessageItem2 auch um ca. Faktor 10 :!: schneller als MessageItem und seine abgeleiteten Objekte (MailItem, etc.).
    Daher versuche ich immer soviel wie möglich über MessageItem2 zu realiseren und caste nur in speziellen Fällen in die entsprechenden Objekttypen. Da man nicht direkt von MessageItem2 zu MessageItem casten kann, muss man einen Umweg gehen, indem man die ID des MessageItem ausliest und damit das MessageItem2 erzeugt (öffnet).


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Jens



    Vielen dank für Deine vielen Tipps und Hinweise.


    Ich denke aber trotzdem, dass wir das Projekt Tobit an CRM anschliessen fallen lassen müssen.



    Folgende Punkte sprechen dagegegen



    1) Der Tobit Client lässt sich nbicht genügend fernsteuern (z.B. Mail vorkonfigurieren mit DvApi , danach im Tobit Client anzeigen)


    2) Die Userfields, bzw Propertys gehen beim senden einer Mail (d.h. nach Übergang ins Ausgangspostfach) verloren. Damit ist eine Mail nicht mehr identifizierbar und man kann nicht feststellen was wirklich gesendet wurde (Subject, Body, Attachments)



    Schade.


    Trotzdem Danke für Deinen Einsatz


    Gruß


    Peter

  • Hallo Peter,

    Die Userfields, bzw Propertys gehen beim senden einer Mail (d.h. nach Übergang ins Ausgangspostfach) verloren.


    das stimmt so nicht. Arbeitest Du mit dem MessageItem2 und SetProperty findet man diese auch in der 0tx der versendeten E-Mail. Die Property steht also auch nach dem Versand zur Verfügung.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!