L’API du serveur réseau Edge peut fournir des expériences personnalisées gérées dans Offer decisioning au canal web.
Offer Decisioning prend en charge une interface non visuelle pour créer, activer et diffuser vos activités et expériences de personnalisation.
Personnalisation via Offer Decisioning requiert que vous ayez accès à Adobe Journey Optimizer avant de configurer votre intégration.
Avant de pouvoir utiliser l’API serveur conjointement avec Offer Decisioning, vous devez activer la personnalisation Adobe Experience Platform sur votre configuration de flux de données et activer la variable Offer decisioning .
Voir guide sur l’ajout de services à un flux de données, pour obtenir des informations détaillées sur l’activation d’Offer Decisioning.
Offer Decisioning repose sur le service de segmentation Adobe Experience Platform pour la création d’audiences. Vous trouverez la documentation relative au Segmentation Service here.
La variable Offer Decision Engine utilise les données Adobe Experience Platform et Profils client en temps réel, ainsi que la variable Offer Library, afin de diffuser des offres aux bons clients et canaux au bon moment.
Pour en savoir plus sur la variable Offer Decisioning Engine, voir la section dédiée documentation.
Après configuration de votre flux de données, vous devez définir les portées de décision à utiliser dans votre campagne de personnalisation.
Portées de décision sont les chaînes JSON codées en Base64 contenant les identifiants d’activité et d’emplacement que vous souhaitez voir Offer Decisioning Service à utiliser lors de la proposition d’offres.
JSON d’étendue de décision
{
"activityId":"xcore:offer-activity:11cfb1fa93381aca",
"placementId":"xcore:offer-placement:1175009612b0100c"
}
Chaîne codée en Base64 du périmètre de décision
"eyJhY3Rpdml0eUlkIjoieGNvcmU6b2ZmZXItYWN0aXZpdHk6MTFjZmIxZmE5MzM4MWFjYSIsInBsYWNlbWVudElkIjoieGNvcmU6b2ZmZXItcGxhY2VtZW50OjExNzUwMDk2MTJiMDEwMGMifQ=="
Après avoir créé vos offres et collections, vous devez définir une portée de la décision.
Copiez la portée de décision codée en Base64. Vous l’utiliserez dans la variable query
de la requête de l’API du serveur.
"query":{
"personalization":{
"decisionScopes":[
"eyJ4ZG06YWN0aXZpdHlJZCI6Inhjb3JlOm9mZmVyLWFjdGl2aXR5OjE0ZWZjYTg5NDE4OTUxODEiLCJ4ZG06cGxhY2VtZW50SWQiOiJ4Y29yZTpvZmZlci1wbGFjZW1lbnQ6MTJkNTQ0YWU1NGU3ZTdkYiJ9"
]
}
}
Format d’API
POST /ee/v2/interact
Vous trouverez ci-dessous une requête complète comprenant un objet XDM, un objet de données et une requête d’Offer decisioning.
La variable xdm
et data
sont facultatifs et ne sont nécessaires à l’Offer decisioning que si vous avez créé des segments avec des conditions qui utilisent des champs dans l’un de ces objets.
curl -X POST 'https://server.adobedc.net/ee/v2/interact?dataStreamId={DATASTREAM_ID}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org: {ORG_ID}' \
--header 'Authorization: Bearer {TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
"event": {
"xdm": {
"eventType": "web.webpagedetails.pageViews",
"identityMap": {
"ECID": [
{
"id": "05907638112924484241029082405297151763",
"authenticatedState": "ambiguous",
"primary": true
}
]
},
"web": {
"webPageDetails": {
"URL": "https://alloystore.dev",
"name": "Home Page"
},
"webReferrer": {
"URL": ""
}
},
"device": {
"screenHeight": 1440,
"screenWidth": 3440,
"screenOrientation": "landscape"
},
"environment": {
"type": "browser",
"browserDetails": {
"viewportWidth": 3440,
"viewportHeight": 1440
}
},
"placeContext": {
"localTime": "2022-03-22T22:45:21.193-06:00",
"localTimezoneOffset": 360
},
"timestamp": "2022-03-23T04:45:21.193Z",
"implementationDetails": {
"name": "https://ns.adobe.com/experience/alloy/reactor",
"version": "1.0",
"environment": "serverapi"
}
},
"data": {
"page": {
"pageInfo": {
"pageName": "Promotions",
"siteSection": "Home"
},
"promos": {
"heroPromos": "purse,shoes,sunglasses"
},
"customVariables": {
"testGroup": "orange/black theme"
},
"events": {
"homePage": true
},
"products": [
{
"productSKU": "abc123",
"productName": "shirt"
}
]
},
"__adobe.target": {
"profile.eyeColor": "brown",
"profile.hairColor": "brown"
}
}
},
"query": {
"personalization": {
"decisionScopes": [
"eyJ4ZG06YWN0aXZpdHlJZCI6Inhjb3JlOm9mZmVyLWFjdGl2aXR5OjE0ZWZjYTg5NDE4OTUxODEiLCJ4ZG06cGxhY2VtZW50SWQiOiJ4Y29yZTpvZmZlci1wbGFjZW1lbnQ6MTJkNTQ0YWU1NGU3ZTdkYiJ9"
]
}
}
}'
Le réseau Edge renvoie une réponse similaire à celle ci-dessous.
{
"requestId":"b375077d-7e1d-4c18-b7d3-e4da0fb4fbc5",
"handle":[
{
"payload":[
],
"type":"personalization:decisions",
"eventIndex":0
},
{
"payload":[
{
"id":"120d5db7-181c-42c5-8653-88b3cd3e1e69",
"scope":"eyJ4ZG06YWN0aXZpdHlJZCI6Inhjb3JlOm9mZmVyLWFjdGl2aXR5OjE0ZWZjYTg5NDE4OTUxODEiLCJ4ZG06cGxhY2VtZW50SWQiOiJ4Y29yZTpvZmZlci1wbGFjZW1lbnQ6MTJkNTQ0YWU1NGU3ZTdkYiJ9",
"activity":{
"id":"xcore:offer-activity:14efca8941895181",
"etag":"1"
},
"placement":{
"id":"xcore:offer-placement:12d544ae54e7e7db",
"etag":"1"
},
"items":[
{
"id":"xcore:personalized-offer:14efc848a3577d92",
"etag":"2",
"schema":"https://ns.adobe.com/experience/offer-management/content-component-json",
"data":{
"id":"xcore:personalized-offer:14efc848a3577d92",
"format":"application/json",
"language":[
"en-us"
],
"content":"{\n\t\"ODEFirstTest\" : \"Personalizaton Content\"\n}",
"characteristics":{
"reporting":"testRequest"
}
}
}
]
}
],
"type":"personalization:decisions",
"eventIndex":0
},
{
"payload":[
{
"key":"kndctr_53A16ACB5CC1D3760A495C99_AdobeOrg_identity",
"value":"CiYwNTkwNzYzODExMjkyNDQ4NDI0MTAyOTA4MjQwNTI5NzE1MTc2M1IOCLr6xb39LxgBKgNPUjLwAbr6xb39Lw==",
"maxAge":34128000
}
],
"type":"state:store"
}
]
}
Si le visiteur est admissible pour une activité de personnalisation en fonction des données envoyées à Offer Decisioning, le contenu de l’activité concernée se trouve sous le handle
, où le type est personalization:decisions
.
Un autre contenu est renvoyé sous la variable handle
également. D’autres types de contenu ne sont pas pertinents pour les Offer Decisioning personnalisation. Si le visiteur est admissible pour plusieurs activités, elles sont contenues dans un tableau .
Le tableau ci-dessous explique les éléments clés de cette partie de la réponse.
Propriété | Description | Exemple |
---|---|---|
scope |
Portée de décision associée aux offres proposées qui ont été renvoyées. | "scope": "eyJhY3Rpdml0eUlkIjoieGNvcmU6b2ZmZXItYWN0aXZpdHk6MTFjZmIxZmE5MzM4MWFjYSIsInBsYWNlbWVudElkIjoieGNvcmU6b2ZmZXItcGxhY2VtZW50OjExNzUwMDk2MTJiMDEwMGMifQ==" |
activity.id |
Identifiant unique de l’activité d’offre. | "id": "xcore:offer-activity:11cfb1fa93381aca" |
placement.id |
Identifiant unique de l’emplacement de l’offre. | "id": "xcore:offer-placement:1175009612b0100c" |
items.id |
L’identifiant unique de l’offre proposée. | "id": "xcore:personalized-offer:124cc332095cfa74" |
schema |
Le schéma du contenu associé à l’offre proposée. | "schema": "https://ns.adobe.com/experience/offer-management/content-component-html" |
data.id |
L’identifiant unique de l’offre proposée. | "id": "xcore:personalized-offer:124cc332095cfa74" |
format |
Format du contenu associé à l’offre proposée. | "format": "text/html" |
language |
Tableau de langues associées au contenu de l’offre proposée. | "language": [ "en-US" ] |
content |
Contenu associé à l’offre proposée au format d’une chaîne. | "content": "<p style="color:red;">20% Off on shipping</p>" |
deliveryUrl |
Contenu de l'image associé à l'offre proposée au format d'une URL. | "deliveryURL": "https://image.jpeg" |
characteristics |
Objet JSON contenant les caractéristiques associées à l’offre proposée. | "characteristics": { "foo": "bar", "foo1": "bar1" } |