postEvent
Mit der postEvent-Methode können Sie jedes Ereignis ausführen, das im interaktiven Kanal definiert ist.
postEvent(String sessionID, String eventName, NameValuePairImpl[] eventParameters)
*
sessionID: eine Zeichenfolge zur Identifizierung der Sitzungs-ID.
*
eventName: eine Zeichenfolge zur Identifizierung des Ereignisnamens.
*
*
eventParameters. NameValuePairImpl-Objekte geben alle Parameter an, die mit dem Ereignis übergeben werden müssen. Diese Werte werden in den Sitzungsdaten gespeichert.
Wenn dieses Ereignis eine erneute Segmentierung auslöst, müssen Sie sicherstellen, dass alle vom interaktiven Ablaufdiagramm benötigten Daten in den Sitzungsdaten verfügbar sind. Wenn diese Werte noch nicht durch vorangegangene Aktionen ausgefüllt wurden (zum Beispiel durch startSession, durch setAudience oder beim Laden der Profiltabelle), müssen Sie für jeden fehlenden Wert einen eventParameter einschließen. Wenn Sie zum Beispiel alle Profiltabellen so konfiguriert haben, dass diese im Hauptspeicher geladen werden, müssen Sie für alle temporären Daten, die für interaktive Ablaufdiagramme erforderlich sind, jeweils ein NameValuePair einschließen.
Wenn Sie mehrere Zielgruppenebenen verwenden, haben Sie vermutlich verschiedene Sätze an eventParameters für jede Zielgruppenebene. Sie sollten daher eine entsprechende Logik einschließen, die gewährleistet, dass für jede Zielgruppenebene immer der richtige Parametersatz ausgewählt wird.
*
Pro Ereignis können Sie immer nur einen Verfahrenscode übergeben. Wenn Sie den Verfahrenscode für einen Angebotskontakt nicht übergeben, protokolliert Interact jeweils einen Angebotskontakt für jedes Angebot in der zuletzt empfohlenen Angebotsliste. Wenn Sie den Verfahrenscode für eine Antwort nicht übergeben, gibt Interact einen Fehler zurück.
*
Es gibt eine Reihe weiterer reservierter Parameter, die Sie mit postEvent und anderen Methoden verwenden können, die später in diesem Abschnitt erläutert werden.
Wenn Sie eine erneute Segmentierung anfordern oder in den Kontakt- oder Antwortverlauf schreiben, wird nicht auf eine Antwort gewartet.
Sofern nicht mit dem UACIExecuteFlowchartByName-Parameter angegeben, ruft die erneute Segmentierung alle interaktiven Ablaufdiagramme auf, die diesem interaktiven Kanal für die aktuelle Zielgruppenebene zugeordnet sind. Die getOffers-Methode wartet, bis die erneute Segmentierung abgeschlossen ist, und wird erst danach ausgeführt. Daher kann es zu einer Verzögerung kommen, wenn Sie eine postEvent-Methode aufrufen, die sofort eine erneute Segmentierung auslöst, bevor ein getOffers-Aufruf erfolgt.
Rückgabewert
Der Laufzeitserver beantwortet postEvent mit einem Response-Objekt, das die folgenden Attribute enthält:
*
*
*
*
Beispiel
Das folgende postEvent-Beispiel zeigt, wie Sie neue Parameter für ein Ereignis, das eine erneute Segmentierung auslöst, senden und danach die Antwort bearbeiten können.
sessionId ist die gleiche Zeichenfolge zur Identifizierung, die beim Start der Sitzung mit dem startSession-Aufruf verwendet wurde.
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());