Webservice
Aus Melin WebHelp
Die Melin WebService Schnittstelle ermöglicht den Zugriff auf Melin-Funktionen über SOAP (Simple Object Access Protokoll). Die Implementierung erfolgt in Java AXIS, alle Aufrufe gehen über das Script „ws.jws“ das sich in tomcat/webapps/axis befindet.
Das Script benötigt nur eine einzige Konfiguration - den Pfad zum Melin-Daemon in Zeile 17.
String siteDir = "/home/melin/msite";
Die WSDL kann mit http://127.0.0.1:8200/axis/melin.jws?wdsl abgerufen werden (statt 127.0.0.1 ist die URL der Melin-Installation anzugeben, alternativ steht eine Web-Installation unter http://www.melin.de:8200/axis/melin.jws?wdsl zur Verfügung).
Als zentrales Hilfsmittel in der Implementierungsphase wird ein Logfile geschrieben:
SITE-DIR/demon/logs/melin_jws[yyyyMMdd].log
Das SITE-DIR ergibt sich aus der allgemeinen Melin-Konfiguration.
[bearbeiten] Funktionstest
Vor Inbetriebnahme sollte geprüft werden ob der Webservice aufgerufen werden kann und auch Zugriff auf die Datenbank hat:
[bearbeiten] ReadyCheck
Ein Funktionstest kann über die Methode readycheck via SOAP, oder mit jedem Webbrowser erfolgen:
http://127.0.0.1:8200/axis/melin.jws?method=readyCheck
Als Rückgabe wird ein „ok“ geliefert:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns1:readyCheckResponse xmlns:ns1="http://127.0.0.1:8200/axis/melin.jws" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <readyCheckReturn xsi:type="xsd:string">ok</readyCheckReturn> </ns1:readyCheckResponse> </soapenv:Body> </soapenv:Envelope>
ReadyCheck prüft ob die Datenbank erreichbar ist und damit auch ob alle Konfigurationsdateien gefunden werden können.
[bearbeiten] Version
Die Methode version liefert die Versionsnummer des Webservice als String zurück und ist ab 4.00.627 verfügbar.
<versionReturn xsi:type="xsd:string">4.00.629</versionReturn>
Version und ReadyCheck benötigen keine zusätzlichen Parameter.
[bearbeiten] Abruf mit Webbrowser
Die meisten Funktionen des Webservice lassen sich auch einfach über den Browser testweise aufrufen. Von Vorteil ist diese Art des Aufrufs wenn von einer Website direkt Funktionen aktiviert werden sollen, zum Beispiel über JavaScript.
http://127.0.0.1:8200/axis/melin.jws?method=deleteClientByID&clientID=12
Die Rückgabe erscheint wie folgt:
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <deleteClientByIDResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <deleteClientByIDReturn xsi:type="xsd:string">ok</deleteClientByIDReturn> </deleteClientByIDResponse> </soapenv:Body> </soapenv:Envelope>
Damit lässt sich der Webservice auch ohne komplettes SOAP-Framework nutzen. In PHP, Perl oder Java reicht es die Ergebniszeile herauszufiltern, im Beispiel oben:
<deleteClientByIDReturn xsi:type="xsd:string">ok</deleteClientByIDReturn>
[bearbeiten] An- und Abmelden von Abonnenten
Die meisten Funktionen des Webservice werden via SOAP aufgerufen, jedoch gibt es für Standardfälle auch die Möglichkeit per URL die Parameter zu übergeben. Speziell wenn es darum geht einfache An- und Abmeldungen vorzunehmen ist diese Methode gut geeignet, oder um abzufragen welche Newsletter ein Abonnent abonniert hat. Für komplexe Anmeldungen die über die Parameter hier hinausgehen ist SOAP zwingend erforderlich.
[bearbeiten] Anmeldung - simpleAddSubscription
Neuanlage eines Abonnenten bezw. hinzufügen eines neuen Abonnements.
Der Aufruf kann einfach per URL erfolgen, zum Beispiel:
http://127.0.0.1:8200/axis/melin.jws?method=simpleAddSubscription&newsletter_id=5&email=seb@melin.de
Die Felder „email“ und „newsletter_id“ sind Pflichtfelder, alle weiteren Felder sind optional. Im Feld useDoubleOptIn kann entweder der String „true“ oder eine „1“ übergeben werden wenn der Datensatz nicht direkt in die Datenbank geschrieben werden soll sondern stattdessen vorab eine DoubleOptIn-Mail verschickt werden soll.
Der Aufruf von simpleAddSubscription kann noch um die Parameter returnCustomFieldOK und returnCustomFieldFalse erweitert werden. Beide Parameter können einen Wert von 1-5 haben. Im Erfolgsfall wird der Wert aus der Spalte CUSTOM[1-5] in der Tabelle NEWSLETTER_INDEX ausgelesen und zurückgegeben.
Diese Werte können in Melin in der Empfängerlistenverwaltung gesetzt werden (siehe auch SimpleRemoveSubscription).
[bearbeiten] Abmeldung - simpleRemoveSubscription
Abmelden eines Abonnenten von einem Newsletter.
Der Aufruf kann einfach per URL erfolgen, zum Beispiel:
http://127.0.0.1:8200/axis/melin.jws?method=simpleRemoveSubscription &newsletter_id=5&email=seb@melin.de
Die Felder „email“ und „newsletter_id“ sind Pflichtfelder.
Die Funktion simpleRemoveSubscription wird manchmal auch für indirekte Abmeldungen genutzt (siehe auch simpleAddSubscription). Auf der Website wird ein einfaches Abmeldescript (z.B. „unsubscribe.php“) installiert das als Parameter die Emailadresse und die NewsletterID für eine Abmeldung erhält. Der Aufruf kann so aussehen und direkt aus der Mail erfolgen:
http://mhv-newsletter.de/unsubscribe.php?email=ld@melin.de&nl=6
Bei einer Abmeldung über einen Link wird auch immer eine Weiterleitung auf zwei Bestätigungsseiten benötigt. Diese kann man elegant über Melin in der Empfängerlistenverwaltung hinterlegen:
Hinweis: Die Zusatzparameter sind konfigurierbar, in diesem Beispiel wurden die Felder CUSTOM4 und CUSTOM5 dazu verwendet und die Beschreibung „Abmeldung-OK“ und „Abmeldung-Fehler“ dazu in der Konfigurationsdatei msite/demon/config/nl_customfields.xml eingetragen.
Intern ruft das Abmeldescript den Webservice auf und ergänzt den Aufruf um die beiden Parameter returnCustomFieldOK und returnCustomFieldFailed. Als Wert wird eine Spalte aus der Tabelle NEWSLETTER_INDEX angeben, in unserem Fall CUSTOM4 und CUSTOM5.
In PHP kann das so aussehen:
if (($NEWSLETTER_ID>0) && (trim($email))) {
// Connect to Webservice and grab request
$request = "http://127.0.0.1:8200/axis/melin.jws?";
$request .= "method=simpleRemoveSubscription&";
$request .= "newsletter_id=".$NEWSLETTER_ID."&email=$email";
$request .= "&returnCustomFieldOK=CUSTOM4&returnCustomFieldFailed=CUSTOM5";
$link = file_get_contents($request);
$link = preg_replace("/\<[^\>\<]*\>/", "", $link);
$link = preg_replace("/\s/", "", $link);
} // Unsubscribe
header('Location: '. $link);
Als Rückgabe liefert der Webservice dann eine URL zu der weitergeleitet werden soll.
[bearbeiten] Abmeldung - simpleRemoveSubscriptionByID
Abmelden eines Abonnenten von einem Newsletter mit Melin-Interner ID (SYSTEM_CUSTOMER_ID) und NewsletterID.
Der Aufruf kann einfach per URL erfolgen, zum Beispiel:
http://127.0.0.1:8200/axis/melin.jws?method=simpleRemoveSubscription &newsletter_id=5&SYSTEM_CUSTOMER_ID=100001
- Die Felder „SYSTEM_CUSTOMER_ID“ und „newsletter_id“ sind Pflichtfelder.
Wird zur Kundennummer keine E-Mail-Adresse gefunden so wird „No e-Mail for SYSTEM_CUSTOMER_ID “ zurückgegeben. Bei erfolgreicher Abmeldung „ok“. Besteht kein Abonnement wird „no subscription“ zurückgegeben. Prüfen - simpleCheckSubscription
[bearbeiten] Prüfen ob für eine Emailadresse und eine Newsletter ID ein Abonnement besteht.
Der Aufruf kann einfach per URL erfolgen, zum Beispiel:
http://127.0.0.1:8200/axis/melin.jws?method=simpleCheckSubscription &newsletter_id=5&email=seb@melin.de
- Die Felder „email“ und „newsletter_id“ sind Pflichtfelder.
[bearbeiten] Mandantenfunktionen
Über den Webservice lassen sich auch Melin-Nutzeraccounts verwalten. Eingesetzt wird diese Schnittstelle in Hosting-Installationen die über den Webservice automatisch neue Accounts erstellen und wieder löschnen.
[bearbeiten] Mandant anlegen
public String createClient( String clientName )
Hinweis. Mandanten-Name muss eindeutig sein. Rückgabe ist die interne ID
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <ID>15</ID> </DOCUMENT>
[bearbeiten] Mandant anlegen mit ID
public String createClientByID( String clientName, String clientID )
Hinweis. Mandanten-Name muss eindeutig sein. Rückgabe ist „ok“ wenn erfolgreich oder ein Fehler-String beginnend mit „error“.
[bearbeiten] Mandanteninfo holen
public String getClientInfo( String clientName ) {
Hinweis: Mandanten-Name muss eindeutig sein. Rückgabe ist die interne ID (ClientID)
[bearbeiten] Mandant löschen
public String deleteClient( String ClientID) {
Hinweis. Mandanten-Name muss eindeutig sein. Rückgabe ist „ok“ wenn erfolgreich oder ein Fehler-String beginnend mit „error“.
[bearbeiten] Empfängerlisten
Empfängelisten (anderer Name: Verteilerlisten, Newsletter) können vollständig über den Webservice administriert werden.
[bearbeiten] Verteilerliste anlegen ohne ID
Erforderliche Parameter: Name des Newsletters, Mandanten-ID
public String createNewsletterByName( String newsletterName, String ClientID ) {
Rückgabewert ist die NewsletterID.
[bearbeiten] Verteilerliste anlegen mit ID
Erforderliche Parameter: NewsletterID, Name des Newsletters, Mandanten-ID
public String createNewsletterByID( String newsletterID, String newsletterName, String ClientID )
Rückgabe ist „ok“ wenn erfolgreich oder ein Fehler-String beginnend mit „error“.
[bearbeiten] Verteilerliste löschen nach Name
public String deleteNewsletterByName( String newsletterName )
Rückgabe ist „ok“ wenn erfolgreich oder ein Fehler-String beginnend mit „error“. Der Name muss eindeutig sein.
[bearbeiten] Verteilerliste löschen nach NewsletterID
public String deleteNewsletterByID( String newsletterID )
Rückgabe ist „ok“ wenn erfolgreich oder ein Fehler-String beginnend mit „error“.
[bearbeiten] Verteilerliste umbenennen
public String renameNewsletterByName( String newsletterName, String newsletterNewName )
Rückgabe ist „ok“ wenn erfolgreich oder ein Fehler-String beginnend mit „error“.
[bearbeiten] Verteilerliste umbenennen nach ID
public String renameNewsletterByID( String newsletterID, String newsletterNewName )
Rückgabe ist „ok“ wenn erfolgreich oder ein Fehler-String beginnend mit „error“.
[bearbeiten] Prüfen ob Emailadresse einen Newsletter abonniert hat
public String checkSubscription( String email, String NEWSLETTER_ID )
Rückgabe ist „true“ wenn ja, „false“ wenn nein. Die komplette Rückgabe lautet:
<?xml version="1.0" encoding="UTF-8"?&> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&> <soapenv:Body&> <checkSubscriptionResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"&> <checkSubscriptionReturn xsi:type="xsd:string"&> <?xml version="1.0" encoding="UTF-8"?> <DOCUMENT>true</DOCUMENT> </checkSubscriptionReturn> </checkSubscriptionResponse> </soapenv:Body> </soapenv:Envelope>
Auf diese Weise kann nur durch den Aufruf einer URL geprüft werden ob ein User bereits ein Abo hat:
http://melin.de:8200/axis/melin.jws?method=checkSubscription&email= seb@melin.de&NEWSLETTER_ID=2101&pw=sendling
[bearbeiten] Abruf aller Newsletter auf die ein Mandant Zugriff hat
public String getNewsletterIDsByClientID ( int clientID )
Übergeben wird die MandantenID (clientID). Als Rückgabe erhält man einen String mit allen NewsletterIDs durch Komma getrennt.
Beispiel für die Rückgabe:
<getNewsletterIDsByClientIDReturn xsi:type="xsd:string">26,38,34,52,45,57</getNewsletterIDsByClientIDReturn> </ns1:getNewsletterIDsByClientIDResponse>
[bearbeiten] Abruf des Namens eines Newsletters mit ID
public String getNewsletterNameByNewsletterID ( String newsletterID)
Übergeben wird die ID des Newsletters. Als Rückgabe erhält man einen String mit dem Namen des Newsletters.
Beispiel für die Rückgabe:
<getNewsletterNameByNewsletterIDReturn xsi:type="xsd:string">
TestNL
</getNewsletterNameByNewsletterIDReturn>
[bearbeiten] Funktionen mit Kundennummer
Die Funktionen mit Kundennummer ermöglichen den Zugriff auf die Melin-Abonnentendaten mit Hilfe einer Kundennummer statt der E-Mail-Adresse.
[bearbeiten] Hinzufügen eines neuen Abonnenten mit Kundennummer
public String addSubscriberByCustomerID ( String kunde_nr, String email, String newsletter_id, String first_name, String last_name, String salutation, String gender, String title, String city, String zip_code, String ad_permission, String affiliate, String company, String language, String area, String custStatus, String kpnr, String country, String branchenverteiler, String branchenkennzeichenKD, String branchenkennzeichenKP)
Notwendige Parameter sind E-Mail-Adresse und Kundennummer. Alle weiteren Parameter sind optional.
Wenn bereits ein Datensatz hinter der Kundennummer hinterlegt ist werden die Daten aktualisiert. Wenn bereits ein Abonnement des Newsletters mit der Kundennummer besteht, werden die Daten ebenfalls nur aktualisiert, es wird keine Doublette erzeugt, auch wenn die Funktion mehrfach aufgerufen wird.
Um ein bestehendes Feld zu leeren übergibt man einen leeren Wert.
- Das Feld „Gender“ erwartet einen Parameter „M“ oder „F“ (für Männlich/Male oder Weiblich/Female). Der Parameter ist optional.
- Das Feld "ad_permission" ist für eine Werbefreigabe. Oftmals wird eine Werbeerlaubnis bei der Newsletter-Anlage mit abgefragt, diese kann hier hinterlegt werden.
Ein Beispiel beim dem Felder nur teilewise befüllt sind kann so aussehen:
Die Rückgabe ist "ok" wenn die Operation erfolgreich war. Weitere Hinweise im Fehlerfall finden sich im Logfile. Im Feld useDoubleOptIn kann entweder der String „true“ oder eine „1“ übergeben werden wenn der Datensatz nicht direkt in die Datenbank geschrieben werden soll sondern stattdessen vorab eine DoubleOptIn-Mail verschickt werden soll.
[bearbeiten] Stammdatenabfrage mit Kundennummer
public String getSubscriberDetailByCustomerID( String kunde_nr )
Einziger Parameter ist die Kundennummer.
Die Kundennummer kann bis zu 50 Zeichen umfassen und ist frei wählbar. Zum Test kann auch über die Oberfläche ein Abonnent hinzugefügt werden und dort im Feld „Kunde Nr“ ein Wert hinterlegt werden. Anschließend kann der Datensatz ebenfalls direkt über den Webservice abgerufen werden.
Es werden alle Basisdaten zum Benutzer zurückgeliefert als Array inklusive der benutzerdefinierten Felder, sowie alle aktiven Abonnenements.
Beispiel für einen Abonnenten der einen Newsletter (z.B. mit ID 100) abonniert hat:
<getSubscriberDetailByCustomerIDReturn xsi:type="xsd:string"> <?xml version="1.0" encoding="UTF-8"?&> <document&> <SYSTEM_CUSTOMER_ID>1000017</SYSTEM_CUSTOMER_ID&> <EMAIL>ld@melin.de</EMAIL&> <GENDER>M</GENDER&> <ANREDE>Herr</ANREDE&> <COUNTRY>DE</COUNTRY&> <KUNDE_NR>MELIN010</KUNDE_NR&> <CREATED>20080712212854</CREATED&> <LAST_MODIFIED>20080712212854</LAST_MODIFIED&> <AREA>Bayern</AREA&> <CUST_STATUS>5</CUST_STATUS&> <KPNR>0123456</KPNR&> <BRANCHENVERTEILER>nielsen9</BRANCHENVERTEILER&> <BRANCHENKENNZEICHEN>xyz1234</BRANCHENKENNZEICHEN&> <BRANCHENKENNZEICHEN_KP>abcd-1234</BRANCHENKENNZEICHEN_KP&> <NEWSLETTER_ID100>1</NEWSLETTER_ID100&> </document> </getSubscriberDetailByCustomerIDReturn> </ns1:getSubscriberDetailByCustomerIDResponse>
[bearbeiten] Abmelden von einem Newsletter mit Kundennummer
public String unsubscribeByCustomerID( String kunde_nr, String newsletter_id)
Diese Funktion meldet einen Kunden von einem Newsletter ab. Pflicht-Parameter ist die Kundennummer und die NewsletterID. Die NewsletterID wird innerhalb von Melin bei der Anlage einers Newsletters (=Empfängerliste, Verteilerliste) vergeben.
Rückgabe der Funktion ist „ok“ wenn kein Fehler aufgetreten ist, ansonsten wird der Fehler im Klartext übergeben, beginnend mit dem Schlüsselwort „Error:“.
[bearbeiten] Löschen eines kompletten Abonnentendatensatzes mit Kundennummer
public String deleteSubscriberByCustomerID ( String kunde_nr, String affiliate, String remote_ip )
Diese Funktion löscht einen kompletten Abonnenten und meldet ihn von allen Newslettern ab. Einziger Pflicht-Parameter ist die Kundennummer.
- „Affiliate“ ist eine beliebige Kennung, hier kann ein Abmeldegrund oder eine Abmeldequelle hinterlegt werden (50 Zeichen maximal).
- „RemoteIP“ kann verwendet werden um die IP-Adresse zu hinterlegen von der die Abmeldung kam. Dieser Wert kann ebenfalls null sein.
- Rückgabe der Funktion ist „ok“ wenn kein Fehler aufgetreten ist, ansonsten wird der Fehler im Klartext übergeben, beginnend mit dem Schlüsselwort „Error:“.
[bearbeiten] Abfragen von Mailings
Verschickte Mailings werden alle in der Datenbank abgelegt. Über einfache Funktionen lassen sich Listen der versandten Mailings abrufen, und Details zu jedem Mailing.
[bearbeiten] Abruf aller Mailings an eine bestimmte NewsletterID
public String getMailingHeader(int newsletter_id)
Liefert eine Liste von Mailings die an eine bestimmte NewsletterID geschickt wurden. Die Rückgabe erfolgt in einer XML-Datei die für jedes Mailing einen Eintrag <MAILING> enthält.
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <MAILING id='NL87264572'> <SUBJECT>News Aktuell, Dezember 2008</SUBJECT> <M_FROM>news@melin.com</M_FROM> <M_SENDER>NewsAktuell</M_SENDER> <NEWSLETTER_ID>5</NEWSLETTER_ID> <USERCOUNT>2322</USERCOUNT> <MAILING_ID>NL87264572</MAILING_ID> <CREATED>20081215073000</CREATED> <ABSTRACT>News Aktuell 12/2008 -------------------- Sehr geehrte Frau Mustermann, anbei die neuesten Informationen aus Funk und Fernsehen....</ABSTRACT> </MAILING> <MAILING id='NL87264576'> <SUBJECT>News Aktuell, November 2008</SUBJECT> <M_FROM>news@melin.com</M_FROM> <M_SENDER>NewsAktuell</M_SENDER> ... </DOCUMENT>
[bearbeiten] Abfragen von Mailing-Details
public String getMailingDetails(String mailing_id)
Der Volltext (Text und HTML) kann mit Hilfe der MailingID abgefragt werden. Die Rückgabe ist wieder eine XML-Datei, die ähnliche Felder enthält wie die Liste der Mailings, plus die Felder M_FULLTEXT (Textversion), M_FULLHTML (HTML-Version) und ggf. M_PDF, ein Link auf eine PDF-Version.
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <MAILING id='NL87264572'> <SUBJECT>News Aktuell, Dezember 2008</SUBJECT> <M_FROM>news@melin.com</M_FROM> <M_SENDER>NewsAktuell</M_SENDER> <NEWSLETTER_ID>5</NEWSLETTER_ID> <USERCOUNT>2322</USERCOUNT> <MAILING_ID>NL87264572</MAILING_ID> <CREATED>20081215073000</CREATED> <ABSTRACT>News Aktuell 12/2008 -------------------- Sehr geehrte Frau Mustermann, anbei die neuesten Informationen aus Funk und Fernsehenen.... </ABSTRACT> <M_FULLTEXT>News Aktuell 12/2008 -------------------- Sehr geehrte Frau Mustermann, anbei die neuesten Informationen aus Funk und Fernsehenen, für Sie </FULLTEXT> <M_FULLHTML><html> <body>News Aktuell 12/2008 -------------------- Sehr geehrte Frau Mustermann, anbei die neuesten Informationen aus Funk und Fernsehenen, für Sie </body> </html></FULLHTML> <M_PDF>/melin/tmp/234zu23t4u.pdf</M_PDF> </MAILING>
[bearbeiten] Volltextsuche in Mailings
public String mailingFulltextSearch(String searchString)
Liefert eine Liste von MailingIDs zurück die den gewünschten Suchtext enthalten.
<RESULT> <MAILING id='NL87264572'> <SUBJECT>News Aktuell, Dezember 2008</SUBJECT> <M_FROM>news@melin.com</M_FROM> <M_SENDER>NewsAktuell</M_SENDER> <NEWSLETTER_ID>5</NEWSLETTER_ID> <USERCOUNT>2322</USERCOUNT> <MAILING_ID>NL87264572</MAILING_ID> <CREATED>20081215073000</CREATED> <ABSTRACT>News Aktuell 12/2008 -------------------- Sehr geehrte Frau Mustermann, anbei die neuesten Informationen aus Funk und Fernsehenen....</ABSTRACT> </MAILING> <MAILING id='NL87264575'> <SUBJECT>News Aktuell, November 2008</SUBJECT> <M_FROM>news@melin.com</M_FROM> <M_SENDER>NewsAktuell</M_SENDER> <NEWSLETTER_ID>5</NEWSLETTER_ID> <USERCOUNT>2322</USERCOUNT> <MAILING_ID>NL87264575</MAILING_ID> <CREATED>20081115073000</CREATED> <ABSTRACT>News Aktuell 11/2008 -------------------- Sehr geehrte Frau Mustermann, anbei wieder die neuesten Informationen aus Funk und Fernsehenen.... </ABSTRACT> </MAILING> </RESULT>
[bearbeiten] Robinsonliste
Melin führt eine Unternehmensweite Robinsonliste die alle Adressen beinhaltet die nicht bemailt werden dürfen. Adressen die in dieser Liste enthalten sind erhalten keine E-Mails, auch keine Anmelde-Mails (Double-Opt-In). Groß/Kleinschreibung ist bei der E-Mail Adresse egal.
[bearbeiten] Suche nach Email in der Robinsonliste
public String robinsonSearchByEmail(String email)
Sucht nach einer gegebenen E-Mail-Adresse in der Datenbank. Die Rückgabe ist „1“ wenn die Adresse gefunden wurde und „0“ wenn sie nicht in der Liste enthalten ist. Bei einem Datenbank-Ausfall wird „ERROR“ gefolgt von einer Fehlermeldung zurückgegeben.
[bearbeiten] Hinzufügen einer Adresse in die Robinsonliste
public String robinsonAddEmail (String email)
Fügt eine Emailadresse zur Robinsonliste hinzu. Rückgabe ist „1“ wenn die Operation erfolgreich ist, ansonsten 0. Wenn die Adresse bereits vorhanden ist wird ebenfalls eine „1“ zurückgegeben.
[bearbeiten] Löschen einer Adresse aus der Robinsonliste
public String robinsoRemoveEmail (String email)
Löscht eine Emailadresse aus der Robinsonliste. Rückgabe ist „1“ wenn die Operation erfolgreich ist. Ist die Adresse nicht vorhanden wird eine „0“ zurückgegeben.
Die Robinson-Funktionen im Webservice arbeiten immer mit der MMDB und nicht mit eventuell zusätzlich konfigurierten Sperrdatenbanken.
[bearbeiten] Anliefern von Daten via XML im SOAP-Request
Eine Beispielimplementierung für die Anlieferung eines Mailings findet sich hier:
http://127.0.0.1:8200/melin/ws_test.jsp
Der Webservice stellt für die meisten Anforderungen eine generische Funktion workflowSubmit zur Verfügung, die zwei Parameter erwartet und den zweiten Parameter an den Melin-Workflow übergibt:
workflowDir Dateipfad innerhalb des „msite“-Verzeichnis in dem die Datei abgelegt werden soll.
xmlCode Code der an den Workflow übergeben werden soll.
Beispiel für XML-Code:
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <EMAIL>muster@melin.de</EMAIL> </DOCUMENT>
[bearbeiten] Felder für Newsletter
- M_RECEIVER Test-Empfänger
- FROM Absender-Email
- M_SENDER Absender-Name
- __CREATOR NANOCMS (Konstante)
- M_TEMPLATE SITE-DIR/templates/multipart.txt (Konstante)
- M_IS_MULTIPART 1 (Konstante)
- MAILING_ID Bezeichner (255 Zeichen)
- SUBJECT Betreff
- NEWSLETTER_ID ID des Verteilers (optional)
- X_BODY Body der Mail
- __DOCID ID (Beliebig, muss mit Wert gesetzt sein)
Beispiel-Datei
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <X_BODY> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> <title>webBank Newsletter</title> </head> <body>
Ein erstes HTML-Mailing
</body> </html> <!--TEXT_REPRESENTATION--> webBank Newsletter vom 08.12.2006 ------------------------------------------------------------------ Das hier ist die Textversion. <!--/TEXT_REPRESENTATION--> </X_BODY> <__DOCID>1170414791114</__DOCID> <M_RECEIVER>seb@localhost</M_RECEIVER> <FROM>absender@localhost</FROM> <M_SENDER>Melin Demo</M_SENDER> <__CREATOR>NANOCMS</__CREATOR> <M_TEMPLATE>SITE-DIR/templates/multipart.txt</M_TEMPLATE> <M_IS_MULTIPART>1</M_IS_MULTIPART> <MAILING_ID>1170414791114</MAILING_ID> <SUBJECT>webBank Newsletter vom 08.12.2006</SUBJECT> <NEWSLETTER_ID>webBank Newsletter vom 08.12.2006</NEWSLETTER_ID> </DOCUMENT>
Beispiel-Werte für workflowDir
Vorschau /cms/preview/preview/sample.xml
Live-Versand /cms/export/sample.xml (Muss eine NEWSLETTER_ID enthalten)
[bearbeiten] Felder für Anmeldung
- EMAIL Emailadresse
- NEWSLETTER_ID Newsletter ID
- FIRST_NAME Vorname (optional)
- LAST_NAME Nachname (optional)
- SC_TITLE Titel (optional)
- ANREDE Anrede (optional)
- PAGE Kennung für Anmeldebestätigungsdaten (optional)
- aus Melin An/Abmeldeseiten, z.B.
- localhost,index.html,1159359181080,1172435315864
- TYP 1
- LOCATION_REDIRECT Optional, Weiterleitungsziel
Wert für workflowDir:
/usv/web/*.xml
[bearbeiten] Felder für Abmeldung
- EMAIL Emailadresse
- NEWSLETTER_ID Newsletter ID
- PAGE Kennung für Abmeldemail (optional) aus Melin An/Abmeldeseiten, z.B. localhost,index.html,1159359181080,1172435315864
- TYP 2
- LOCATION_REDIRECT Optional, Weiterleitungsziel
Wert für workflowDir:
/usv/web/*.delete
[bearbeiten] Felder für Nachprofilierung
- EMAIL Emailadresse
- NEWSLETTER_ID Newsletter ID
- FIRST_NAME Vorname (optional)
- LAST_NAME Nachname (optional)
- SC_TITLE Titel (optional)
- ANREDE Anrede (optional)
- PAGE Kennung für Anmeldebestätigungsdaten
- aus Melin An/Abmeldeseiten, z.B.
- localhost,index.html,1159359181080,1172435315864
- TYP 3
- REMOVE_NEWSLETTER_IDxxx Xxx (NewsletterID, zum Austragen)
- LOCATION_REDIRECT Optional, Weiterleitungsziel
Wert für workflowDir:
/usv/web/*.modify
[bearbeiten] Allgemeine Funktionen des Webservice
[bearbeiten] Details zu einem Mailing abfragen
public String getMailingInformation( String mailingID )
Gibt eine XML-Datei zurück mit Anzahl Empfänger, Öffnungen, Clicks, Clicks Unique, allen gemessenen Links mit Anzahl klicks.
Beispiel:
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <OPEN>112</OPEN> <RECIPIENTS>112</RECIPIENTS> <CLICKS>112</ CLICKS > <CLICKS_UNIQUE>97</CLICKS_UNIQUE> <LINK1>http://www.melin.de</LINK1> <COUNT1>51</COUNT1> <LINK2>http://www.melin.de/news</LINK2> <COUNT2>51</COUNT2> </DOCUMENT>
[bearbeiten] Empfängerliste eines Newsletters
Zurückliefern der Empfängerliste auf Basis der newsletterID
public String public String getSubscriberListByID( String newsletterID ) {
Beispiel:
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <EMAIL>seb@melin.de</EMAIL> <EMAIL>john@nanocms.com</EMAIL> <EMAIL>john12@nanocms.com</EMAIL> </DOCUMENT>
[bearbeiten] Zurückliefern der Empfängerliste auf Basis des Empfängerlisten-Namen
public String getSubscriberListByName( String newsletterName ) {
Beispiel:
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <EMAIL1>seb@melin.de</EMAIL1> <EMAIL2>john@nanocms.com</EMAIL2> <EMAIL3>john12@nanocms.com</EMAIL3> </DOCUMENT>
[bearbeiten] Details eines Abonnenten
public String getSubscriberDetails( String email )
Beispiel:
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <EMAIL>seb@melin.de</EMAIL> <LAST_NAME>Böttger</LAST_NAME> <NEWSLETTER_ID100>100</NEWSLETTER_ID100> <NEWSLETTER_ID105>105</NEWSLETTER_ID105> </DOCUMENT>