Aggiornare i profili Adobe Experience Platform dalle pagine di destinazione di Adobe Campaign

Ultimo aggiornamento: 2023-10-30
  • Creato per:
  • Beginner
    Developer

L’integrazione tra Adobe Campaign e Adobe Experience Platform consente di sincronizzare i dati in modo semplice tra le pagine di destinazione di Adobe Campaign e Adobe Experience Platform. Con questa integrazione, puoi:

  • Recuperare gli attributi del profilo Adobe Experience Platform per visualizzare informazioni aggiornate nelle pagine di destinazione di Adobe Campaign
  • Invia nuovamente gli attributi di profilo aggiornati a Adobe Experience Platform per aggiornare gli attributi corrispondenti in base a ciò che è stato compilato e inviato nelle pagine di destinazione.

I passaggi principali per configurare questa integrazione sono i seguenti:

Configurare una connessione OAuth

Creare una connessione sorgente API HTTP

Aggiungere opzioni di autenticazione in Campaign

Aggiungere codici JavaScript in Campaign

Configurare il flusso di lavoro per la pagina di destinazione

Configurare una connessione OAuth

Le API di Adobe Cloud Platform utilizzano il protocollo OAuth 2.0 per l’autenticazione e l’autorizzazione. Per collegare Adobe Experience Platform ad Adobe Campaign utilizzando le chiamate API, devi generare un token di accesso utilizzando l’integrazione OAuth creata nella console Adobe Developer.

Per farlo, segui questi passaggi:

  1. Accedi alla console Adobe Developer.

  2. Crea una nuova connessione API utilizzando il prodotto API di Adobe Experience Platform. I passaggi dettagliati per ottenere un token di accesso OAuth 2.0 sono disponibili nella sezione Documentazione della console Adobe Developer.

  3. Una volta creata la connessione, accedi al OAuth Server-to-Server copia i dettagli riportati di seguito, necessari in Campaign per l’autenticazione:

    • ID CLIENT
    • SEGRETO CLIENT
    • ID ORGANIZZAZIONE

Ora che la connessione OAuth è configurata, crea e configura un nuovo HTTP API Connessione sorgente per collegare Adobe Campaign a Adobe Experience Platform.

Creare una connessione sorgente API HTTP

Una volta stabilita la connessione OAuth, il passaggio successivo consiste nel creare un HTTP API Connessione sorgente in Adobe Experience Platform. Questa connessione ti consente di inviare dati a Adobe Experience Platform in streaming utilizzando le API. Segui questi passaggi:

  1. Passa a Adobe Experience Platform Sources, cerca HTTP API sorgente, quindi fai clic su Add data.

  2. Configura la connessione in base alle tue esigenze. Informazioni dettagliate su come configurare una connessione API HTTP sono disponibili in Documentazione sulle origini di Adobe Experience Platform.

    Alla Authentication passaggio, attiva Enable authentication opzione per eseguire l’autenticazione utilizzando il token di accesso generato in precedenza tramite l’integrazione OAuth.

  3. Una volta configurata la connessione di origine, viene visualizzato l’endpoint di streaming. Questo endpoint è necessario per acquisire i dati in Adobe Experience Platform.

    Puoi anche accedere a un esempio del formato dei dati acquisito in Adobe Experience Platform aprendo il flusso di dati appena creato da Dataflows scheda.

Ora che la connessione HTTP API Source è configurata, è necessario aggiungere opzioni specifiche in Adobe Campaign per abilitare la connessione a Adobe Experience Platform.

Aggiungere opzioni di autenticazione in Adobe Campaign

Una volta configurata la connessione HTTP API Source, è necessario aggiungere opzioni specifiche in Adobe Campaign per abilitare la connessione con Adobe Experience Platform. Questa operazione può essere eseguita nel menu Amministrazione campagna oppure durante l’esecuzione del flusso di lavoro della pagina di destinazione aggiungendo un JavaScript code attività.

Sfoglia le schede seguenti per scoprire i due metodi:

  1. Accedi a Administration > Platform > Options menu.

  2. Aggiungi le seguenti opzioni con i valori corrispondenti dalla console Adobe Developer:

    • IMS_CLIENT_ID = cryptString(CLIENT ID)
    • IMS_CLIENT_SECRET = cryptString(CLIENT SECRET)
    • IMS_ORG_ID = ID ORGANIZZAZIONE
    • IMS_CLIENT_API_KEY = cryptString(CLIENT ID)
    NOTA

    La funzione cryptString() viene utilizzata per crittografare i dati di autenticazione.

Per configurare automaticamente queste opzioni durante l’esecuzione del flusso di lavoro delle pagine di destinazione, aggiungi una JavaScript code al flusso di lavoro con il codice seguente. Scopri come configurare un’attività di codice JavaScript.

Durante l’esecuzione del flusso di lavoro, le opzioni vengono create automaticamente nella console Campaign con i valori forniti.

"
loadLibrary("xtk:shared/nl.js");
loadLibrary("xtk:shared/xtk.js");
loadLibrary("xtk:shared/json2.js");
loadLibrary("xtk:common.js");

function setAuthCredentials()
{
setOption("IMS_CLIENT_ID", cryptString('CLIENT ID');
setOption("IMS_CLIENT_SECRET", cryptString('CLIENT SECRET'));
setOption("IMS_ORG_ID", cryptString("ORGANIZATION ID"));
setOption("IMS_CLIENT_API_KEY", cryptString("CLIENT ID");
}
"

Ora che in Campaign sono configurate le opzioni di autenticazione, devi creare codici JavaScript personalizzati per consentire la sincronizzazione dei dati tra Campaign e Adobe Experience Platform dalla pagina di destinazione.

Aggiungi opzioni durante l’esecuzione del flusso di lavoro

Per consentire la sincronizzazione dei dati tra le pagine di destinazione e Adobe Experience Platform, è necessario aggiungere codici JavaScript personalizzati ad Adobe Campaign. Segui questi passaggi:

  1. Accedi a Administration > Configuration > JavaScript codes menu.

  2. Crea nuovi codici JavaScript e copia e incolla i seguenti snippet.

    NOTA

    Il token di accesso e i dati di autenticazione vengono recuperati automaticamente dalle opzioni impostate in precedenza.

 Script 1 - Caricare gli attributi del profilo dall'Experience Platform

Questo codice controlla se il profilo esiste in Adobe Experience Platform prima di caricare la pagina di destinazione. Recupera gli attributi del profilo e li visualizza nei campi corrispondenti della pagina di destinazione.

// API implementation to read profile from AEP
function getProfileInfo(email)
{
var accessToken = getAccessToken();
var request = new HttpClientRequest(('https://platform-stage.adobe.io/data/core/ups/access/entities?schema.name=_xdm.context.profile&entityId=' + email + '&entityIdNS=email&fields=identities,consents.marketing'));
request.method = 'GET';
request.header["Content-Type"] = "application/json";
request.header["sandbox-name"] = "prod";
request.header["x-gw-ims-org-id"] = getOption('IMS_ORG_ID');
request.header["x-api-key"] = getOption('IMS_CLIENT_API_KEY');
request.header["Authorization"] = "Bearer " + accessToken;
request.execute();
return request.response;
}
 Script 2 - Aggiornare gli attributi del profilo di Experience Platform

Questo codice aggiorna gli attributi del profilo in Adobe Experience Platform con i valori inviati nella pagina di destinazione.

// API implementation to update profile in AEP
loadLibrary("xtk:shared/nl.js");
loadLibrary("xtk:shared/xtk.js");
loadLibrary("xtk:shared/json2.js");
loadLibrary("xtk:common.js");

function updateProfileInAEP(profileUpdatePayload)
{
var accessToken = getAccessToken();
var request = new HttpClientRequest('https://dcs-stg.adobedc.net/collection/64a300b84d61c0bcea4f0cd4ecaaa224a19477026d14f7e08b5408ffaf5e6162?syncValidation=false');
request.method = 'POST';
request.header["Content-Type"] = "application/json";
request.header["sandbox-name"] = "prod";
request.header["Authorization"] = "Bearer " + accessToken;
var body = '{"header":{"schemaRef":{"id":"https://ns.adobe.com/campdev/schemas/35d8e567772e1a1093ed6cf9e41d2c1fec22eeb3a89583e1","contentType":"application/vnd.adobe.xed-full+json;version=1.0"},"imsOrgId":"A1F66F0D5C47D1950A494133@AdobeOrg","datasetId":"63c7fa2a20cce11b98cccb41","source":{"name":"testHTTPSourcesVinay - 03/06/2023 5:43 PM"}},"body":{"xdmMeta":{"schemaRef":{"id":"https://ns.adobe.com/campdev/schemas/35d8e567772e1a1093ed6cf9e41d2c1fec22eeb3a89583e1","contentType":"application/vnd.adobe.xed-full+json;version=1.0"}},"xdmEntity":' + profileUpdatePayload +'}}';
request.body = body;
request.execute();
return request.response;
}


// Get Access token from OAuth-Server-to-server API call
function getAccessToken() {
var clientId = decryptString(getOption('IMS_CLIENT_ID'));
var clientSecret = decryptString(getOption('IMS_CLIENT_SECRET'));
var request = new HttpClientRequest(('https://ims-na1-stg1.adobelogin.com/ims/token/v2?grant_type=client_credentials' + '&client_id=' + clientId + '&client_secret=' + clientSecret + '&scope=openid,session,AdobeID,read_organizations,additional_info.projectedProductContext'));
request.method = 'POST';
request.execute();
var response = request.response;
if(response.code != 200){
logError('GetAccessToken failed,', response.code, response.body);
return;
}
var body = ''+response.body;
var parsedResponse = JSON.parse(body);
var accessToken = parsedResponse.access_token;
logInfo("Access token generated successfully");
return accessToken;
}

Ora che i codici JavaScript personalizzati sono stati creati in Adobe Campaign, puoi configurare il flusso di lavoro contenente la pagina di destinazione in modo da utilizzare questi codici JavaScript per la sincronizzazione dei dati.

Configurare il flusso di lavoro per la pagina di destinazione

Aggiungendo i codici JavaScript ad Adobe Campaign, puoi sfruttarli nel flusso di lavoro della pagina di destinazione utilizzando JavaScript code attività:

  • Per caricare i dati dall’Experience Platform prima di caricare la pagina di destinazione, aggiungi un JavaScript code attività prima dell’attività della pagina di destinazione e copia e incolla Script 1.
 Script 1 - Caricare gli attributi del profilo dall'Experience Platform
// Script code to read profile from AEP.

logInfo("Loading profile from AEP");
loadLibrary("cus:aepAPI");
var recipient=ctx.recipient;
var email = recipient.@email;
var response = getProfileInfo(email);
ctx.isAEPProfileExists = 1;

if(response.code == 404){
ctx.isAEPProfileExists = 0
logInfo("Profile with email" + email + " not found in AEP, ignoring the update activity");
}
else if(response.code == 200){
var body = ''+response.body;
var parsedResponse = JSON.parse(body);
for (var key in parsedResponse) {
    var value =  parsedResponse[key];
    var marketing = value.entity.consents.marketing;
    logInfo("User Consent Details : " + JSON.stringify(marketing));
    if(marketing.hasOwnProperty('email')&&marketing.email.hasOwnProperty('val')&&marketing.email.val=='n'){
    ctx.recipient.@blackListEmail = 1;
    }
    if(marketing.hasOwnProperty('sms')&&marketing.sms.hasOwnProperty('val')&&marketing.sms.val=='n'){
    ctx.recipient.@blackListMobile = 1;
    }
    if(marketing.hasOwnProperty('push')&&marketing.push.hasOwnProperty('val')&&marketing.push.val=='n'){
    ctx.recipient.@blackListPostalMail = 1;
    }
}
}
  • Per aggiornare gli attributi del profilo di Experience Platform con i dati inviati nella pagina di destinazione, aggiungi un JavaScript code attività dopo l’attività della pagina di destinazione e copia e incolla Script 2.
 Script 2 - Aggiornare gli attributi del profilo di Experience Platform
// Script code to update profile in AEP and ACC.

logInfo("Executing script to update AEP profile.");

// Loading aepAPI library JS code
loadLibrary("cus:aepAPI");

var recipient=ctx.recipient

// Update profile only if it exists in AEP
if(ctx.isAEPProfileExists==1){

var email = recipient.@email
logInfo(email);
logInfo(recipient.@blackListEmail);
logInfo(recipient.@blackListMobile);
logInfo(recipient.@blackListPostalMail);

var optOutPayload = new Array();

if(recipient.@blackListEmail==1){
    optOutPayload.push('"email":{"val":"n"}');
}
else
    optOutPayload.push('"email":{"val":"y"}');

if(recipient.@blackListMobile==1){
    optOutPayload.push('"sms":{"val":"n"}');
}
else
    optOutPayload.push('"sms":{"val":"y"}');

if(recipient.@blackListPostalMail==1){
    optOutPayload.push('"push":{"val":"n"}');
}
else
    optOutPayload.push('"push":{"val":"y"}');

var profileUpdatePayload = '{'+ '"personalEmail":{"address":' + '\"' + email + '\"' + '},' +'"consents":{"marketing":{' + optOutPayload.toString() + '}}}';

var response = updateProfileInAEP(profileUpdatePayload);
if(response.code == 200){
var body = '' + response.body;
logInfo("AEP Profile Updated successfully, Response " + body);
// Update ACC profile
recipient.@xtkschema = "nms:recipient";
recipient.@_operation = "update";
recipient.@_key="@id";
xtk.session.Write(recipient);
logInfo("ACC Profile Updated successfully");
}
else{
    logError('Server Error: ', response.code, response.body);
}
}
else {
logInfo("Ignoring AEP profile update as profile doesn't exists.");

// Update ACC profile
recipient.@xtkschema = "nms:recipient";
recipient.@_operation = "update";
recipient.@_key="@id";
xtk.session.Write(recipient);
logInfo("ACC Profile Updated successfully");
}
ATTENZIONE

Assicurati di personalizzare il payload in ogni script in base alle tue esigenze specifiche.

Se non aggiungi alcuno script prima dell’attività della pagina di destinazione, in Adobe Experience Platform non verrà eseguito alcun controllo dell’esistenza del profilo. Quando la pagina di destinazione viene inviata e il profilo non esiste, verrà creata in Adobe Experience Platform con gli attributi della pagina di destinazione.

Di seguito è riportato un flusso di lavoro di esempio che utilizza le attività del codice JavaScript prima e dopo una pagina di destinazione:

Di seguito è riportato un esempio di pagina di destinazione e di attività di codice JavaScript configurate per aggiornare gli attributi del profilo in Adobe Experience Platform:

Ulteriori informazioni

In questa pagina