postEvent
postEvent 메소드를 사용하여 대화식 채널에 정의된 이벤트를 실행할 수 있습니다.
postEvent(문자열 sessionID, 문자열 eventName, NameValuePairImpl[] eventParameters)
*
sessionID: 세션 ID를 식별하는 문자열입니다.
*
eventName: 이벤트의 이름을 식별하는 문자열입니다.
*
*
eventParameters. 이벤트와 함께 전달해야 하는 매개변수를 식별하는 NameValuePairImpl 오브젝트입니다. 이 값은 세션 데이터에 저장됩니다.
이 이벤트가 재세그먼트를 트리거하는 경우, 대화식 플로우차트에 필요한 모든 데이터를 세션 데이터에서 사용할 수 있는지 확인해야 합니다. 이 값이 이전 작업(예: startSession이나 setAudience 또는 프로파일 테이블 로드)으로 채워지지 않은 경우, 누락된 모든 값에 대해 eventParameter를 포함시켜야 합니다. 예를 들어, 모든 프로파일 테이블을 메모리로 로드하도록 구성한 경우 대화식 플로우차트에 필요한 임시 데이터에 대해 NameValuePair를 포함시켜야 합니다.
두 개 이상의 대상 레벨을 사용 중인 경우, 각 대상 레벨마다 eventParameters 집합이 다를 가능성이 높습니다. 대상 레벨에 대한 올바른 매개변수 집합을 선택하도록 일부 논리를 포함시켜야 합니다.
*
이벤트당 하나의 처리 코드만 전달할 수 있습니다. 오퍼 컨택에 대한 처리 코드를 전달하지 못하면, Interact가 마지막 오퍼 권장 목록의 모든 오퍼에 대한 오퍼 컨택을 로그합니다. 응답에 대한 처리 코드를 전달하지 못하면, Interact가 오류를 리턴합니다.
*
postEvent 및 기타 메소드에서 사용되는 기타 몇 개의 예약 매개변수가 있으며, 이 섹션에서 나중에 설명합니다.
컨택 또는 응답 기록에 쓰기 또는 재세그먼트 요청은 응답을 기다리지 않습니다.
UACIExecuteFlowchartByName 매개변수를 사용하여 지정하지 않으면 재세그먼트는 현재 대상 레벨에 대해 이 대화식 채널과 연관된 모든 대화식 플로우차트를 실행합니다. getOffers 메소드는 실행 전에 재세그먼트가 완료되기를 기다립니다. 따라서 getOffers 호출 직전에 재세그먼트를 트리거하는 postEvent 메소드를 호출하면 지연이 있습니다.
리턴 값
런타임 서버는 다음 속성이 채워진 Response 오브젝트로 postEvent에 응답합니다.
*
*
*
*
다음 postEvent 예는재세그먼트를 트리거하는 이벤트에 대한 새 매개변수 보내기 및 응답 처리 방법을 표시합니다.
sessionId는 이 세션을 시작한 startSession 호출에서 사용되는 세션을 식별할 동일한 문자열입니다.
String eventName = "SearchExecution";

NameValuePair parmB1 = new NameValuePairImpl();
parmB1.setName("SearchString");
parmB1.setValueAsString("mortgage");
parmB1.setValueDataType(NameValuePair.DATA_TYPE_STRING);

NameValuePair parmB2 = new NameValuePairImpl();
parmB2.setName("TimeStamp");
parmB2.setValueAsDate(new Date());
parmB2.setValueDataType(NameValuePair.DATA_TYPE_DATETIME);

NameValuePair parmB3 = new NameValuePairImpl();
parmB3.setName("Browser");
parmB3.setValueAsString("IE6");
parmB3.setValueDataType(NameValuePair.DATA_TYPE_STRING);

NameValuePair parmB4 = new NameValuePairImpl();
parmB4.setName("FlashEnabled");
parmB4.setValueAsNumeric(1.0);
parmB4.setValueDataType(NameValuePair.DATA_TYPE_NUMERIC);

NameValuePair parmB5 = new NameValuePairImpl();
parmB5.setName("TxAcctValueChange");
parmB5.setValueAsNumeric(0.0);
parmB5.setValueDataType(NameValuePair.DATA_TYPE_NUMERIC);

NameValuePair parmB6 = new NameValuePairImpl();
parmB6.setName("PageTopic");
parmB6.setValueAsString("");
parmB6.setValueDataType(NameValuePair.DATA_TYPE_STRING);

NameValuePair[] postEventParameters = { parmB1,
parmB2,
parmB3,
parmB4,
parmB5,
parmB6
};

/** Make the call */
response = api.postEvent(sessionId, eventName, postEventParameters);

/** Process the response appropriately */
// check if response is successful or not
if(response.getStatusCode() == Response.STATUS_SUCCESS)
{
System.out.println("postEvent call processed with no warnings or errors");
}
else if(response.getStatusCode() == Response.STATUS_WARNING)
{
System.out.println("postEvent call processed with a warning");
}
else
{
System.out.println("postEvent call processed with an error");
}

// For any non-successes, there should be advisory messages explaining why
if(response.getStatusCode() != Response.STATUS_SUCCESS)
printDetailMessageOfWarningOrError("postEvent",
response.getAdvisoryMessages());