postEvent
postEvent(String sessionID, String eventName, NameValuePairImpl[] eventParameters)
El método postEvent permite ejecutar cualquier evento definido en el canal interactivo.
*
sessionID — una cadena que identifica el ID de sesión.
*
eventName — una cadena que identifica el nombre del evento.
*
*
eventParameters — Objetos NameValuePairImpl que identifican los parámetros que deben pasarse con el evento. Estos valores se almacenan en los datos de sesión.
Si este evento desencadena la resegmentación, debe asegurarse de que todos los datos necesarios para los diagramas de flujo interactivos estén disponibles en los datos de sesión. Si alguno de estos valores no se ha completado mediante las acciones anteriores (por ejemplo, a partir de startSession o setAudience, o al cargar la tabla de perfil), debe incluir un eventParameter para cada valor que falte. Por ejemplo, si ha configurado todas las tablas de perfiles para que se carguen en la memoria, debe incluir un NameValuePair para los datos temporales necesarios para los diagramas de flujo interactivos.
Si utiliza más de un nivel de audiencia, lo más probable es que tenga distintos conjuntos de eventParameters para cada nivel de audiencia. Debe incluir alguna lógica para asegurarse de que está seleccionando el conjunto de parámetros correcto para el nivel de audiencia.
*
Sólo puede pasar un código de tratamiento por evento. Si no pasa el código de tratamiento para un contacto de oferta, Interact registra un contacto de oferta para cada oferta en la última lista de ofertas recomendada. Si no pasa el código de tratamiento para una respuesta, Interact devuelve un error.
*
Existen otros parámetros reservados que se utilizan con postEvent y otros métodos, que se describen más adelante en esta sección.
Toda solicitud de resegmentación o escritura en el historial de contactos o de respuestas no espera una respuesta.
A menos que se especifique con el parámetro UACIExecuteFlowchartByName, la resegmentación ejecuta todos los diagramas de flujo interactivos asociados con este canal interactivo para el nivel de audiencia actual. El método getOffers espera a que la resegmentación finalice antes de ejecutarse. Por lo tanto, si invoca un método postEvent que desencadena una resegmentación inmediatamente antes de una llamada getOffers, puede producirse un retardo.
Valor de retorno
El servidor de ejecución responde a postEvent con un objeto de respuesta con los siguientes atributos completados:
*
*
*
*
Ejemplo
El siguiente ejemplo de postEvent muestra el envío de nuevos parámetros para un evento que desencadena la resegmentación, y una forma de manejar la respuesta.
sessionID es la misma cadena que identifica la sesión utilizada por la llamada startSession que ha iniciado esta sesión.
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
};

/** Realizar la llamada */
response = api.postEvent(sessionId, eventName, postEventParameters);

/** Procesar la respuesta según corresponda */
// comprobar si la respuesta es satisfactoria o no
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");
}

// Para los errores, deben aparecer mensajes de aviso explicando por qué
if(response.getStatusCode() != Response.STATUS_SUCCESS)
printDetailMessageOfWarningOrError("postEvent",
response.getAdvisoryMessages());