Exemple simple de planification d'interaction
Vous créez une interaction pour le site Web d'une société de téléphonie cellulaire. Le diagramme suivant illustre la présentation de la page de récapitulatif du plan concernant un modèle de téléphone donné.
Exemple de page Web affichant les points d'interaction
Vous définissez les éléments suivants pour répondre aux exigences de la page de récapitulatif du plan prévu pour ce téléphone.
L'une des offres doit être affichée dans une zone dédiée aux offres de mise à niveau
*
La zone de la page affichant l'offre de mise à niveau doit être définie. En outre, lorsque Interact sélectionne une offre à afficher, les informations doivent être journalisées.
Point d'interaction :: ip_planSummaryBottomRight
Evénement: evt_logOffer
Deux offres pour les mises à niveau du téléphone
*
Point d'interaction : ip_planSummaryTopRight
Point d'interaction :: ip_planSummaryBottomLeft
Pour l'analyse, vous devez journaliser les offres qui sont acceptées et celles qui sont refusées.
Evénement :: evt_offerAccept
Evénement : evt_offerReject
Vous savez également que vous devez transmettre le code de traitement d'une offre chaque fois que vous journalisez le contact d'une offre ou l'acceptation ou le refus d'une offre. Si nécessaire, vous créez une paire valeur-nom NameValuePair contenant le code de traitement, comme dans l'exemple suivant.
NameValuePair evtParam_TreatmentCode = new NameValuePairImpl();
evtParam_TreatmentCode.setName("UACIOfferTrackingCode");
evtParam_TreatmentCode.setValueAsString(offer.getTreatmentCode());
evtParam_TreatmentCode.setValueDataType(NameValuePair.DATA_TYPE_STRING);
Vous pouvez maintenant demander à l'utilisateur de l'environnement de conception de créer les points d'interaction et les événements pendant que vous commencez à coder l'intégration avec votre point de contact.
Pour chaque point d'interaction qui doit afficher une offre, vous devez d'abord obtenir une offre, puis extraire les informations dont vous avez besoin pour afficher cette offre. Par exemple, demandez l'affichage d'une offre pour la zone inférieure droite de votre page Web (planSummaryBottomRight)
Response response=getOffers(sessionID, ip_planSummaryBottomRight, 1)
Cela renvoie un objet de réponse, notamment une réponse OfferList. Cependant, votre page Web ne peut pas utiliser un objet OfferList. Vous avez besoin d'un fichier image pour l'offre. Il constitue l'un des des attributs de l'offre (offerImg). Vous devez extraire l'attribut d'offre dont vous avez besoin à partir de la liste 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"))
{
/* Use this value in your code for the page, for
example: stringHtml = "<img src="+attribute.getValueAsString()+ " > */
}
}
}
Maintenant que l'offre est affichée, vous souhaitez la journaliser en tant que contact.
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)
Au lieu d'appeler chacune de ces méthodes séparément, vous pouvez utiliser la méthode executeBatch, comme illustré dans l'exemple suivant pour la partie planSummaryBottomLeft de la page 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);

/** Build command array */
Command[] commands =
{
getOffersCommand,
postEventCommand
};

/** Make the call */
BatchResponse batchResponse = api.executeBatch(
sessionId, commands);
Vous n'avez pas besoin de définir le UACIOfferTrackingCode dasn l'exemple car le serveur d'exécution Interact journalise automatiquement la dernière liste recommandée des traitements en tant que contacts si vous ne fournissez pas le UACIOfferTrackingCode.
Vous avez également écrit du code qui permet de changer l'image affichée toutes les 30 secondes. Cela permet à la deuxième zone de la page d'afficher une offre de mise à niveau du téléphone. Vous avez décidé d'alterner entre trois images. Pour extraire l'ensemble des offres à mettre en cache et les utiliser dans votre code pour alterner les images, utilisez ce qui suit.
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)
{
// grab offerimg attribute value and store somewhere;
// this will be the first image to display
}
else if(x==1)
{
// grab offerimg attribute value and store somewhere;
// this will be the second image to display
}
else if(x==2)
{
// grab offerimg attribute value and store somewhere;
// this will be the third image to display
}
}
}
Vous devez écrire votre extraction de code client à partir du cache local et journaliser pour le contact une fois seulement pour chaque offre après l'affichage de l'image de l'offre. Pour journaliser le contact, le paramètre UACITrackingCode doit être publié de la même façon qu'auparavant. Chaque offre aura un code de suivi différent.
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);
}
}
}
Pour chaque offre, si l'offre est sélectionnée (par un clic), vous devez journaliser l'offre acceptée et l'offre refusée. (Dans ce scénario, les offre non sélectionnées explicitement sont considérées comme refusées.) Voici un exemple d'un cas où l'offre ip_planSummaryTopRight est sélectionnée :
postEvent(sessionID, evt_offerAccept, evtParam_TreatmentCodeSTR)
postEvent(sessionID, evt_offerReject, evtParam_TreatmentCodeSBR)
postEvent(sessionID, evt_offerReject, evtParam_TreatmentCodeSBL)
Dans la pratique, il serait préférable d'envoyer ces trois appels postEvent avec la méthode executeBatch.
Il s'agit d'un exemple de base, et ne décrit pas le meilleur moyen d'écrire l'intégration. Par exemple, aucun de ces exemples n'inclut de vérification d'erreur avec la classe Response.