Die Anzeigendaten können wahlweise über einen XML-Datei-Import (Hotfolder) oder über einen REST Webservice als JSON- oder XML-Struktur übergeben werden.

Import Hotfolder

Folgende Konfigurationseinträge sind verfügbar:

SchalterOptional Bedeutung/WertAnmerkung
portal.imports.importer-enabledNtrue/falseDe-/Aktivierung des Importers
portal.imports.import-points[0].nameN'Auftragsbearbeitung'

Der Name für den Importpoint 

portal.imports.import-points[0].component-nameNAdvertImportModuleKlassenname des Importmoduls
portal.imports.import-points[0].initial-delayJ15Wartezeit in Sekunden bevor der erste Import startet
portal.imports.import-points[0].intervalJ20Poll-Abstand in Sekunden
portal.imports.import-points[0].parameters.input-directoryN
Eingangs-/Poll-Verzeichnis für Gestaltungsaufträge (*.xml) und Motivdateien
portal.imports.import-points[0].parameters.error-directoryN


Fehlerverzeichnis; Neben den Dateien aus dem Eingangsverzeichnis wird hier eine
Datei mit den Fehlermeldungen erzeugt, welche den Namen der XML-Datei mit der 
Endung "_error.txt" besitzt.
portal.imports.import-points[0].parameters.archive-directoryN
Archivverzeichnis
portal.imports.import-points[0].parameters.xsl-transformationJ
Transformationsvorschrift (.xsl) vom Eingangsformat zum Importformat
Beispielhafte Konfiguration
portal:
  imports:
    # Aktivierung des Importes
    importer-enabled: true
    import-points:
      -
        name: 'Anzeigenimport'
        enabled: true
        component-name: AdvertImportModule
        initial-delay: 15
        interval: 20
        parameters:
          input-directory: D:/HupOne/hup-portal-intelliJ/Anzeigenimport/input
          error-directory: D:/HupOne/hup-portal-intelliJ/Anzeigenimport/error
          archive-directory: D:/HupOne/hup-portal-intelliJ/Anzeigenimport/archive
          # Transformationsdatei (XSL)
          #xsl-transformation: 

Import über Rest-Schnittstelle

URL: Hostname:Port/service/public/designorder/import

Methoden:

  • Import / Update einer Anzeige
    • POST
    • Body-Content-Typ:  multipart/formdata
      • Text-Part "advert"  als JSON (application/json)  oder XML-Format (application/xml)
      • Array von File-Parts "assetData" für Motive

        Die Dateinamen müssen mit den Attributen NormalAssetFileName, TabletAssetFileName und MobileAssetFileName in der XML- bzw. JSON-Struktur korrespondieren.

  • Stornierung einer Anzeige
    • DELETE
    • Parameter: orderNo 

Attributen der Importstruktur

JSON-AttributXMLDatentyp / Wertebereich / FormatPflichtBeschreibung
cancelledAttribut von Advertbooleannein Default false, Wenn true wird nur das Attribut orderNo ausgewertet und die Anzeige storniert. Dieses Attribut ist für die XML-Datei-Schnittstelle vorsehen, funktioniert aber auch bei der POST-Methode über Rest als Alternative zu DELETE 
orderNoAdvert.OrderNoStringja

Freitext; Auftrags bzw. Anzeigennummer; Diese muss eindeutig sein.

descriptionAdvert.DescriptionStringjaFreitext; Beschreibung
customerAdvert.CustomerStringneinFreitext; Kundenname
startDate
Advert.StartDate"yyyy-MM-dd"neinStartdatum für Gültigskeitszeitraum
endDateAdvert.EndDate

"yyyy-MM-dd"

nein

Enddatum für Gültigskeitszeitraum

priority
Advert.Priority

int (0 -100)

ja

Priorität

maxImpressions
Advert.MaxImpressions

int (>= 0)

nein

Maximale Anzahl der Impressions

maxClicksAdvert.MaxClicks

int (>= 0)

nein

Maximale Anzahl der Klicks

advertTypes[]
Advert.AdvertTypes.AdvertType

Mögliche Werte:

"BANNER", "BUTTON", "TITLE_HEADER", "VERTICAL_BANNER"

nein

Zugeordnete Anzeigentypen im Portal

validTags[]
Advert.ValidTags.Tag

String (Tagname)

nein

Anzeigekriterien für Stichworte der Seite

invalidTags[]
Advert.InvalidTags.Tag

String (Tagname)

nein

Ausschlusskriterien für Stichworte der Seite

validDepartments[]
Advert.ValidDepartments.Department

String (Ressortname)

nein

Anzeigekriterien für Ressorts der Seite

invalidDepartments[]
Advert.InalidDepartments.Department

String (Ressortname)

nein

Ausschlusskriterien für Ressorts der Seite

validLocations[]
Advert.ValidLocations.Location

String (Ortsname)

nein

Anzeigekriterien für Orte der Seite

invalidLocations[]
Advert.InvalidLocations.Location

String (Ortsname)

nein

Ausschlusskriterien für Orte der Seite

validGeoRegions[]
Advert.ValidGeoRegions.GeoRegion

String (Name der Region)

nein

Anzeigekriterien für Regionen der Seite

validGeoRegions[]Advert.ValidGeoRegions.GeoRegion

String (Name der Region)

nein

Ausschlusskriterien für Regionen der Seite

linkUrl
Advert.LinkUrl

String (URL)

ja

Link der Anzeige

normalAssetFileName
Advert.NormalAssetFileName

String

ja

Dateiname der Standardmotivs

tabletAssetFileName
Advert.TabletAssetFileName

String

nein

Dateiname des Motivs für Tabletts

mobileAssetFileName
Advert.MobileAssetFileName

String

nein

Dateiname des Motivs für Smartphones

XML-Format

Schemadefinition XSL:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Advert">
    <xs:complexType>
      <xs:attribute name="cancelled" type="xs:boolean" />
      <xs:sequence>
        <xs:element name="OrderNo" type="xs:string" />
        <xs:element name="Description" type="xs:string" />
        <xs:element name="Customer" type="xs:string" />
        <xs:element name="Priority" type="xs:unsignedByte" />
        <xs:element name="NormalAssetFileName" type="xs:string" />
        <xs:element name="TabletAssetFileName" type="xs:string" />
        <xs:element name="MobileAssetFileName" type="xs:string" />
        <xs:element name="MaxImpressions" type="xs:unsignedShort" />
        <xs:element name="MaxClicks" type="xs:unsignedShort" />
        <xs:element name="StartDate" type="xs:date" />
        <xs:element name="EndDate" type="xs:date" />
        <xs:element name="AdvertTypes">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="AdvertType" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="LinkUrl" type="xs:string" />
        <xs:element name="ValidTags">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Tag" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="InvalidTags">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Tag" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="ValidDepartments">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Department" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="InvalidDepartments">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Department" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="ValidLocations">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Location" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="InvalidLocations">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Location" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="ValidGeoRegions">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="GeoRegion" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="InvalidGeoRegions">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="GeoRegion" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Beispiel:

<Advert cancelled = "false">
	<OrderNo>imp_123456</OrderNo>
	<Description>Importtest 1</Description>
	<Customer>Testkunde</Customer>
	<Priority>100</Priority>
	<NormalAssetFileName>image1.png</NormalAssetFileName>
	<TabletAssetFileName>image2.png</TabletAssetFileName>
	<MobileAssetFileName>image2.png</MobileAssetFileName>
	<MaxImpressions>50000</MaxImpressions>
	<MaxClicks>10000</MaxClicks>
	<StartDate>2021-06-31</StartDate>
	<EndDate>2021-08-25</EndDate>
	<AdvertTypes>
		<AdvertType>BUTTON</AdvertType>
		<AdvertType>TITLE_HEADER</AdvertType>
	</AdvertTypes>
	<LinkUrl>http://www.hup.de</LinkUrl>
	<ValidTags>
		<Tag>Tag des Hundes</Tag>
	</ValidTags>
	<InvalidTags>
		<Tag>Haare</Tag>
	</InvalidTags>
	<ValidDepartments>
		<Department>Sport</Department>
	</ValidDepartments>
	<InvalidDepartments>
		<Department>Fußball</Department>
	</InvalidDepartments>
	<ValidLocations>
		<Location>Leipzig</Location>
		<Location>Dresden</Location>
	</ValidLocations>
	<InvalidLocations>
		<Location>Berlin</Location>
	</InvalidLocations>
	<ValidGeoRegions>
		<GeoRegion>Sachsen</GeoRegion>
		<GeoRegion>Baden-Baden</GeoRegion>
	</ValidGeoRegions>
	<InvalidGeoRegions>
		<GeoRegion>Mecklenburg-Vorpommern</GeoRegion>
	</InvalidGeoRegions>
</Advert>



  • Keine Stichwörter

2 Kommentare

  1. Danke, hast Du evtl. noch einen Link zu der Doku für den Export / die Schnittstelle zu Whattsapp bzw. anderen Messeging-Systemen oder läuft das über RSS-Feeds?

    1. Marko Oette sagt:

      Sorry, deine Antwort kam hier nicht an, und ich seh die Frage jetzt erst: Zu Messagern haben wir aktuell keine Schnittstellen. RSS Feeds gibt es natürlich.