単純な対話計画の例
この例では、携帯電話会社の Web サイトの対話を設計しているとします。3 つの異なるオファーを作成し、オファーのロギングをセットアップし、オファーに処理コードを割り当て、オファーにリンクする一連の画像を表示します。
プロセスの設計
このクライアントとの対話を設計するには、以下のようにします。
- クライアントのサマリー・ページの要件を定義する
- オファー要件のインタラクション・ポイントを作成する
- オファーのロギングを構成する
- 処理コードを作成する
- ローテーションする一連のイメージをオファーにリンクする
この例は基本的なものであり、統合を作成するための最良の方法を示しているわけではありません。例えば、これらの例のいずれにも、レスポンス・クラスを使用したエラー・チェックは含まれていません。
携帯電話プランのサマリー・ページの要件を定義する
次の図は、携帯電話プランのサマリー・ページのレイアウトを示しています。
要件 | 実装 |
---|---|
アップグレードに関するオファーの専用ゾーンに表示される単一のオファー ページ上でアップグレードのオファーを表示する領域を定義する必要があります。また、表示するオファーを Interact が選出した後に、その情報をログに記録する必要もあります。 |
|
電話のアップグレード用の 2 つのオファー ページ上で電話機のアップグレードを表示する各領域を定義する必要があります。 |
|
分析用に、どのオファーが承認され、どのオファーが拒否されたかを、ログに記録する必要があります。 |
|
また、オファーのコンタクト、承認、または拒否をログに記録するときは必ず処理コードを渡す必要もあります。 |
NameValuePair |
ローテーションする 3 つのイメージをページ上に表示する。イメージをオファーにリンクする。 |
インタラクション・ポイントを作成する
これで、タッチポイントとの統合のコーディングを開始すると同時に、設計時環境のユーザーに、インタラクション・ポイントおよびイベントの作成を要求することができます。
オファーを表示するインタラクション・ポイントごとに、まずオファーを取得してから、そのオファーの表示に必要な情報を抽出する必要があります。例えば、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 iを定義する必要はありません。UACIOfferTrackingCode を指定しない場合は、最後に推奨された処理リストを Interact ランタイム・サーバーが自動的にコンタクトとしてログに記録します。
処理コードを作成する
次の例のように、必要に応じて NameValuePair を作成し、処理コードを格納します。
NameValuePair evtParam_TreatmentCode = new NameValuePairImpl();
evtParam_TreatmentCode.setName("UACIOfferTrackingCode");
evtParam_TreatmentCode.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCode.setValueDataType(NameValuePair.DATA_TYPE_STRING);
オファーにイメージをリンクする
ページ上で電話機のアップグレードを表示する 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 メソッドとともに送信することをお勧めします。