postEvent

postEvent メソッドを使用して、対話式チャネルで定義されているイベントがあれば実行できます。

postEvent(String sessionID, String eventName, NameValuePairImpl[] eventParameters)

  • sessionID: セッション ID を示す文字列。

  • eventName: イベントの名前を示す文字列。

    注: イベントの名前は、対話式チャネルで定義されているイベントの名前と一致する必要があります。この名前の大/小文字は区別されません。
  • eventParameters: イベントとともに渡す必要のあるパラメーターを示す NameValuePairImpl オブジェクト。これらの値はセッション・データに格納されます。

    このイベントが再セグメンテーションをトリガーする場合、対話式フローチャートで要求されるすべてのデータをセッション・データで使用できるようにする必要があります。これらの値に、前のアクション (例えば、startSessionsetAudience、あるいはプロファイル・テーブルのロードなど) によってデータが設定されていないものがある場合、不足しているそれぞれの値のための eventParameter を含める必要があります。例えば、すべてのプロファイル・テーブルをメモリーにロードするように構成した場合は、対話式フローチャートに必要な一時データの NameValuePair を含める必要があります。

    2 つ以上のオーディエンス・レベルを使用していれば、ほとんどの場合、オーディエンス・レベルごとに異なる eventParameters のセットを持ちます。オーディエンス・レベルに正しいパラメーターのセットを確実に選択するために何らかのロジックを含める必要があります。

    重要: このイベントがレスポンス履歴への記録を行う場合は、オファーの処理コードを渡す必要があります。NameValuePair の名前を "UACIOfferTrackingCode" として定義する必要があります。

    イベントごとに処理コードを 1 つのみ渡すことができます。オファー・コンタクトの処理コードを渡さない場合、Interact は、オファーの最後の推奨リストにあるすべてのオファーについて、オファー・コンタクトを記録します。応答の処理コードを渡さない場合、Interact はエラーを返します。

  • postEvent で使用されるその他の予約パラメーターとその他のメソッドがいくつかあり、これらについては、このセクションの後半で説明します。

再セグメンテーションや、コンタクトまたはレスポンスの履歴への書き込みの要求は、応答を待機しません。

再セグメンテーションを行っても、現在のオーディエンス・レベルに対する以前のセグメンテーション結果は消去されません。実行する特定のフローチャートを定義するには UACIExecuteFlowchartByName パラメーターを使用できます。getOffers メソッドは、実行する前に、再セグメンテーションが完了するまで待機します。したがって、getOffers 呼び出しの直前に再セグメンテーションをトリガーする postEvent メソッドを呼び出す場合、遅延が生じる可能性があります。

戻り値

ランタイム・サーバーは、以下の属性が設定されたレスポンス・オブジェクトを使用して postEvent に応答します。

  • AdvisoryMessages
  • ApiVersion
  • セッション ID
  • StatusCode

以下の 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());