postEvent
La méthode postEvent vous permet d'exécuter n'importe quel événement défini dans le canal interactif.
postEvent(String sessionID, String eventName, NameValuePairImpl[] eventParameters)
*
sessionID : chaîne identifiant l'ID session.
*
eventName : chaîne identifiant le nom de l'événement.
*
*
eventParameters. Objets NameValuePairImpl identifiant tous les paramètres à passer avec l'événement. Ces valeurs sont stockées dans les données de session.
Si cet événement déclenche la resegmentation, vous devez veiller à ce que toutes les données requises par les diagrammes temps réél soient disponibles dans les données de session. Si ces valeurs n'ont pas été renseignées par des actions précédentes (par exemple, depuis startSession ou setAudience, ou en chargeant la table de profil), vous devez inclure un eventParameter pour chaque valeur manquante. Par exemple, si vous avez configuré toutes les tables de profil à charger dans la mémoire, vous devez inclure un NameValuePair pour les données temporelles requises pour les diagrammes temps réél.
Si vous utilisez plusieurs niveaux d'audience, vous avez probablement différents ensembles de eventParameters pour chaque niveau d'audience. Vous devez inclure une logique afin d'avoir la certitude de sélectionner l'ensemble correct de paramètres du niveau d'audience.
*
Vous ne pouvez passer qu'un seul code de traitement par événement. Si vous ne transmettez pas le code de traitement du contact d'une offre, Interact journalise un contact d'offre pour chaque offre dans la dernière liste des offres recommandées. Si vous ne transmettez pas le code de traitement d'une réponse, Interact renvoie une erreur.
*
Il existe plusieurs autres paramètres réservés utilisés avec postEvent et d'autres méthodes, qui sont décrits ultérieurement dans cette section.
Toute demande de resegmentation ou d'écriture dans l'historique des contacts ou des réponses n'attend pas de réponse.
Sauf si vous l'avez indiqué avec le paramètre UACIExecuteFlowchartByName, la segmentation exécute tous les diagrammes temps réél associés à ce canal interactif pour le niveau d'audience actuel. La méthode getOffers attend la fin de la resegmentation avant de s'exécuter. Par conséquent, si vous appelez une méthode postEvent qui déclenche une resegmentation juste avant un appel getOffers, il peut y avoir un retard.
Valeur de retour
Le serveur d'exécution répond à postEvent avec un objet de réponse dans lequel les attributs suivants sont renseignés :
*
*
*
*
Exemple
L'exemple postEvent ci-dessous illustre l'envoi de nouveaux paramètres pour un événement qui déclenche la resegmentation, et indique un moyen de traiter la réponse.
sessionId est la même chaîne permettant d'identifier la session utilisée par l'appel startSession qui a démarré cette 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());