getOffersForMultipleInteractionPoints
getOffersForMultipleInteractionPoints(String sessionID, String requestStr)
La méthode getOffersForMultipleInteractionPoints vous permet de demander des offres à partir du serveur d'exécution pour plusieurs points d'interaction avec dédoublonnage.
*
sessionID — Chaîne identifiant la session en cours.
*
requestStr — Chaîne fournissant un tableau d'objets GetOfferRequest.
Chaque objet GetOfferRequest spécifique ce qui suit :
*
ipName — Nom du point d'interaction (IP) pour lequel l'objet demande des offres
*
numberRequested — Nombre d'offres uniques nécessaires pour le point d'interaction indiqué
*
offerAttributes — Configuration requise pour les attributs des offres distribuées à l'aide d'une instance OfferAttributeRequirements
*
duplicationPolicy — ID de stratégie de duplication pour les offres à distribuer
*
Les règles de duplication déterminent si les offres en double seront renvoyées dans différents points d'interaction dans un seul appel de méthode. (Dans un point d'interaction individuel, les offres en double ne sont jamais renvoyées). Actuellement, deux règles de duplication sont prises en charge.
*
NO_DUPLICATION (valeur d'ID = 1). Aucune des offres incluses dans les instances précédentes de GetOfferRequest ne seront inclues dans cette instance de GetOfferRequest (c'est-à-dire que Interact appliquera le dédoublonnage).
*
ALLOW_DUPLICATION (valeur ID = 2). Toutes les offres répondant aux exigences indiquées dans cette instance de GetOfferRequest seront incluses. Les offres qui ont été inclus dans les précédentes instances de GetOfferRequest ne seront pas rapprochées.
L'ordre des demandes dans le paramètre de tableau est également l'ordre de préséance lorsque des offres sont en cours de distribution.
Par exemple, supposons que les points d'interaction dans la demande sont IP1, puis IP2, qu'aucune offre en double n'est autorisée (ID de règle de duplication = 1), et que chacun demande deux offres. Si Interact propose A, B et C à IP1 et A et D à IP2, la réponse contiendra les offres A et B pour IP1, et seulement l'offre D pour IP2.
Notez également que lorsque l'ID de règle de dédoublonnage est 1, les offres distribuées via un point d'interaction ayant une priorité plus élevée ne seront pas distribuées via ce point d'interaction.
La méthode getOffersForMultipleInteractionPoints attend le nombre de millisecondes défini dans la propriété segmentationMaxWaitTimeInMS afin de permettre à toute la re-segmentation de se terminer avant de s'exécuter. Par conséquent, si vous appelez une méthode postEvent qui déclenche une resegmentation ou appelez une méthode setAudience juste avant un appel getOffers, il peut y avoir un retard.
Valeur de retour
Le serveur d'exécution répond à getOffersForMultipleInteractionPoints à l'aide d'un objet de réponse dans lequel les attributs suivants sont renseignés :
*
*
*
*
*
Exemple
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());
}
Notez que la syntaxe de requestStr est la suivante :
requests_for_IP[<requests_for_IP]
<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
Dans l'exemple ci-dessus, requestForIP1 ({IP1,5,1,(5,attr1=1|numeric; attr2=value2|string, (3,attr3=value3|string)(3,attr4=4|numeric))}) signifie que pour le point d'interaction IP1, 5 offres distinctes au maximum doivent être distribuées. Ces offres ne peuvent en outre pas être renvoyées pour les autres points d'interaction pendant le même appel de méthode. Chacune de ces 5 offres doit avoir un attribut numérique nommé attr1 qui doit avoir la valeur 1, et doit avoir un attribut de chaîne nommé attr2 qui doit avoir la valeur value2. Sur ces 5 offres, un maximum de 3 doit avoir un attribut de chaîne appelé attr3 ayant la valeur value3, un maximum de 3 doit avoir un attribut and numérique appelé attr4 ayant la valeur 4.
Les types d'attribut autorisés sont numérique, chaîne, date/heure (numeric, string et datetime) et le format d'une valeur d'attribut date/heure doit être MM/jj/aaaa HH:mm:ss. Pour extraire les offres renvoyées, utilisez la méthode Response.getAllOfferLists(). Pour vous aider à comprendre la syntaxe, l'exemple dans setGetOfferRequests génère la même instance de GetOfferRequests, tout en utilisant des objets Java, ce qui est recommandé.