startSession
startSession(String sessionID, 
boolean relyOnExistingSession,
boolean debug,
String interactiveChannel,
NameValuePairImpl[] audienceID,
String audienceLevel,
NameValuePairImpl[] parameters)
startSession 메소드는 런타임 세션을 작성하고 정의합니다. startSession은 다음 작업을 다섯 개까지 트리거할 수 있습니다.
*
*
*
*
오퍼 제외 데이터를 세션으로 로드(enableOfferSuppressionLookup 특성이 true로 설정된 경우)
*
점수 재정의 데이터를 세션으로 로드(enableScoreOverrideLookup 특성이 true로 설정된 경우)
startSession 메소드에 필요한 매개변수는 다음과 같습니다.
*
sessionID - 세션 ID를 식별하는 문자열입니다. 세션 ID를 정의해야 합니다. 예를 들어, 고객 ID와 시간소인을 조합하여 사용할 수 있습니다.
런타임 세션 구성요소를 정의하려면 세션 ID를 지정해야 합니다. 이 값은 클라이언트가 관리합니다. 클라이언트는 동일한 세션 ID에 대한 모든 메소드 호출을 동기화해야 합니다. 동일한 세션 ID를 사용한 동시 API 호출에 대한 동작은 정의되지 않습니다.
*
relyOnExistingSession - 이 세션이 새 세션을 사용하는지 또는 기존 세션을 사용하는지 여부를 정의하는 부울입니다. 유효한 값은 true 또는 false입니다. true이면, startSession 메소드와 함께 기존 세션 ID를 제공해야 합니다. false이면, 새 세션 ID를 제공해야 합니다.
relyOnExistingSessiontrue로 설정하고 세션이 있는 경우, 런타임 환경은 기존 세션 데이터를 사용하며 데이터를 다시 로드하거나 세그먼트를 트리거하지 않습니다. 세션이 없는 경우, 런타임 환경은 데이터 로드 및 세그먼트 트리거를 포함하여 새 세션을 작성합니다. 접점에 런타임 세션보다 길이가 긴 세션이 있으면 relyOnExistingSession을 true로 설정하고 모든 startSession 호출에 사용하는 것이 유용합니다. 예를 들어, 웹 사이트 세션은 2시간 동안 지속되지만 런타임 세션은 20분 동안만 지속됩니다.
동일한 세션 ID를 사용하여 startSession을 두 번 호출하는 경우, relyOnExistingSession이 false이면 첫 번째 startSession 호출의 모든 세션 데이터가 손실됩니다.
*
debug - 디버그 정보를 사용 또는 사용 안함으로 설정하는 부울입니다. 유효한 값은 true 또는 false입니다. true이면, Interact가 런타임 서버 로그에 디버그 정보를 로그합니다. 각 세션마다 개별적으로 디버그 플래그가 설정됩니다. 따라서 개별 세션에 대한 디버그 데이터를 추적할 수 있습니다.
*
interactiveChannel - 이 세션이 참조하는 대화식 채널 이름을 정의하는 문자열입니다. 이 이름은 Campaign에 정의된 대화식 채널 이름과 정확히 일치해야 합니다.
*
audienceID - 이름이 대상 ID를 포함하는 테이블의 실제 열 이름과 일치해야 하는 NameValuePairImpl 오브젝트의 배열입니다.
*
audienceLevel - 대상 레벨을 정의하는 문자열입니다.
*
parameters - startSession과 함께 전달해야 하는 매개변수를 식별하는 NameValuePairImpl 오브젝트입니다. 이 값은 세션 데이터에 저장되며 세그먼트에 사용할 수 있습니다.
동일한 대상 레벨에 대해 몇 개의 대화식 플로우차트가 있으면, 모든 테이블에 있는 모든 열의 상위 집합을 포함시켜야 합니다. 프로파일 테이블을 로드하도록 런타임을 구성하고 프로파일 테이블에 사용자가 필요로 하는 모든 열이 포함된 경우, 프로파일 테이블의 데이터를 겹쳐쓰지 않으려면 매개변수를 전달하지 않아도 됩니다. 프로파일 테이블에 필수 열 서브세트가 포함된 경우, 누락된 열을 매개변수로 포함시켜야 합니다.
audienceID 또는 audienceLevel이 유효하지 않고 relyOnExistingSession이 false이면, startSession 호출에 실패합니다. interactiveChannel이 유효하지 않으면, relyOnExistingSession이 true이건 false이건 startSession이 실패합니다.
relyOnExistingSession이 true이고 동일한 sessionID를 사용하여 두 번째 startSession 호출을 수행하지만 첫 번째 세션이 만료된 경우, Interact는 새 세션을 작성합니다.
relyOnExistingSession이 true이고 동일한 sessionID를 사용하지만 다른 audienceID 또는 audienceLevel을 사용하여 두 번째 startSession 호출을 수행하는 경우, 런타임 서버는 기존 세션에 대해 대상을 변경합니다.
relyOnExistingSession이 true이고 동일한 sessionID를 사용하지만 다른 interactiveChannel을 사용하여 두 번째 startSession 호출을 수행하는 경우, 런타임 서버는 새 세션을 작성합니다.
리턴 값
런타임 서버는 다음 속성이 채워진 Response 오브젝트로 startSession에 응답합니다.
*
*
*
*
다음 예는startSession을 호출하는 한 가지 방법을 표시합니다.
String sessionId="MySessionID-123";
String audienceLevel="Customer";
NameValuePair custId = new NameValuePairImpl();
custId.setName("CustomerId");
custId.setValueAsNumeric(1.0);
custId.setValueDataType(NameValuePair.DATA_TYPE_NUMERIC);
NameValuePair[] initialAudienceId = { custId };
boolean relyOnExistingSession=false;
boolean initialDebugFlag=true;
String interactiveChannel="Accounts Website";
NameValuePair parm1 = new NameValuePairImpl();
parm1.setName("SearchString");
parm1.setValueAsString("");
parm1.setValueDataType(NameValuePair.DATA_TYPE_STRING);

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

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

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

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

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

/** Specifying the parameters (optional) */
NameValuePair[] initialParameters = { parm1,
parm2,
parm3,
parm4,
parm5,
parm6
};

/** Make the call */
response = api.startSession(sessionId, relyOnExistingSession, initialDebugFlag,
interactiveChannel, initialAudienceId, audienceLevel, initialParameters);

/** Process the response appropriately */
processStartSessionResponse(response);
processStartSessionResponsestartSession이 리턴한 Response 오브젝트를 처리하는 메소드입니다.
public static void processStartSessionResponse(Response response)
{
// check if response is successful or not
if(response.getStatusCode() == Response.STATUS_SUCCESS)
{
System.out.println("startSession call processed with no warnings or errors");
}
else if(response.getStatusCode() == Response.STATUS_WARNING)
{
System.out.println("startSession call processed with a warning");
}
else
{
System.out.println("startSession call processed with an error");
}

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