Web UX Helper
Rokt UX Helper est un projet open source qui vous aide à rendre de belles expériences client dans un environnement serveur-à-serveur. Vous pouvez trouver et contribuer au projet sur GitHub.
Vue d'ensembleLien direct vers Vue d'ensemble
Rokt UX Helper exploite la technologie des composants web pour fournir une solution simple et maintenable pour rendre les expériences Rokt sur votre site web. L'élément personnalisé rokt-layout-view gère le rendu des expériences en fonction de la charge utile reçue de votre serveur.
Étapes d'intégrationLien direct vers Étapes d'intégration
Ce document décrit le processus d'intégration de Rokt UX Helper dans votre projet web, qui fonctionne en parallèle avec l'intégration Server-to-Server (S2S) pour offrir des expériences pertinentes à vos clients lors de leur passage en caisse.
📦 Guide d'installationLien direct vers 📦 Guide d'installation
La bibliothèque est disponible en tant que package npm. Pour l'installer, utilisez les commandes suivantes :
npm install @rokt/ux-helper-web@stable
Pour tester de nouvelles fonctionnalités, utilisez @latest au lieu de @stable :
npm install @rokt/ux-helper-web@latest
🔹 Explication des tags de versionLien direct vers 🔹 Explication des tags de version
@stable: Ce tag pointe vers la dernière version prête pour la production de la bibliothèque. Il est recommandé pour les applications qui nécessitent stabilité et fiabilité.@latest: Ce tag pointe vers la version la plus récente, incluant de nouvelles fonctionnalités et améliorations qui peuvent ne pas encore être complètement testées. Utilisez-le uniquement à des fins de développement et de test pour accéder aux dernières mises à jour avant qu'elles ne soient officiellement marquées comme stables.
Utilisation du CDNLien direct vers Utilisation du CDN
Si vous préférez utiliser un CDN, vous pouvez inclure la bibliothèque directement dans votre HTML :
<!-- Utilisez la dernière version stable -->
<script src="https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web/dist/index.cjs"></script>
<!-- Ou utilisez la dernière version avec les fonctionnalités les plus récentes -->
<script src="https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web@latest/dist/index.cjs"></script>
Le package fournit également différents formats de modules :
<!-- Format CommonJS (pour une utilisation directe dans le navigateur) -->
<script src="https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web/dist/index.cjs"></script>
<!-- Format ESM (pour les applications modernes) -->
<script type="module">
import * as RoktUXHelper from 'https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web/dist/index.mjs';
</script>
Ajouter rokt-layout-viewLien direct vers Ajouter rokt-layout-view
Pour commencer à utiliser Rokt UX Helper, vous devez ajouter le script Rokt UX Helper intégré, ajouter rokt-layout-view à la partie pertinente de votre vue HTML et ajouter votre JavaScript.
<head>
<!-- Lien vers votre JavaScript Rokt UX Helper -->
<script src="https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web/dist/index.cjs"></script>
</head>
<body>
<!-- Votre contenu -->
<!-- Notez l'ID qui est utilisé dans le JavaScript ci-dessous -->
<rokt-layout-view id="rokt-layout-placeholder"></rokt-layout-view>
<!-- Votre contenu -->
<!-- Ceci est le JavaScript qui gère les événements décrits ci-dessous -->
<script src="./index.js"></script>
</body>
Enregistrer l'élément et rendre le payloadLien direct vers Enregistrer l'élément et rendre le payload
Maintenant que vous avez ajouté votre rokt-layout-view, vous devez l'enregistrer et passer le payload à rendre.
// Cette fonction chargerait les données d'expériences depuis votre service backend ou similaire
const payload = fetchExperienceData();
const roktElement = document.getElementById("rokt-layout-placeholder");
roktElement.renderExperiences(payload);
// Remarque : Les éléments personnalisés sont automatiquement enregistrés lorsque la bibliothèque est chargée,
// donc vous n'avez pas besoin d'appeler explicitement registerCustomElements()
Gestion des expériences superposéesLien direct vers Gestion des expériences superposées
Pour prendre en charge les expériences superposées qui ciblent le sélecteur body, ajoutez l'attribut render-overlay :
<body>
<!-- Votre contenu -->
<rokt-layout-view id="overlay" render-overlay></rokt-layout-view>
<!-- Votre contenu -->
<script src="./index.js"></script>
</body>
Gestion des événementsLien direct vers Gestion des événements
Rokt UX Helper fournit deux types d'événements pour vous aider à suivre les interactions des utilisateurs et à communiquer avec la plateforme Rokt.
Événements UXLien direct vers Événements UX
Utilisez les événements UX pour recevoir des retours en temps réel sur les interactions des utilisateurs :
roktElement.addEventListener('RoktUXEvent', (event) => {
// Utilisez ces événements pour adapter votre expérience utilisateur
console.log('RoktUXEvent reçu :', event.detail);
});
Tous les événements UX
| Événement | Description |
|---|---|
| OfferEngagement | Déclenché lorsque l'utilisateur interagit avec l'offre |
| PositiveEngagement | Déclenché lorsque l'utilisateur interagit positivement avec l'offre |
| LayoutInteractive | Déclenché lorsqu'une mise en page est rendue et interactive |
| LayoutClosed | Déclenché lorsque l'utilisateur ferme une mise en page |
| LayoutCompleted | Déclenché lorsque la progression de l'offre se termine sans plus d'offres à afficher |
| LayoutFailure | Déclenché lorsqu'une mise en page échoue à s'afficher |
Événements de la plateformeLien direct vers Événements de la plateforme
Les événements de la plateforme sont essentiels pour l'intégration et doivent être envoyés à Rokt via votre backend. Ces événements retournent une charge utile JSON complète avec les données de l'événement et les détails de l'intégration :
roktElement.addEventListener('RoktPlatformEvent', (event) => {
// Transmettez cette charge utile à Rokt via votre backend
fetch('/api/rokt-events', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(event.detail)
});
});
Exemple de charge utile d'événement de la plateforme
{
"events": [
{
"eventType": "SignalImpression",
"eventTime": "2024-12-05T04:42:54.683Z",
"sessionId": "b23d004d-b2e6-43e9-b254-d9193e650000",
"parentGuid": "9b6f0e5b-621d-4597-8a73-71d6a5b43a74",
"pageInstanceGuid": "b23d004d-b2e6-4b82-b7a2-84a13b6c57c5",
"metadata": [
{
"name": "clientTimeStamp",
"value": "2024-12-05T04:42:54.683Z"
},
{
"name": "captureMethod",
"value": "ClientProvided"
}
]
}
],
"integration": {
"name": "UX Helper Web",
"version": "1.0",
"framework": "JS",
"platform": "Web",
"layoutSchemaVersion": "1.3.0",
"deviceLocale": "en-GB",
"deviceModel": "Desktop Computer",
"deviceType": "Desktop",
"operatingSystem": "MacOS",
"operatingSystemVersion": "10.15.7",
"packageName": "UX Helper Web",
"packageVersion": "1.0"
},
"pluginId": "3333926045359669274"
}
Pour plus de détails sur les événements de la plateforme, consultez la référence API.
Envoi d'événements aux mises en pageLien direct vers Envoi d'événements aux mises en page
Vous pouvez également envoyer des événements aux mises en page rendues en utilisant la méthode send. Cela est utile pour communiquer avec les mises en page en fonction des actions dans votre application :
// Envoyer un événement de mise à jour du panier à toutes les mises en page rendues
await roktElement.send('V2_UPDATE_CART_ITEM', {
cartItemId: "item-123",
quantity: 2
});
Cet exemple envoie un événement de mise à jour d'un article du panier auquel les mises en page peuvent répondre, comme la mise à jour des offres promotionnelles en fonction des quantités.
RésuméLien direct vers Résumé
L'intégration de rokt-layout-view dans votre projet est simple et offre un moyen flexible de gérer les vues et les expériences. En suivant les étapes décrites dans ce guide, vous pouvez ajouter rokt-layout-view à votre projet et profiter pleinement des fonctionnalités puissantes offertes par Rokt UX Helper.
Exemple completLien direct vers Exemple complet
HTMLLien direct vers HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Rokt UX Helper</title>
<link rel="stylesheet" href="./index.css" />
<!-- Charger Rokt UX Helper depuis le CDN -->
<script src="https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web/dist/index.cjs"></script>
</head>
<body>
<h1>Démo de Rokt UX Helper</h1>
<!-- Notez l'ID utilisé dans le JavaScript ci-dessous -->
<!-- Il est possible d'utiliser un seul élément `rokt-layout-view` pour gérer vos mises en page intégrées et superposées -->
<rokt-layout-view
id="rokt-layout-placeholder"
render-overlay
></rokt-layout-view>
<script src="./index.js"></script>
</body>
</html>
JavaScriptLien direct vers JavaScript
// Cette fonction chargerait les données d'expériences depuis votre service backend
const payload = fetchExperienceData();
const roktElement = document.getElementById("rokt-layout-placeholder");
roktElement.addEventListener("RoktUXEvent", (event) => {
console.log("RoktUXEvent reçu : ", event.detail);
});
roktElement.addEventListener("RoktPlatformEvent", (event) => {
console.log("RoktPlatformEvent reçu : ", event.detail);
// Envoyer à votre backend pour transmettre à Rokt
fetch("/api/rokt-events", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(event.detail),
});
});
// Rendre l'expérience avec les données de votre backend
roktElement.renderExperiences(payload);
📦 Guide d'installationLien direct vers 📦 Guide d'installation
La bibliothèque est disponible en tant que package npm. Pour l'installer, utilisez les commandes suivantes :
npm install @rokt/ux-helper-web@stable
Pour tester de nouvelles fonctionnalités, utilisez @latest au lieu de @stable :
npm install @rokt/ux-helper-web@latest
🔹 Explication des tags de versionLien direct vers 🔹 Explication des tags de version
@stable: Ce tag pointe vers la dernière version prête pour la production de la bibliothèque. Il est recommandé pour les applications qui nécessitent stabilité et fiabilité.@latest: Ce tag pointe vers la version la plus récente, incluant de nouvelles fonctionnalités et améliorations qui peuvent ne pas encore être complètement testées. Utilisez-le uniquement à des fins de développement et de test pour accéder aux dernières mises à jour avant qu'elles ne soient officiellement marquées comme stables.
Utilisation du CDNLien direct vers Utilisation du CDN
Si vous préférez utiliser un CDN, vous pouvez inclure la bibliothèque directement dans votre HTML :
<!-- Utilisez la dernière version stable -->
<script src="https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web/dist/index.cjs"></script>
<!-- Ou utilisez la dernière version avec les fonctionnalités les plus récentes -->
<script src="https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web@latest/dist/index.cjs"></script>
Le package fournit également différents formats de modules :
<!-- Format CommonJS (pour une utilisation directe dans le navigateur) -->
<script src="https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web/dist/index.cjs"></script>
<!-- Format ESM (pour les applications modernes) -->
<script type="module">
import * as RoktUXHelper from 'https://cdn.jsdelivr.net/npm/@rokt/ux-helper-web/dist/index.mjs';
</script>
Enregistrer l'élément et rendre le payloadLien direct vers Enregistrer l'élément et rendre le payload
Pour commencer à utiliser Rokt UX Helper dans React, vous devez rendre l'élément personnalisé rokt-layout-view et passer le payload de l'expérience via la méthode renderExperiences.
import { useRef, useEffect } from "react";
import { RoktLayoutViewInterface, ExperiencesResponseInterface } from "@rokt/ux-helper-web";
// Définir l'élément personnalisé pour TypeScript
declare global {
namespace JSX {
interface IntrinsicElements {
"rokt-layout-view": React.DetailedHTMLProps<React.HTMLAttributes<RoktLayoutViewInterface>, RoktLayoutViewInterface>;
}
}
}
function RoktLayoutView() {
const roktElement = useRef<RoktLayoutViewInterface>(null);
// Obtenez les données d'expérience de votre backend
const experienceData: ExperiencesResponseInterface = /* Fetch from your server */;
// Lorsque le composant est monté et que les données d'expérience sont disponibles
useEffect(() => {
if (roktElement.current && experienceData) {
roktElement.current.renderExperiences(experienceData);
}
}, [experienceData]);
return (
<rokt-layout-view
ref={roktElement}
id="rokt-layout-placeholder"
></rokt-layout-view>
);
}
export default RoktLayoutView;
Remarque : Les éléments personnalisés sont automatiquement enregistrés lorsque le package
@rokt/ux-helper-webest importé. Vous n'avez pas besoin d'appeler explicitementregisterCustomElements()à moins que vous n'ayez une raison spécifique de le faire.
Gestion des ÉvénementsLien direct vers Gestion des Événements
Gestion des événementsLien direct vers Gestion des événements
Rokt UX Helper fournit deux types d'événements pour vous aider à suivre les interactions des utilisateurs et à communiquer avec la plateforme Rokt.
Événements UXLien direct vers Événements UX
Utilisez les événements UX pour recevoir des retours en temps réel sur les interactions des utilisateurs :
roktElement.addEventListener('RoktUXEvent', (event) => {
// Utilisez ces événements pour adapter votre expérience utilisateur
console.log('RoktUXEvent reçu :', event.detail);
});
Tous les événements UX
| Événement | Description |
|---|---|
| OfferEngagement | Déclenché lorsque l'utilisateur interagit avec l'offre |
| PositiveEngagement | Déclenché lorsque l'utilisateur interagit positivement avec l'offre |
| LayoutInteractive | Déclenché lorsqu'une mise en page est rendue et interactive |
| LayoutClosed | Déclenché lorsque l'utilisateur ferme une mise en page |
| LayoutCompleted | Déclenché lorsque la progression de l'offre se termine sans plus d'offres à afficher |
| LayoutFailure | Déclenché lorsqu'une mise en page échoue à s'afficher |
Événements de la plateformeLien direct vers Événements de la plateforme
Les événements de la plateforme sont essentiels pour l'intégration et doivent être envoyés à Rokt via votre backend. Ces événements retournent une charge utile JSON complète avec les données de l'événement et les détails de l'intégration :
roktElement.addEventListener('RoktPlatformEvent', (event) => {
// Transmettez cette charge utile à Rokt via votre backend
fetch('/api/rokt-events', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(event.detail)
});
});
Exemple de charge utile d'événement de la plateforme
{
"events": [
{
"eventType": "SignalImpression",
"eventTime": "2024-12-05T04:42:54.683Z",
"sessionId": "b23d004d-b2e6-43e9-b254-d9193e650000",
"parentGuid": "9b6f0e5b-621d-4597-8a73-71d6a5b43a74",
"pageInstanceGuid": "b23d004d-b2e6-4b82-b7a2-84a13b6c57c5",
"metadata": [
{
"name": "clientTimeStamp",
"value": "2024-12-05T04:42:54.683Z"
},
{
"name": "captureMethod",
"value": "ClientProvided"
}
]
}
],
"integration": {
"name": "UX Helper Web",
"version": "1.0",
"framework": "JS",
"platform": "Web",
"layoutSchemaVersion": "1.3.0",
"deviceLocale": "en-GB",
"deviceModel": "Desktop Computer",
"deviceType": "Desktop",
"operatingSystem": "MacOS",
"operatingSystemVersion": "10.15.7",
"packageName": "UX Helper Web",
"packageVersion": "1.0"
},
"pluginId": "3333926045359669274"
}
Pour plus de détails sur les événements de la plateforme, consultez la référence API.
Envoi d'événements aux mises en pageLien direct vers Envoi d'événements aux mises en page
Vous pouvez également envoyer des événements aux mises en page rendues en utilisant la méthode send. Cela est utile pour communiquer avec les mises en page en fonction des actions dans votre application :
// Envoyer un événement de mise à jour du panier à toutes les mises en page rendues
await roktElement.send('V2_UPDATE_CART_ITEM', {
cartItemId: "item-123",
quantity: 2
});
Cet exemple envoie un événement de mise à jour d'un article du panier auquel les mises en page peuvent répondre, comme la mise à jour des offres promotionnelles en fonction des quantités.
Gestion des Expériences en SuperpositionLien direct vers Gestion des Expériences en Superposition
Pour prendre en charge les expériences en superposition qui ciblent le sélecteur body, ajoutez l'attribut render-overlay :
function RoktLayoutView() {
const overlayRef = useRef<RoktLayoutViewInterface>(null);
// Même gestion des événements et rendu des expériences que ci-dessus
// Le même `rokt-layout-view` peut gérer vos placements intégrés et en superposition
return (
<rokt-layout-view
ref={overlayRef}
id="rokt-layout-placeholder"
render-overlay
></rokt-layout-view>
);
}
Exemple CompletLien direct vers Exemple Complet
Voici un exemple complet d'un composant React qui rend le Rokt UX Helper et gère les deux événements :
import { useRef, useEffect, useState } from "react";
import {
RoktLayoutViewInterface,
ExperiencesResponseInterface,
} from "@rokt/ux-helper-web";
declare global {
namespace JSX {
interface IntrinsicElements {
"rokt-layout-view": React.DetailedHTMLProps<
React.HTMLAttributes<RoktLayoutViewInterface>,
RoktLayoutViewInterface
>;
}
}
}
function RoktLayoutView() {
const roktElement = useRef<RoktLayoutViewInterface>(null);
const [experienceData, setExperienceData] =
useState<ExperiencesResponseInterface | null>(null);
// Récupérer les données d'expérience depuis votre backend lorsque le composant est monté
useEffect(() => {
const fetchExperienceData = async () => {
try {
const response = await fetch("/api/rokt-experiences");
const data = await response.json();
setExperienceData(data);
} catch (error) {
console.error("Échec de la récupération des données d'expérience :", error);
}
};
fetchExperienceData();
}, []);
useEffect(() => {
const currentRoktElement = roktElement.current;
const handleRoktUXEvent = (event: Event) => {
const customEvent = event as CustomEvent;
console.log("RoktUXEvent reçu :", customEvent.detail);
};
const handleRoktPlatformEvent = (event: Event) => {
const customEvent = event as CustomEvent;
console.log("RoktPlatformEvent reçu :", customEvent.detail);
// Envoyer à votre backend pour transmettre à Rokt
fetch("/api/rokt-events", {
method: "POST",
headers: {
```json
"Content-Type": "application/json",
},
body: JSON.stringify(customEvent.detail),
});
};
if (currentRoktElement) {
currentRoktElement.addEventListener("RoktUXEvent", handleRoktUXEvent);
currentRoktElement.addEventListener(
"RoktPlatformEvent",
handleRoktPlatformEvent
);
// Rendre les expériences lorsque les données sont disponibles
if (experienceData) {
currentRoktElement.renderExperiences(experienceData);
}
}
return () => {
if (currentRoktElement) {
currentRoktElement.removeEventListener(
"RoktUXEvent",
handleRoktUXEvent
);
currentRoktElement.removeEventListener(
"RoktPlatformEvent",
handleRoktPlatformEvent
);
currentRoktElement.close(); // Nettoyer lorsque le composant se démonte
}
};
}, [experienceData, roktElement]);
return (
<>
<rokt-layout-view
ref={roktElement}
id="rokt-layout-placeholder"
render-overlay
></rokt-layout-view>
</>
);
}
export default RoktLayoutView;
RésuméLien direct vers Résumé
L'intégration de rokt-layout-view dans votre projet React est simple et offre une manière flexible de gérer les vues et les expériences. En suivant les étapes décrites dans ce guide, vous pouvez ajouter rokt-layout-view à votre projet et tirer pleinement parti des fonctionnalités puissantes offertes par Rokt UX Helper.
🙋 FAQLien direct vers 🙋 FAQ
Qu'est-ce que le rokt-layout-view ?Lien direct vers Qu'est-ce que le rokt-layout-view ?
Le rokt-layout-view est un élément personnalisé utilisé pour rendre les Rokt Layouts sur votre site web. C'est un composant web qui peut être ajouté à votre vue HTML et utilisé pour rendre le payload de l'expérience.
Quelles sont les interfaces pour le rokt-layout-view ?Lien direct vers Quelles sont les interfaces pour le rokt-layout-view ?
L'interface rokt-layout-view est définie dans le package @rokt/ux-helper-web. Vous pouvez trouver l'interface ici : RoktLayoutViewInterface
export interface RoktLayoutViewInterface extends HTMLElement {
renderExperiences(data: ExperiencesResponseInterface): void;
close(): void;
send<T>(name: string, data?: T): Promise<void>;
}
Comment gérer les expériences en superposition ?Lien direct vers Comment gérer les expériences en superposition ?
Pour prendre en charge les expériences en superposition qui ciblent le sélecteur body, ajoutez l'attribut render-overlay à votre élément rokt-layout-view. Il est recommandé de placer l'élément de superposition à la fin de la balise <body> pour assurer un empilement correct des z-index et éviter les conflits potentiels dans le DOM.