Ejemplo de planificación de interacción simple
Supongamos que está diseñando una interacción para el sitio web de una empresa de teléfonos móviles. El siguiente diagrama muestra el diseño de la página de resumen del plan de teléfonos móviles.
Página web de muestra incluye los puntos de interacción
Defina los siguientes elementos para cumplir los requisitos de la página de resumen del plan de teléfonos móviles.
Una oferta que se va a mostrar en una zona dedicada a ofertas acerca de las actualizaciones
*
Debe definirse el área de la página que muestra la oferta de actualizaciones. Asimismo, una vez que Interact selecciona una oferta para visualizarla, la información debe registrarse.
Punto de interacción: ip_planSummaryBottomRight
Evento: evt_logOffer
Dos ofertas para actualizaciones de teléfono
*
Punto de interacción: ip_planSummaryTopRight
Punto de interacción: ip_planSummaryBottomLeft
Para el análisis, debe registrar qué ofertas se aceptan y cuáles se rechazan.
Evento: evt_offerAccept
Evento: evt_offerReject
También sabe que debe pasar el código de tratamiento de una oferta siempre que registre un contacto de oferta, aceptación o rechazo. Siempre que sea necesario, debe crear un NameValuePair que contenga el código de tratamiento, como en el siguiente ejemplo.
NameValuePair evtParam_TreatmentCode = new NameValuePairImpl();
evtParam_TreatmentCode.setName("UACIOfferTrackingCode");
evtParam_TreatmentCode.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCode.setValueDataType(NameValuePair.DATA_TYPE_STRING);
Ahora puede pedir al usuario del entorno de diseño que cree los puntos de interacción y los eventos mientras empieza a codificar la integración con su punto de encuentro.
Para cada punto de interacción que va a mostrar una oferta, debe obtener primero una oferta y, a continuación, extraer la información que necesita para mostrar la oferta. Por ejemplo, solicite una oferta para el área inferior derecha de la página web (planSummaryBottomRight)
Response response=getOffers(sessionID, ip_planSummaryBottomRight, 1)
Se devolverá un objeto de respuesta que incluye una respuesta de OfferList. No obstante, la página web no puede utilizar un objeto OfferList. Necesita un archivo de imagen de la oferta, que sabe que es uno de los atributos de oferta (offerImg). Debe extraer el atributo de oferta que necesita de OfferList.
OfferList offerList=response.getOfferList();
if(offerList.getRecommendedOffers() != null)
{
Offer offer = offerList.getRecommendedOffers()[0];
NameValuePair[] attributes = offer.getAdditionalAttributes();
for(NameValuePair attribute: attributes)
{
if(attribute.getName().equalsIgnoreCase("offerImg"))
{
/* Utilizar este valor en el código de la página, por
ejemplo: stringHtml = "<img src="+attribute.getValueAsString()+ " > */
}
}
}
Ahora que está mostrando la oferta, desea registrarla como un contacto.
NameValuePair evtParam_TreatmentCode = new NameValuePairImpl();
evtParam_TreatmentCode.setName("UACIOfferTrackingCode");
evtParam_TreatmentCode.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCode.setValueDataType(NameValuePair.DATA_TYPE_STRING);
postEvent(
sessionID, evt_logOffer, evtParam_TreatmentCode)
En lugar de llamar a cada uno de estos métodos de forma individual, puede utilizar el método executeBatch, como se muestra en el siguiente ejemplo para la parte planSummaryBottomLeft de la página web.
Command getOffersCommand = new CommandImpl();
getOffersCommand.setMethodIdentifier(Command.COMMAND_GETOFFERS);
getOffersCommand.setInteractionPoint(ip_planSummaryBottomLeft);
getOffersCommand.setNumberRequested(1);

Command postEventCommand = new CommandImpl();
postEventCommand.setMethodIdentifier(Command.COMMAND_POSTEVENT);
postEventCommand.setEvent(evt_logOffer);

/** Crear la matriz de comandos */
Command[] commands =
{
getOffersCommand,
postEventCommand
};

/** Realizar la llamada */
BatchResponse batchResponse = api.executeBatch(
sessionId, commands);
No es necesario definir el UACIOfferTrackingCode en este ejemplo porque el servidor de ejecución de Interact registra automáticamente la última lista de tratamientos recomendada como contactos si no proporciona el UACIOfferTrackingCode.
También ha escrito algo para cambiar la imagen que se visualiza cada 30 segundos para la segunda área en la página que muestra una oferta de actualización de teléfono. Ha decidido rotar entre tres imágenes, por lo que debe utilizar lo siguiente para recuperar el conjunto de ofertas que se deben guardar en caché para su uso en el código para rotar las imágenes.
Response response=getOffers(sessionID, ip_planSummaryBottomLeft, 3)
OfferList offerList=response.getOfferList();
if(offerList.getRecommendedOffers() != null)
{
for(int x=0;x<3;x++)
{
Offer offer = offerList.getRecommendedOffers()[x];
if(x==0)
{
// obtener el valor de atributo offerimg y almacenarlo en algún lugar;
// será la primera imagen que se muestre
}
else if(x==1)
{
// obtener el valor de atributo offerimg y almacenarlo en algún lugar;
// será la segunda imagen que se muestre
}
else if(x==2)
{
// obtener el valor de atributo offerimg y almacenarlo en algún lugar;
// será la tercera imagen que se muestre
}
}
}
Debe escribir el código de cliente captado en la memoria caché local y registrarlo en el contacto sólo una vez para cada oferta una vez visualizada su imagen. Para registrar el contacto, el parámetro UACITrackingCode debe publicarse como antes. Cada oferta tendrá un código de seguimiento diferente.
NameValuePair evtParam_TreatmentCodeSTR = new NameValuePairImpl();
NameValuePair evtParam_TreatmentCodeSBR = new NameValuePairImpl();
NameValuePair evtParam_TreatmentCodeSBL = new NameValuePairImpl();

OfferList offerList=response.getOfferList();
if(offerList.getRecommendedOffers() != null)
{
for(int x=0;x<3;x++)
{
Offer offer = offerList.getRecommendedOffers()[x];
if(x==0)
{
evtParam_TreatmentCodeSTR.setName("UACIOfferTrackingCode");
evtParam_TreatmentCodeSTR.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCodeSTR.setValueDataType(NameValuePair.DATA_TYPE_STRING);
}
else if(x==1)
{
evtParam_TreatmentCodeSBR.setName("UACIOfferTrackingCode");
evtParam_TreatmentCodeSBR.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCodeSBR.setValueDataType(NameValuePair.DATA_TYPE_STRING);
}
else if(x==2)
{
evtParam_TreatmentCodeSBL.setName("UACIOfferTrackingCode");
evtParam_TreatmentCodeSBL.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCodeSBL.setValueDataType(NameValuePair.DATA_TYPE_STRING);
}
}
}
Para cada oferta, si se pulsa la oferta, debe registrar la oferta aceptada y las ofertas rechazadas. (En este escenario, las ofertas no seleccionadas explícitamente se consideran rechazadas). A continuación, se muestra un ejemplo si se selecciona la oferta ip_planSummaryTopRight:
postEvent(sessionID, evt_offerAccept, evtParam_TreatmentCodeSTR)
postEvent(sessionID, evt_offerReject, evtParam_TreatmentCodeSBR)
postEvent(sessionID, evt_offerReject, evtParam_TreatmentCodeSBL)
En la práctica, será mejor para enviar las tres llamadas postEvent con el método executeBatch.
Se trata de un ejemplo básico que no muestra la mejor forma de escribir la integración. Por ejemplo, ninguno de estos ejemplos incluye la comprobación de error utilizando la clase de respuesta.