postEvent

The postEvent method enables you to execute any event defined in the interactive channel.

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

  • sessionID: a string identifying the session ID.

  • eventName: a string identifying the name of the event.

    Note: The name of the event must match the name of the event as defined in the interactive channel. This name is case-insensitive.
  • eventParameters. NameValuePairImpl objects identifying any parameters that need to be passed with the event.

    If this event triggers re-segmentation, you must ensure that all data required by the interactive flowcharts is available in the session data. If any of these values have not been populated by prior actions (for example, from startSession or setAudience, or loading the profile table) you must include an eventParameter for every missing value. For example, if you have configured all profile tables to load into memory, you must include a NameValuePair for temporal data required for the interactive flowcharts.

    If you are using more than one audience level, you most likely have different sets of eventParameters for each audience level. You should include some logic to ensure you are selecting the correct set of parameters for the audience level.

    Important: If this event logs to response history, you must pass the treatment code for the offer. You must define the name for the NameValuePair as "UACIOfferTrackingCode".

    You can only pass one treatment code per event. If you do not pass the treatment code for an offer contact, Unica Interact logs an offer contact for every offer in the last recommended list of offers. If you do not pass the treatment code for a response, Unica Interact returns an error.

  • There are several other reserved parameters used with postEvent and other methods and are discussed later in this section.

Any request for re-segmentation or writing to contact or response history does not wait for a response.

Re-segmentation does not clear prior segmentation results for the current audience level. You can use the UACIExecuteFlowchartByName parameter to define specific flowcharts to run. The getOffers method waits for re-segmentation to finish before running. Therefore, if you call a postEvent method, which triggers a re-segmentation immediately before a getOffers call, there might be a delay.

Return value

The runtime server responds to postEvent with a Response object with the following attributes populated:

  • AdvisoryMessages
  • ApiVersion
  • SessionID
  • StatusCode

Example

The following postEvent example shows sending new parameters for an event which triggers re-segmentation, and a way to handle the response.

sessionId is the same string to identify the session used by the startSession call which started this session.

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());