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)、それぞれが 2 つずつオファーを要求しているとします。 Interact が IP1 のオファー A、B、C と、IP2 のオファー A、D を検出した場合、その応答には IP1 のオファー A、B と、IP2 のオファー D のみが含まれます。
また、複製ポリシー ID が 1 の場合、優先順位がより高い IP を介して配信されているオファーは、この IP を介して配信されません。
getOffersForMultipleInteractionPoints メソッドは、segmentationMaxWaitTimeInMS プロパティーに定義された時間 (ミリ秒単位) 待機し、すべての再セグメンテーションが完了してから実行されます。 したがって、getOffers 呼び出しの直前に、再セグメンテーションまたは setAudience メソッドをトリガーする postEvent メソッドを呼び出す場合は、遅延が生じる可能性があります。
戻り値
ランタイム・サーバーは、以下の属性が設定されたレスポンス・オブジェクトを使用して 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 という数値属性を持ち、その値は 1 である必要があり、さらに attr2 という文字列属性を持ち、その値は value2 である必要があります。 その 5 つのうち、最大 3 つが attr3 という文字列属性を持ち、その値は value3 である必要があり、さらに最大 3 つが attr4 という数値属性を待ち、その値は 4 である必要があります。
使用できる属性タイプは、数値、文字列、および日時です。日時属性値の形式は MM/dd/yyyy HH:mm:ss である必要があります。 返されるオファーを取得するには、メソッド Response.getAllOfferLists() を使用します。 構文の理解を助けるため、setGetOfferRequests の例では、Java オブジェクトを使用しながら GetOfferRequests の同じインスタンスを作成します。 この方法が推奨されます。