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) {
// Check to see if there are any offers
OfferList[] allOfferLists = response.getAllOfferLists();
if (allOfferLists != null) {
for (OfferList ol : allOfferLists) {
System.out.println("The following offers are delivered for interaction
point " + ol.getInteractionPointName() + ":");
for (Offer o : ol.getRecommendedOffers()) {
System.out.println(o.getOfferName());
}
}
}
}
else {
System.out.println("getOffersForMultipleInteractionPoints() method calls
returns an error with code: " + 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.