単純な対話計画の例
携帯電話会社の Web サイトの対話を設計しているとします。次の図は、携帯電話プランのサマリー・ページのレイアウトを示しています。
インタラクション・ポイントを表示している Web ページの例
携帯電話プランのサマリー・ページの要件を満たすために、以下の項目を定義します。
アップグレードに関するオファーの専用ゾーンに表示される単一のオファー
*
インタラクション・ポイント: ip_planSummaryBottomRight
イベント: evt_logOffer
電話のアップグレード用の 2 つのオファー
*
インタラクション・ポイント: ip_planSummaryTopRight
インタラクション・ポイント: ip_planSummaryBottomLeft
分析用に、どのオファーが承認され、どのオファーが拒否されたかを、ログに記録する必要があります。
イベント: evt_offerAccept
イベント: evt_offerReject
また、オファーのコンタクト、承認、または拒否をログに記録するときは必ず処理コードを渡す必要もあります。次の例のように、必要に応じて NameValuePair を作成し、処理コードを格納します。
NameValuePair evtParam_TreatmentCode = new NameValuePairImpl();
evtParam_TreatmentCode.setName("UACIOfferTrackingCode");
evtParam_TreatmentCode.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCode.setValueDataType(NameValuePair.DATA_TYPE_STRING);
これで、タッチポイントとの統合のコーディングを開始すると同時に、設計環境のユーザーに、インタラクション・ポイントおよびイベントの作成を要求することができます。
オファーを表示するインタラクション・ポイントごとに、まずオファーを取得してから、そのオファーの表示に必要な情報を抽出する必要があります。 例えば、Web ページの右下の領域のオファーを要求します (planSummaryBottomRight)。
Response response=getOffers(sessionID, ip_planSummaryBottomRight, 1)
これは、OfferList レスポンスを含むレスポンス・オブジェクトを返します。ただし、Web ページでは OfferList オブジェクトは使用できません。オファー属性の 1 つであることがわかっている、オファーのイメージ・ファイル (offerImg) が必要です。必要なオファー属性は、OfferList から抽出する必要があります。
OfferList offerList=response.getOfferList();
if(offerList.getRecommendedOffers() != null)
{
Offer offer = offerList.getRecommendedOffers()[0];
NameValuePair[] attributes = offer.getAdditionalAttributes();
for(NameValuePair attribute: attributes)
{
if(attribute.getName().equalsIgnoreCase("offerImg"))
{
/* Use this value in your code for the page, for
example: stringHtml = "<img src="+attribute.getValueAsString()+ " > */
}
}
}
これでオファーが表示されるので、そのログをコンタクトとして記録します。
NameValuePair evtParam_TreatmentCode = new NameValuePairImpl();
evtParam_TreatmentCode.setName("UACIOfferTrackingCode");
evtParam_TreatmentCode.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCode.setValueDataType(NameValuePair.DATA_TYPE_STRING);
postEvent(
sessionID, evt_logOffer, evtParam_TreatmentCode)
これらの各メソッドを呼び出す代わりに、Web ページの planSummaryBottomLeft 部分に対して、次の例のように executeBatch メソッドを使用することができます。
Command getOffersCommand = new CommandImpl();
getOffersCommand.setMethodIdentifier(Command.COMMAND_GETOFFERS);
getOffersCommand.setInteractionPoint(ip_planSummaryBottomLeft);
getOffersCommand.setNumberRequested(1);

Command postEventCommand = new CommandImpl();
postEventCommand.setMethodIdentifier(Command.COMMAND_POSTEVENT);
postEventCommand.setEvent(evt_logOffer);

/** Build command array */
Command[] commands =
{
getOffersCommand,
postEventCommand
};

/** Make the call */
BatchResponse batchResponse = api.executeBatch(
sessionId, commands);
この例では、UACIOfferTrackingCode を指定しない場合、Interact ランタイム・サーバーが最後に推奨された処理リストを自動的にコンタクトとしてログに記録するため、UACIOfferTrackingCode を定義する必要はありません。
また、電話のアップグレードのオファーを表示するページの 2 番目の領域に表示するイメージを 30 秒ごとに変更するように書き込んだとします。3 つのイメージを交替で表示することを決めたため、以下を使用してオファーのセットを取得し、キャッシュに入れて、イメージを交替させるためのコード内で使用する必要があります。
Response response=getOffers(sessionID, ip_planSummaryBottomLeft, 3)
OfferList offerList=response.getOfferList();
if(offerList.getRecommendedOffers() != null)
{
for(int x=0;x<3;x++)
{
Offer offer = offerList.getRecommendedOffers()[x];
if(x==0)
{
// grab offerimg attribute value and store somewhere;
// this will be the first image to display
}
else if(x==1)
{
// grab offerimg attribute value and store somewhere;
// this will be the second image to display
}
else if(x==2)
{
// grab offerimg attribute value and store somewhere;
// this will be the third image to display
}
}
}
オファーごとに、そのイメージが表示された後で 1 回のみローカル・キャッシュから取り出し、コンタクトにログを記録するクライアント・コードを作成する必要があります。コンタクトのログを記録するには、以前と同様に UACITrackingCode パラメーターをポストする必要があります。オファーごとに異なるトラッキング・コードがあります。
NameValuePair evtParam_TreatmentCodeSTR = new NameValuePairImpl();
NameValuePair evtParam_TreatmentCodeSBR = new NameValuePairImpl();
NameValuePair evtParam_TreatmentCodeSBL = new NameValuePairImpl();

OfferList offerList=response.getOfferList();
if(offerList.getRecommendedOffers() != null)
{
for(int x=0;x<3;x++)
{
Offer offer = offerList.getRecommendedOffers()[x];
if(x==0)
{
evtParam_TreatmentCodeSTR.setName("UACIOfferTrackingCode");
evtParam_TreatmentCodeSTR.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCodeSTR.setValueDataType(NameValuePair.DATA_TYPE_STRING);
}
else if(x==1)
{
evtParam_TreatmentCodeSBR.setName("UACIOfferTrackingCode");
evtParam_TreatmentCodeSBR.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCodeSBR.setValueDataType(NameValuePair.DATA_TYPE_STRING);
}
else if(x==2)
{
evtParam_TreatmentCodeSBL.setName("UACIOfferTrackingCode");
evtParam_TreatmentCodeSBL.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCodeSBL.setValueDataType(NameValuePair.DATA_TYPE_STRING);
}
}
}
オファーごとに、そのオファーがクリックされたら、承認されたオファーと拒否されたオファーをログに記録する必要があります。(このシナリオでは、明示的に選択されないオファーは拒否されたものと見なされます。) 次の例は、ip_planSummaryTopRight オファーが選択される場合です。
postEvent(sessionID, evt_offerAccept, evtParam_TreatmentCodeSTR)
postEvent(sessionID, evt_offerReject, evtParam_TreatmentCodeSBR)
postEvent(sessionID, evt_offerReject, evtParam_TreatmentCodeSBL)
実際には、これら 3 つの postEvent 呼び出しを、executeBatch メソッドとともに送信することをお勧めします。
これは基本的な例であり、統合の最も良い書き方を示したものではありません。例えば、これらの例のいずれにも、レスポンス・クラスを使用したエラー・チェックは含まれていません。