getOffersForMultipleInteractionPoints
getOffersForMultipleInteractionPoints(String sessionID, String requestStr)
El método getOffersForMultipleInteractionPoints permite solicitar ofertas del servidor de ejecución para varios IP con desduplicación.
*
sessionID — una cadena que identifica la sesión actual.
*
requestStr — una cadena que proporciona una matriz de objetos GetOfferRequest.
Cada objeto GetOfferRequest especifica:
*
ipName — El nombre del punto de interacción (IP) para el que el objeto solicita ofertas
*
numberRequested — El número de ofertas exclusivas necesarias para el IP especificado
*
offerAttributes — Requisitos de los atributos de las ofertas entregadas utilizando una instancia de OfferAttributeRequirements
*
duplicationPolicy — ID de política de duplicación de las ofertas que se entregarán
*
Las políticas de duplicación determinan si se devolverán ofertas duplicadas en los distintos puntos de interacción en una única llamada de método. (Dentro de un punto de interacción individual, nunca se devuelven ofertas duplicadas). Actualmente, se da soporte a dos políticas de duplicación.
*
NO_DUPLICATION (Valor de ID = 1). Ninguna de las ofertas que se han incluido en las instancias de GetOfferRequest anteriores se incluirán en esta instancia de GetOfferRequest (es decir, Interact aplicará la desduplicación).
*
ALLOW_DUPLICATION (Valor de ID = 2). Se incluirán todas las ofertas que cumplan los requisitos especificados en esta instancia de GetOfferRequest. Las ofertas que se han incluido en las instancias de GetOfferRequest anteriores no se reconciliarán.
El orden de las solicitudes en el parámetro de matriz es también el orden de prioridad cuando se entregan las ofertas.
Por ejemplo, supongamos que los IP en la solicitud son IP1 e IP2, que no se permiten ofertas duplicadas (un ID de política de duplicación = 1) y que cada uno solicita cada dos ofertas. Si Interact encuentra las ofertas A, B y C para IP1 y las ofertas A y D para IP2, la respuesta contendrá las ofertas A y B para IP1, y sólo la oferta D para IP2.
Asimismo, tenga en cuenta que cuando el ID de política de duplicación es 1, las ofertas que se hayan entregado con un IP con una prioridad mayor no se entregará con este IP.
El método getOffersForMultipleInteractionPoints espera el número de milisegundos definido en la propiedad segmentationMaxWaitTimeInMS a que finalice toda la resegmentación antes de ejecutarse. Por lo tanto, si invoca un método postEvent que desencadena una resegmentación o un método setAudience inmediatamente antes de una llamada getOffers, puede producirse un retardo.
Valor de retorno
El servidor de ejecución responde a getOffersForMultipleInteractionPoints con un objeto de respuesta con los siguientes atributos completados:
*
*
*
*
*
Ejemplo
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) {
// Comprobar si hay alguna oferta
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());
}
Tenga en cuenta que la sintaxis de requestStr es la siguiente:
requests_for_IP[<requests_for_IP]
donde
<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
En el ejemplo anterior, requestForIP1 ({IP1,5,1,(5,attr1=1|numeric; attr2=value2|string, (3,attr3=value3|string)(3,attr4=4|numeric))}) significa que, para el punto de interacción denominado IP1, se entregan como máximo 5 ofertas diferentes que no pueden devolverse para otros puntos de interacción durante la misma llamada de método. Las 5 ofertas deben tener un atributo numérico denominado attr1 con el valor 1, y deben tener un atributo de cadena denominado attr2 con el valor value2. Aparte de esas 5 ofertas, un máximo de 3 deben tener un atributo de cadena denominado attr3 con el valor value3, y un máximo de 3 deben tener un atributo numérico denominado attr4 con el valor 4.
Los tipos de atributo permitidos son numéricos, cadena, y fecha y hora; el formato de un valor de atributo de fecha y hora debe ser MM/dd/yyyy HH:mm:ss. Para recuperar las ofertas devueltas, utilice el método Response.getAllOfferLists(). Para entender mejor la sintaxis, el ejemplo de setGetOfferRequests crea la misma instancia de GetOfferRequests utilizando objetos Java, que es la opción preferida.