getOffersForMultipleInteractionPoints

getOffersForMultipleInteractionPoints メソッドを使用して、重複が解消されている複数の IP に対する、ランタイム・サーバーからのオファーを要求できます。

getOffersForMultipleInteractionPoints(String sessionID, String requestStr)
  • sessionID - 現行セッションを識別する文字列。

  • requestStr - GetOfferRequest オブジェクトの配列を指定する文字列。

    GetOfferRequest オブジェクトはそれぞれ以下を指定します。

    • ipName - オファーを要求しているオブジェクトのインタラクション・ポイント (IP) 名
    • numberRequested - 指定された IP に必要な一意のオファーの数
    • offerAttributes - OfferAttributeRequirements のインスタンスを使用する、配信されるオファーの属性についての要件
    • duplicationPolicy - 配信されるオファーの複製ポリシー ID

      複製ポリシーにより、複製されたオファーが 1 つのメソッドの呼び出しで異なるインタラクション・ポイントを通じて返されるかどうかが決定されます。(個々のインタラクション・ポイント内では複製されたオファーが返されることはありません。) 現在、2 つの複製ポリシーがさポートされています。

      • 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 に応答します。

  • AdvisoryMessages
  • ApiVersion
  • OfferList の配列
  • セッション ID
  • StatusCode

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 の同じインスタンスを作成します。 この方法が推奨されます。