getOffersForMultipleInteractionPoints
getOffersForMultipleInteractionPoints(String sessionID, String requestStr)
getOffersForMultipleInteractionPoints 메소드를 사용하여 중복 데이터가 삭제된 다중 IP에 대해 런타임 서버로부터 오퍼를 요청할 수 있습니다.
*
sessionID - 현재 세션을 식별하는 문자열입니다.
*
requestStr - GetOfferRequest 오브젝트의 배열을 제공하는 문자열입니다.
GetOfferRequest 오브젝트는 다음을 지정합니다.
*
ipName - 오브젝트가 오퍼를 요청하는 상호작용 지점(IP) 이름
*
numberRequested - 지정된 IP에 대해 필요한 고유 오퍼 수
*
offerAttributes - OfferAttributeRequirements 인스턴스를 사용하여 전달된 오퍼의 속성에 대한 요구사항
*
duplicationPolicy - 전달될 오퍼에 대한 중복 제거 정책 ID
중복 정책은 단일 메소드 호출의 여러 상호작용 지점에서 중복된 오퍼가 반환될지 여부를 판별합니다(개별 상호작용 지점 내에서 중복된 오퍼는 반환되지 않음). 현재 두 개의 중복 정책이 지원됩니다.
*
NO_DUPLICATION(ID 값 = 1). 이전 GetOfferRequest 인스턴스에 포함된 오퍼가 이 GetOfferRequest 인스턴스에 포함되지 않습니다(즉, Interact가 중복 데이터 삭제를 적용함).
*
ALLOW_DUPLICATION(ID 값 = 2). 이 GetOfferRequest 인스턴스에 지정된 요구사항을 충족시키는 오퍼가 포함됩니다. 이전 GetOfferRequest 인스턴스에 포함된 오퍼는 조정되지 않습니다.
배열 매개변수의 요청 순서 역시 오퍼가 배달될 때의 우선순위순입니다.
예를 들어, 요청의 IP가 IP1, IP2이고 중복된 오퍼가 허용되지 않으며(중복 정책 ID = 1), 각각 두 개의 오퍼를 요청한다고 가정하십시오. Interact가 IP1에 대해서는 오퍼 A, B, C를, IP2에 대해서는 오퍼 A, D를 찾을 경우, 응답은 IP1에 대해서는 오퍼 A, B를, IP2에 대해서는 오퍼 D만 포함합니다.
또한 중복 정책 ID가 1이면, IP를 통해 배달된 우선순위가 높은 오퍼는 이 IP를 통해 배달되지 않음을 참고하십시오.
getOffersForMultipleInteractionPoints 메소드는 실행 전에 segmentationMaxWaitTimeInMS 특성에 정의된 시간(밀리초) 동안 모든 재세그먼트가 완료되기를 기다립니다. 따라서 getOffers 호출 직전에 재세그먼트 또는 setAudience 메소드를 트리거하는 postEvent 메소드를 호출하면 지연이 있습니다.
리턴 값
런타임 서버는 다음 속성이 채워진 Response 오브젝트로 getOffersForMultipleInteractionPoints에 응답합니다.
*
*
*
*
*
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이라는 numeric 속성(값이 1이어야 함)을 가져야 하며 attr2라는 string 속성(값이 value2여야 함)을 가져야 합니다. 해당 5개의 오퍼 중에서 최대 3개는 attr3이라는 string 속성(값이 value3이어야 함)을 가져야 하며 최대 3개는 attr4라는 numeric 속성(값이 4여야 함)을 가져야 합니다.
허용되는 속성 유형은 numeric, string, datetime이며 datetime 속성 값 형식은 MM/dd/yyyy HH:mm:ss여야 합니다. 반환된 오퍼를 검색하려면 Response.getAllOfferLists() 메소드를 사용하십시오. 구문 이해를 돕기 위해 setGetOfferRequests의 예는Java 오브젝트 사용 중에 선호하는 동일한 GetOfferRequests 인스턴스를 빌드합니다.