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:
I passaggi principali per configurare questa integrazione sono i seguenti:
Configurare il flusso di lavoro per la pagina di destinazione |
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:
Accedi alla console Adobe Developer.
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.
Una volta creata la connessione, accedi al OAuth Server-to-Server copia i dettagli riportati di seguito, necessari in Campaign per l’autenticazione:
Ora che la connessione OAuth è configurata, crea e configura un nuovo HTTP API Connessione sorgente per collegare Adobe Campaign a Adobe Experience Platform.
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:
Passa a Adobe Experience Platform Sources, cerca HTTP API sorgente, quindi fai clic su Add data.
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.
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.
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:
Accedi a Administration > Platform > Options menu.
Aggiungi le seguenti opzioni con i valori corrispondenti dalla console Adobe Developer:
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.
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:
Accedi a Administration > Configuration > JavaScript codes menu.
Crea nuovi codici JavaScript e copia e incolla i seguenti snippet.
Il token di accesso e i dati di autenticazione vengono recuperati automaticamente dalle opzioni impostate in precedenza.
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;
}
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.
Aggiungendo i codici JavaScript ad Adobe Campaign, puoi sfruttarli nel flusso di lavoro della pagina di destinazione utilizzando JavaScript code attività:
// 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;
}
}
}
// 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");
}
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: