getOffersForMultipleInteractionPoints
getOffersForMultipleInteractionPoints(String sessionID, String requestStr)
getOffersForMultipleInteractionPoints 方法使您可以从运行时服务器中为具有重复删除的多个交互点请求商品。
*
sessionID - 用于标识当前会话的字符串。
*
requestStr - 提供一组 GetOfferRequest 对象的字符串。
每个 GetOfferRequest 对象指定:
*
ipName - 对象正在为其请求商品的交互点 (IP) 名称
*
numberRequested - 指定 IP 需要的唯一商品的数量
*
offerAttributes - 使用 OfferAttributeRequirements 实例的已交付商品的属性的需求
*
duplicationPolicy - 将交付的商品的复制策略标识
复制策略确定是否将在单个方法调用中跨不同交互点来返回重复的商品。(在单个交互点之内,从不返回重复商品。)目前支持两个复制策略。
*
NO_DUPLICATION(标识值 = 1)。先前 GetOfferRequest 实例中已包含的商品均不包含在此 GetOfferRequest 实例中(即,Interact 将应用重复删除)。
*
ALLOW_DUPLICATION(标识值 = 2)。满足此 GetOfferRequest 实例中指定的需求的任何商品都将包含在内。先前 GetOfferRequest 实例中已包含的商品将不会进行调整。
当交付商品时,数组参数中请求的顺序也是优先级顺序。
例如,假设请求中的 IP 为首先是 IP1,然后是 IP2,那么不允许重复商品(重复策略标识 = 1),并且每个 IP 请求两个商品。如果 Interact 为 IP1 发现商品 A、B 和 C,为 IP2 发现商品 A 和 D,那么响应将为 IP1 包含商品 A 和 B,为 IP2 仅包含商品 D。
另请注意,当复制策略标识为 1 时,通过优先级更高的 IP 交付的商品将不会通过此 IP 来交付。
getOffersForMultipleInteractionPoints 方法在运行之前,将等待 segmentationMaxWaitTimeInMS 属性中定义的毫秒数以使所有细分市场重新划分完成。因此,如果您调用可触发细分市场重新划分的 postEvent 方法,或者在 getOffers 调用的前一刻调用 setAudience 方法,那么可能会有延迟。
返回值
运行时服务器对应于 getOffersForMultipleInteractionPoints,后者包含填充了以下属性的 Response 对象:
*
*
*
*
*
示例
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());
}
请注意,requestStr 的语法如下:
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
在以上显示的示例中,requestForIP1 ({IP1,5,1,(5,attr1=1|numeric; attr2=value2|string, (3,attr3=value3|string)(3,attr4=4|numeric))}) 意味着,对于名为 IP1 的交互点,至多交付 5 个在此同一方法调用期间无法为任何其他交互点返回的不同商品。所有这 5 个商品都必须具有一个名为 attr1(值必须为 1)的数字属性,并且必须具有一个名为 attr2(值必须为 value2)的字符串属性。在这 5 个商品之外,至多 3 个必须具有一个名为 attr3(值必须为 value3)的字符串属性,至多 3 个必须具有名为 attr4(值必须为 4)的数字属性。
允许的属性类型为数字、字符串和日期时间,日期时间属性值的格式必须为 MM/dd/yyyyHH:mm:ss。要检索返回的商品,请使用方法 Response.getAllOfferLists()。 为帮助了解语法,setGetOfferRequests 中的示例构建了 GetOfferRequests 的相同实例,但使用的是 Java 对象(这是首选)。