Per utilizzare i filtri in tempo reale in Experience OS, consulta la sezione dedicata alle regole di personalizzazione dei filtri per i consigli.
Nelle tue campagne API, i filtri in tempo reale consentono di avere risultati live incentrati sui dati ottenuti durante una sessione. Ad esempio, possono mostrare prodotti con un prezzo superiore al prodotto attualmente visualizzato o presentare articoli in base alla selezione esplicita dell'utente.
Le casistiche d'uso più comuni sono:
- suggerimenti per la spedizione gratuita:prodotti consigliati che rientrano nella fascia di prezzo che qualifica l'utente a usufruire della spedizione gratis (oltre la soglia).
- upsell: prodotti consigliati con un prezzo superiore all'articolo attualmente visualizzato.
- ricerca prodotti:si basa sui prodotti consigliati sui filtri espliciti impostati dal visitatore nella sessione (ad esempio, un wizard per trovare dei regali).
- proprietà utente esplicita:prodotti consigliati che corrispondono a una proprietà utente nota nella sessione (sesso o posizione).
Limitazioni
- Fino a 30 regole di filtro personalizzate per widget.
- Fino a 5 regole in tempo reale per widget (incluse nelle 30 regole di filtro personalizzate).
- Ogni regola può avere fino a 10 condizioni\argomenti.
- Il limite di dimensione della stringa di una regola è 2048 e il limite di lunghezza del valore stimato è 255.
Parametri
- id: Sslo API lato client. Il numero ID univoco per ogni regola. Questo ID viene mostrato nella risposta dell'API (se 2 regole hanno lo stesso ID, la seconda viene eliminata).
- type: valido solo come includi/escludi.
- slot: tutte o alcune posizioni degli slot in cui si trova il primo slot in posizione 0.
- conditions: tipi di condizioni per i consigli di filtraggio, che includono:
- IS // solo stringa o booleano ("In stock" - vero/falso)
- IS_NOT // solo stringa
- CONTIENE // fino a 10 di questo tipo per filtro
- EQ, GT, GTE, LT, LTE // solo numeri
- Quando crei una regola, puoi usare più argomenti all'interno della stessa condizione inserendo l'operatore "OR" tra di essi, mentre se hai bisogno di aggiungere condizioni aggiuntive ad una regola, dovrai usare l'operatore "AND".
{
"user":{
"dyid": "3337168279039708439",
"dyid_server":"3337168279039708439"
},
"session":{
"dy":"dy_session1000000000010"
},
"context":{
"page":{
"type":"HOMEPAGE",
"location":"https://website.com/",
"data":[]
}
},
"options":{
"isImplicitPageview": true,
"recsProductData": {
"fieldFilter": [
"categorie"
]
}
},
"selector":{
"names":[
"test_rcom"
],
"args":{
"test_rcom":{
"realtimeRules":[
{
"type":"include",
"slots":[],
"query":{
"conditions":[
{
"field":"categorie",
"arguments":[
{
"action":"CONTAINS",
"value":"basket"
}
]
},
{
"field":"categorie",
"arguments":[
{
"action":"CONTAINS",
"value":"football"
}
]
}
]
}
}
]
}
}
},
"device":{
"userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
"ip":"54.100.200.255"
}
}
...
"selector":{
"names":[
"test_rcom"
],
"args":{
"test_rcom":{
"realtimeRules":[
{
"type":"include",
"slots":[],
"query":{
"conditions":[
{
"field":"categorie",
"arguments":[
{
"action":"IS",
"value":"basket"
},
{
"action":"IS",
"value":"football"
},
]
}
...
- value: parametro per il valore del filtro per condizione. Le espressioni normali non sono supportate per i filtri in tempo reale (possono e vanno aggiunte come condizioni aggiuntive al filtro).
-
priority (opzionale): I filtri in tempo reale hanno priorità su tutti i filtri esistenti (integrati).
solo per API lato client: puoi aggiungere dati prioritari e impostare una priorità tra 0 e 29. In presenza di regole esistenti definite in Experience OS (normali o in tempo reale, qualsiasi tipo di regola), le priorità esistenti verranno ridotte.
Casistica d'uso 1: aggiungere suggerimenti per la spedizione gratuita
Puoi richiedere prodotti consigliati che rientrino nella fascia di prezzo idonea perché il visitatore abbia diritto alla spedizione gratuita (superamento della soglia). In questo esempio, la soglia gratuita di spedizione è 50 e vorremmo consigliare prodotti a quel prezzo differenza tra la soglia di spedizione gratuita e il totale e il prezzo del carrello
var THRESHOLD = 50; // soglia del carrello
var CART_TOTAL_SELECTOR = '.js-cart-totals__total' // selettore di carrello per sito
var STRATEGY_ID = 64040; // ID della strategia per i consigli
var cartValuePromise = DYO.waitForElementAsync(CART_TOTAL_SELECTOR).then(function(elements) {
return parseFloat([0]elements.textContent.replace(//[^\d.-]g, ''))
});
cartValuePromise.then(function(cartValue) {
var freeShippingRemainder = THRESHOLD - cartValue;
if (freeShippingRemainder > 0) {
console.log('Products above', freeShippingRemainder);
getProducts(STRATEGY_ID, freeShippingRemainder, THRESHOLD);
} else {
console.log('Over shipping limit')
// non c'è bisogno di registrazioni
}
});
function getProducts(strategyId, min, max) {
var realtimeRules = [{
"id": -1,
"query":{
"conditions": [{
"field": "price", // Condizione
"arguments":[
"action": "GTE", // Action type IS / IS_NOT / CONTAINS / EQ / GT / GTE / LT / LTE
"value": min // Valore della condizione
}]
}, {
"field": "price", // Condizione
"arguments":[
"action": "LTE",
"value": max
}]
}]
},
"type": "include", // Includi o escludi
"slots": []// Posizione nel widget
}];
DYO.recommendationWidgetData(strategyId, {maxProducts: 10, realtimeRules: realtimeRules}, function(err, data) {
console.log(data);
});
}
{
"user":{
"id": "yaexono4ohphania" // per la modalità WEB usa "dyid"
},
"session":{
"custom": "iquahngaishe2koh" // per la modalità WEB usa "dy"
},
"selector":{
"names":[
"recs campaign"
],
"args":{
"recs campaign": { // La campagna su cui verrà applicata la regola
"realtimeRules":[
{
"type": "include", // Includi o escludi
"slots": []// Posizione nel widget
"query":{
"conditions": [{
{
"field": "price", // Condizione
"arguments":[
{
"action": "GTE", // Action type IS / IS_NOT / CONTAINS / EQ / GT / GTE / LT / LTE
"value": min // Valore della condizione
}
]
},
{
"field": "price", // Condizione
"arguments":[
{
"action": "LTE",
"value": max
}
]
}
]
}
}
]
}
}
},
"context":{
"page":{
"type": "CARRELLO",
"data": [
"7383723-010"
],
"location": "https://example.org",
"locale": "it_IT"
},
"device": {
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
"ip":"54.100.200.255"
},
"pageAttributes": {
"customPageAttribute": "someValue"
},
"options": {
"isImplicitPageview": true
}
},
"options": {}
}
Casistica d'uso 2: creare uno strumento di ricerca dei prodotti
Si usa per richiedere prodotti consigliati in base a filtri espliciti impostati dal visitatore nella sessione. In questo esempio, attiveremo 3 slot (2, 3 e 4) per i consigli sui prodotti della categoria con il punteggio più alto in base al profilo di affinità degli utenti.
var STRATEGY_ID = 12345;
DY.API('callback', function() {
DY.ServerUtil.getUserAffinities(function(error, affinityObject) {
if (error || !affinityObject.categories) {
getProducts(STRATEGY_ID, null);
return;
}
var categories = affinityObject.categories;
var sortedCategories = Object.keys(categories).map(function(name) {
return {
name: nome,
score: categorie[name]
};
}).sort(function(a,b) {
return b.score - a.score;
});
getProducts([0]STRATEGY_ID, sortedCategories.name);
}, 5);
});
function getProducts(strategyId, categoryName) {
var realtimeRules = [{
"id": -2,
"query":{
"conditions": [{
"field": "categories", // Condizione
"arguments":[
"action": "IS", // Action type IS / IS_NOT / CONTAINS / EQ / GT / GTE / LT / LTE
"value": categoryName // Valore della condizione
}]
}]
},
"type": "include", // Includi o escludi
"slots": [1, 2, 3]// Posizione nel widget
}];
DYO.recommendationWidgetData(strategyId, {maxProducts: 10, realtimeRules: realtimeRules}, function(err, data) {
console.log(data);
});
}
{
"user":{
"id": "yaexono4ohphania" // per la modalità WEB usa "dyid"
},
"session":{
"custom": "iquahngaishe2koh" // per la modalità WEB usa "dy"
},
"selector":{
"names":[
"recs campaign"
],
"args":{
"recs campaign": { // La campagna su cui verrà applicata la regola
"realtimeRules":[
{
"type": "include", // Includi o escludi
"slots": [
1,
2,
3
], // Posizione nel widget
"query":{
"conditions": [{
{
"field": "categories", // Condizione
"arguments":[
{
"action": "IS", // Action type IS / IS_NOT / CONTAINS / EQ / GT / GTE / LT / LTE
"value": categoryName // Valore della condizione
}
]
}
]
}
}
]
}
}
},
"context":{
"page":{
"type": "CARRELLO",
"data": [
"7383723-010"
],
"location": "https://example.org",
"locale": "it_IT"
},
"device": {
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
"ip":"54.100.200.255"
},
"pageAttributes": {
"customPageAttribute": "someValue"
},
"options": {
"isImplicitPageview": true
}
},
"options": {}
}