La integración entre Adobe Campaign y Adobe Experience Platform le permite sincronizar datos sin problemas entre sus páginas de aterrizaje de Adobe Campaign y Adobe Experience Platform. Con esta integración, puede:
Los pasos principales para configurar esta integración son los siguientes:
Las API de Adobe Cloud Platform utilizan el protocolo OAuth 2.0 para la autenticación y autorización. Para conectar Adobe Experience Platform a Adobe Campaign mediante llamadas a la API, debe generar un token de acceso mediante la integración de OAuth creada en la consola de Adobe Developer.
Para ello, siga estos pasos:
Acceda a la consola de Adobe Developer.
Cree una nueva conexión API con el producto API de Adobe Experience Platform. Encontrará los pasos detallados para obtener un token de acceso OAuth 2.0 en la Documentación de la consola Adobe Developer.
Una vez creada la conexión, vaya a OAuth Server-to-Server y copie los detalles siguientes, que son necesarios en Campaign para la autenticación:
Ahora que la conexión de OAuth está configurada, cree y configure un nuevo HTTP API Conexión de origen para vincular Adobe Campaign con Adobe Experience Platform.
Con la conexión OAuth establecida, el siguiente paso es crear una HTTP API Conexión de origen en Adobe Experience Platform. Esta conexión le permite transmitir datos a Adobe Experience Platform mediante API. Siga estos pasos:
Navegar a Adobe Experience Platform Sources, busque la variable HTTP API origen y haga clic en Add data.
Configure la conexión según sus necesidades. Encontrará información detallada sobre cómo configurar una conexión API HTTP en Documentación de fuentes de Adobe Experience Platform.
En el Authentication paso, active la opción Enable authentication opción para autenticarse con el token de acceso generado anteriormente mediante la integración de OAuth.
Una vez configurada la conexión de origen, se muestra el extremo de flujo continuo. Este punto de conexión es necesario para introducir datos en Adobe Experience Platform.
También puede acceder a una muestra del formato de datos introducido en Adobe Experience Platform abriendo el flujo de datos recién creado desde el Dataflows pestaña.
Ahora que la conexión de origen de la API HTTP está configurada, debe agregar opciones específicas a Adobe Campaign para habilitar la conexión a Adobe Experience Platform.
Una vez configurada la conexión de origen de la API HTTP, debe agregar opciones específicas a Adobe Campaign para habilitar la conexión con Adobe Experience Platform. Esto se puede hacer en el menú Campaign Administration o al ejecutar el flujo de trabajo de la página de aterrizaje añadiendo una variable específica JavaScript code actividad.
Examine las pestañas siguientes para descubrir los dos métodos:
Vaya a Administration > Platform > Options menú.
Añada las siguientes opciones con los valores correspondientes de la consola de Adobe Developer:
La función cryptString() se utiliza para cifrar los datos de autenticación.
Para configurar estas opciones automáticamente al ejecutar el flujo de trabajo de las páginas de aterrizaje, agregue una JavaScript code a su flujo de trabajo con el código siguiente. Obtenga información sobre cómo configurar una actividad de código JavaScript.
En la ejecución del flujo de trabajo, las opciones se crean automáticamente en la consola de Campaign con los valores proporcionados.
"
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'));
}
"
Ahora que las opciones de autenticación están configuradas en Campaign, debe crear códigos JavaScript personalizados para permitir la sincronización de datos entre Campaign y Adobe Experience Platform desde la página de aterrizaje.
Para permitir la sincronización de datos entre páginas de aterrizaje y Adobe Experience Platform, se deben agregar códigos JavaScript personalizados a Adobe Campaign. Siga estos pasos:
Vaya a Administration > Configuration > JavaScript codes menú.
Cree nuevos códigos JavaScript y copie y pegue los siguientes fragmentos de código.
El token de acceso y los datos de autenticación se recuperan automáticamente de las opciones configuradas anteriormente.
Este código comprueba si el perfil existe en Adobe Experience Platform antes de cargar la página de aterrizaje. Recupera los atributos de perfil y los muestra en los campos correspondientes de la página de aterrizaje.
// 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;
}
Este código actualiza los atributos de perfil en Adobe Experience Platform con los valores enviados en la página de aterrizaje.
// 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;
}
Ahora que los códigos JavaScript personalizados se crean en Adobe Campaign, puede configurar el flujo de trabajo que contiene la página de aterrizaje para utilizar estos códigos JavaScript para la sincronización de datos.
Con los códigos JavaScript añadidos a Adobe Campaign, puede aprovecharlos en el flujo de trabajo de la página de aterrizaje mediante JavaScript code actividades:
// 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");
}
Asegúrese de personalizar la carga útil en cada script según sus necesidades específicas.
Si no agrega ningún script antes de la actividad de la página de aterrizaje, no se realizará ninguna comprobación de la existencia del perfil en Adobe Experience Platform. Cuando se envía la página de aterrizaje y el perfil no existe, se crea en Adobe Experience Platform con los atributos de la página de aterrizaje.
Este es un ejemplo de flujo de trabajo con las actividades de código JavaScript antes y después de una página de aterrizaje:
A continuación, se muestra un ejemplo de una página de aterrizaje y una actividad de código JavaScript configurada para actualizar atributos de perfil en Adobe Experience Platform: