단순 상호작용 계획 예
휴대 전화 회사의 웹 사이트에 대한 상호작용을 디자인하고 있습니다. 다음 다이어그램은 휴대 전화 계획 요약 페이지의 레이아웃을 보여줍니다.
상호작용 지점을 보여주는 샘플 웹 페이지
휴대 전화 계획 요약 페이지의 요구사항에 맞게 다음 항목을 정의합니다.
업그레이드에 대한 오퍼 전용 구역에 표시할 오퍼 하나
*
업그레이드 오퍼를 표시하는 페이지의 영역을 정의해야 합니다. 또한 Interact가 표시할 오퍼를 선택하고 나면 정보를 로그해야 합니다.
상호작용 지점: ip_planSummaryBottomRight
이벤트: evt_logOffer
전화 업그레이드를 위한 두 개의 오퍼
*
상호작용 지점: 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);
이제 디자인 환경 사용자에게 접점과의 통합을 코딩하는 동안 상호작용 지점 및 이벤트를 작성하도록 요청할 수 있습니다.
오퍼를 표시할 각 상호작용 지점마다 먼저 오퍼를 가져온 후 오퍼를 표시해야 할 정보를 추출해야 합니다. 예를 들어, 웹 페이지의 하단 오른쪽 영역에 대한 오퍼를 요청하십시오(planSummaryBottomRight).
Response response=getOffers(sessionID, ip_planSummaryBottomRight, 1)
그러면 OfferList 응답을 포함한 응답 오브젝트가 리턴됩니다. 하지만 웹 페이지에 OfferList 오브젝트를 사용할 수 없습니다. 오퍼 속성 중 하나로 알고 있는 오퍼의 이미지 파일(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)
각 메소드를 개별적으로 호출하지 않고 웹 페이지의 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를 정의할 필요가 없습니다.
또한 전화 업그레이드 오퍼를 표시하는 페이지의 두 번째 영역에 대해 30초마다 표시되는 이미지를 변경하기 위해 무언가를 썼습니다. 세 가지 이미지를 회전시키도록 결정했으므로 다음을 이용하여 이미지를 회전시키기 위해 코드에 사용할 캐시하려는 오퍼 세트를 검색해야 합니다.
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
}
}
}
로컬 캐시에서 클라이언트 코드 페치를 쓰고 이미지가 표시된 후 각 오퍼마다 한 번만 컨택에 로그해야 합니다. 컨택에 로그하려면 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)
특히, 세 가지 postEvent 호출을 executeBatch 메소드와 함께 보내는 것이 가장 좋습니다.
이는 기본 예이며 통합을 쓰는 최상의 방법을 표시하지는 않습니다. 예를 들어, 이 예의 어디에도 Response 클래스를 사용한 오류 검사는 포함되어 있지 않습니다.