postEvent
postEvent(String sessionID, String eventName, NameValuePairImpl[] eventParameters)
postEvent メソッドを使用して、対話式チャネルで定義されているイベントがあれば実行できます。
*
sessionID - セッション id を識別する文字列。
*
eventName - イベントの名前を識別する文字列。
*
*
eventParameters - イベントを使用して渡す必要のあるパラメーターを識別する NameValuePairImpl オブジェクト。 これらの値はセッション・データに格納されます。
このイベントが再セグメンテーションをトリガーする場合、対話式フローチャートで要求されるすべてのデータをセッション・データで使用できるようにする必要があります。 これらの値に、前のアクション (例えば、startSessionsetAudience、あるいはプロファイル・テーブルのロードなど) によってデータが設定されていないものがある場合、不足しているそれぞれの値のための eventParameter を含める必要があります。 例えば、すべてのプロファイル・テーブルをメモリーにロードするように構成した場合は、対話式フローチャートに必要な一時データの NameValuePair を含める必要があります。
2 つ以上のオーディエンス・レベルを使用していれば、ほとんどの場合、オーディエンス・レベルごとに異なる eventParameters のセットを持ちます。 オーディエンス・レベルに正しいパラメーターのセットを確実に選択するために何らかのロジックを含める必要があります。
*
イベントごとに処理コードを 1 つのみ渡すことができます。 オファー・コンタクトの処理コードを渡さない場合、Interact は、オファーの最後の推奨リストにあるすべてのオファーについて、オファー・コンタクトを記録します。 応答の処理コードを渡さない場合、Interact はエラーを返します。
*
postEvent で使用されるその他の予約パラメーターとその他のメソッドがいくつかあり、これらについては、このセクションの後半で説明します。
再セグメンテーションや、コンタクトまたはレスポンスの履歴への書き込みの要求は、応答を待機しません。
UACIExecuteFlowchartByName パラメーターによって指定されない限り、再セグメンテーションでは、現在のオーディエンス・レベルのこの対話式チャネルに関連付けられているすべての対話式フローチャートを実行します。 getOffers メソッドは、実行する前に、再セグメンテーションが完了するまで待機します。 したがって、getOffers 呼び出しの直前に再セグメンテーションをトリガーする postEvent メソッドを呼び出す場合、遅延が生じる可能性があります。
戻り値
ランタイム・サーバーは、以下の属性が設定されたレスポンス・オブジェクトを使用して 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());