getOffersForMultipleInteractionPoints
getOffersForMultipleInteractionPoints(String sessionID, String requestStr)
Mit der getOffersForMultipleInteractionPoints-Methode können Sie Angebote vom Laufzeitserver für mehrere IPs mit Deduplizierung anfordern.
*
sessionID - eine Zeichenfolge, die die aktuelle Sitzung angibt.
*
requestStr - eine Zeichenfolge, die ein Array aus GetOfferRequest-Objekten angibt.
Jedes GetOfferRequest-Objekt legt fest:
*
ipName - Der Name des Interaktionspunkts (IP), für den das Objekt Angebote anfordert
*
numberRequested - Die Anzahl an eindeutigen Angeboten, die für den angegebenen IP erforderlich ist
*
offerAttributes - Anforderungen an die Attribute der gelieferten Angebote mit einer Instanz von OfferAttributeRequirements
*
duplicationPolicy - Duplizierungsrichtlinien-ID für die Angebote, die geliefert werden
*
Duplizierungsrichtlinien legen fest, ob doppelte Angebote mit verschiedenen Interaktionspunkten an einen einzelnen Methodenaufruf zurückgegeben werden sollen. (Innerhalb eines einzelnen Interaktionspunkts werden doppelte Angebote nie zurückgegeben.) Gegenwärtig werden zwei Duplizierungsrichtlinien unterstützt.
*
NO_DUPLICATION (ID-Wert = 1). Keines der Angebote, die in den vorangegangenen GetOfferRequest-Instanzen enthalten waren, wird in diese GetOfferRequest-Instanz einbezogen (das heißt, Interact wendet die Deduplizierung an).
*
ALLOW_DUPLICATION (ID-Wert = 2). Alle Angebote, die die Voraussetzungen erfüllen, die in dieser GetOfferRequest-Instanz angegeben sind, werden einbezogen. Es findet kein Abgleich der Angebote statt, die in den vorangegangenen GetOfferRequest-Instanzen enthalten waren.
Die Reihenfolge der Anfragen im Array-Parameter ist auch die Reihenfolge der Priorität, in der die Angebote geliefert werden.
Beispiel: Angenommen, die IPs in der Anfrage heißen IP1 und IP2, duplizierte Angebote sind unzulässig (mit der Duplizierungsrichtlinien-ID = 1) und jeder IP fordert zwei Angebote an. Wenn Interact die Angebote A, B und C für IP1 und die Angebote A und D für IP2 findet, enthält die Antwort die Angebote A und B für IP1 und nur das Angebot D für IP2.
Zusätzlicher Hinweis: Wenn die Duplizierungsrichtlinien-ID 1 lautet, werden Angebote, die über einen IP mit hoher Priorität geliefert wurden, nicht über diesen IP geliefert.
Bevor die getOffersForMultipleInteractionPoints-Methode ausgeführt wird, wartet sie so viele Millisekunden, wie in der segmentationMaxWaitTimeInMS-Eigenschaft angegeben sind, um die erneute Segmentierung abzuschließen. Daher kann es zu einer Verzögerung kommen, wenn Sie eine postEvent-Methode aufrufen, die sofort eine erneute Segmentierung oder eine setAudience-Methode auslöst, bevor ein getOffers-Aufruf erfolgt.
Rückgabewert
Der Laufzeitserver beantwortet getOffersForMultipleInteractionPoints mit einem Response-Objekt, das die folgenden Attribute enthält:
*
*
*
*
*
Beispiel
InteractAPI api = InteractAPI.getInstance("url");
String sessionId = "123";
String requestForIP1 = "{IP1,5,1,(5,attr1=1|numeric;attr2=value2|string,
(3,attr3=value3|string)(3,attr4=4|numeric))}";
String requestForIP2 = "{IP2,3,2,(3,attr5=value5|string)}";
String requestForIP3 = "{IP3,2,1}";
String requestStr = requestForIP1 + requestForIP2 + requestForIP3;
Response response = api.getOffersForMultipleInteractionPoints(sessionId,
requestStr);

if (response.getStatusCode() == Response.STATUS_SUCCESS) {
// Prüfung, ob Angebote vorhanden sind
OfferList[] allOfferLists = response.getAllOfferLists();
if (allOfferLists != null) {
for (OfferList ol : allOfferLists) {
System.out.println("Die folgenden Angebote werden für den Interaktionspunkt
geliefert " + ol.getInteractionPointName() + ":");
for (Offer o : ol.getRecommendedOffers()) {
System.out.println(o.getOfferName());
}
}
}
}
else {
System.out.println("getOffersForMultipleInteractionPoints() Methodenaufrufe
gibt einen Fehler mit dem Code zurück: " + response.getStatusCode());
}
Hinweis: Die Syntax von requestStr lautet folgendermaßen:
requests_for_IP[<requests_for_IP]
wobei
<requests_for_IP> = {ip_name,number_requested_for_this_ip,
dupe_policy[,child_requirements]]}
attribute_requirements = (number_requested_for_these_attribute_requirements
[,attribute_requirement[;individual_attribute_requirement])
[,(attribute_requirements))
individual_attribute_requirement = attribute_name=attribute_value | attribute_type
Im Beispiel oben bedeutet requestForIP1 ({IP1,5,1,(5,attr1=1|numeric; attr2=value2|string, (3,attr3=value3|string)(3,attr4=4|numeric))}) für den Interaktionspunkt IP1 eine Lieferung von 5 möglichst verschiedenen Angeboten, die während dieses Methodenaufrufs nicht auch von einem anderen Interaktionspunkt zurückgegeben werden können. Alle 5 Angebote müssen über das numerische Attribut attr1 mit dem Wert 1 und über das Zeichenfolgeattribut attr2 mit dem Wert value2 verfügen. Von diesen 5 Angeboten dürfen maximal 3 über das Zeichenfolgeattribut attr3 mit dem Wert value3 und maximal 3 über das numerische Attribut attr4 mit dem Wert 4 verfügen.
Die zulässigen Attributtypen sind numerisch, Zeichenfolge und Datum/Uhrzeit und der Wert des Datum/Uhrzeit-Attributs muss dem Format MM/dd/yyyy HH:mm:ss entsprechen. Zum Abrufen der zurückgegebenen Angebote verwenden Sie die Methode Response.getAllOfferLists(). Zum besseren Verständnis der Syntax wird im Beispiel in setGetOfferRequests die gleiche Instanz von GetOfferRequests bevorzugt mit Java-Objekten erstellt.