Introducción a los SDK de Target
- Temas:
- APIs/SDKs
Creado para:
- Desarrollador
Para ponerte en marcha, te recomendamos que crees tu primera actividad de indicador de funciones de toma de decisiones en el dispositivo en el idioma que elijas:
- Node.js
- Java
- .NET
- Python
Resumen de los pasos
- Habilitar la toma de decisiones en el dispositivo para su organización
- Instalación del SDK
- Inicialización del SDK
- Configurar los indicadores de características en una actividad Adobe Target A/B Test
- Implementar y procesar la función en la aplicación
- Implementar el seguimiento de eventos en la aplicación
- Activar su actividad A/B Test
1. Habilitar la toma de decisiones en el dispositivo para su organización
Al habilitar la toma de decisiones en el dispositivo, se garantiza que la actividad A/B Test se ejecute con una latencia cercana a cero. Para habilitar esta característica, vaya a Administration > Implementation > Account details y habilite la opción On-Device Decisioning.
Después de habilitar la opción On-Device Decisioning, Adobe Target comienza a generar artefactos de regla para su cliente.
2. Instalar el SDK
Para Node.js, Java y Python, ejecute el siguiente comando en el directorio del proyecto en el terminal. Para .NET, agréguela como una dependencia mediante la instalación desde NuGet.
npm i @adobe/target-nodejs-sdk -P
<dependency>
<groupId>com.adobe.target</groupId>
<artifactId>java-sdk</artifactId>
<version>2.0</version>
</dependency>
dotnet add package Adobe.Target.Client
pip install target-python-sdk
3. Inicializar el SDK
El artefacto de regla se descarga durante el paso de inicialización del SDK. Puede personalizar el paso de inicialización para determinar cómo se descarga y utiliza el artefacto.
const TargetClient = require("@adobe/target-nodejs-sdk");
const CONFIG = {
client: "<your target client code>",
organizationId: "your EC org id",
decisioningMethod: "on-device",
events: {
clientReady: targetClientReady
}
};
const tClient = TargetClient.create(CONFIG);
function targetClientReady() {
//Adobe Target SDK has now downloaded the JSON artifact locally, which contains the activity details.
//We will see how to use the artifact here very soon.
}
ClientConfig config = ClientConfig.builder()
.client("testClient")
.organizationId("ABCDEF012345677890ABCDEF0@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(config);
var targetClientConfig = new TargetClientConfig.Builder("testClient", "ABCDEF012345677890ABCDEF0@AdobeOrg")
.Build();
this.targetClient.Initialize(targetClientConfig);
from target_python_sdk import TargetClient
def target_client_ready():
# Adobe Target SDK has now downloaded the JSON artifact locally, which contains the activity details.
# We will see how to use the artifact here very soon.
CONFIG = {
"client": "<your target client code>",
"organization_id": "your EC org id",
"decisioning_method": "on-device",
"events": {
"client_ready": target_client_ready
}
}
target_client = TargetClient.create(CONFIG)
4. Configure los indicadores de características en una actividad Adobe Target A/B Test
-
En Target, vaya a la página Activities y, a continuación, seleccione Create Activity > A/B test.
-
En el modal Create A/B Test Activity, deje seleccionada la opción web predeterminada (1), seleccione Form como compositor de experiencias (2), seleccione Default Workspace con No Property Restrictions(3) y, a continuación, haga clic en Next (4).
-
En el paso Experiences de creación de la actividad, proporcione un nombre para su actividad (1) y agregue una segunda experiencia, Experiencia B, haciendo clic en Add Experience (2). Introduzca el nombre de la ubicación que elija (3). Por ejemplo,
ondevice-featureflag
ohomepage-addtocart-featureflag
son nombres de ubicación que indican los destinos de las pruebas de indicadores de características. En el ejemplo que se muestra a continuación,ondevice-featureflag
es la ubicación definida para la Experiencia B. Opcionalmente, puede agregar Refinamientos de audiencia (4) para restringir la calificación a la actividad. -
En la sección CONTENT de la misma página, seleccione Create JSON Offer en la lista desplegable (1) como se muestra.
-
En el cuadro de texto JSON Data que aparece, escriba las variables de indicador de características para cada experiencia (1), utilizando un objeto JSON válido (2).
Introduzca las variables de indicador de funcionalidad para la Experiencia A.
(Ejemplo de JSON para la Experiencia A anterior)
{ "enabled" : true, "flag" : "expA" }
Introduzca las variables de indicador de funciones para la Experiencia B.
(Ejemplo de JSON para la Experiencia B anterior)
{ "enabled" : true, "flag" : "expB" }
-
Haga clic en Next (1) para avanzar al paso Targeting de creación de la actividad.
-
En el ejemplo del paso Targeting que se muestra a continuación, Segmentación de audiencia (2) permanece en el conjunto predeterminado de Todos los visitantes, para simplificar. Esto significa que la actividad no está dirigida. Sin embargo, tenga en cuenta que el Adobe recomienda segmentar siempre las audiencias para las actividades de producción. Haga clic en Next (3) para avanzar al paso Goals & Settings de creación de la actividad.
-
En el paso Goals & Settings, establezca Reporting Source en Adobe Target (1). Defina Goal Metric como Conversion, y especifique los detalles según las métricas de conversión del sitio (2). Haga clic en Save & Close (3) para guardar la actividad.
5. Implementar y procesar la función en la aplicación
Después de configurar las variables de indicador de características en Target, modifique el código de la aplicación para usarlas. Por ejemplo, después de obtener la marca de características en la aplicación, puede utilizarla para habilitar características y procesar la experiencia para la que el visitante cumple los requisitos.
//... Code removed for brevity
let featureFlags = {};
function targetClientReady() {
tClient.getAttributes(["ondevice-featureflag"]).then(function(response) {
const featureFlags = response.asObject("ondevice-featureflag");
if(featureFlags.enabled && featureFlags.flag !== "expA") { //Assuming "expA" is control
console.log("Render alternate experience" + featureFlags.flag);
}
else {
console.log("Render default experience");
}
});
}
MboxRequest mbox = new MboxRequest().name("ondevice-featureflag").index(0);
TargetDeliveryRequest request = TargetDeliveryRequest.builder()
.context(new Context().channel(ChannelType.WEB))
.execute(new ExecuteRequest().mboxes(Arrays.asList(mbox)))
.build();
Attributes attributes = targetClient.getAttributes(request, "ondevice-featureflag");
String flag = attributes.getString("ondevice-featureflag", "flag");
var mbox = new MboxRequest(index: 0, name: "ondevice-featureflag");
var deliveryRequest = new TargetDeliveryRequest.Builder()
.SetContext(new Context(ChannelType.Web))
.SetExecute(new ExecuteRequest(mboxes: new List<MboxRequest> { mbox }))
.Build();
var attributes = targetClient.GetAttributes(request, "ondevice-featureflag");
var flag = attributes.GetString("ondevice-featureflag", "flag");
# ... Code removed for brevity
feature_flags = {}
def target_client_ready():
attribute_provider = target_client.get_attributes(["ondevice-featureflag"])
feature_flags = attribute_provider.as_object(mbox_name="ondevice-featureflag")
if feature_flags.get("enabled") and feature_flags.get("flag") != "expA": # Assuming "expA" is control
print("Render alternate experience {}".format(feature_flags.get("flag")))
else:
print("Render default experience")
6. Implemente un seguimiento adicional para los eventos de su aplicación
Opcionalmente, puede enviar eventos adicionales para rastrear conversiones mediante la función sendNotification().
//... Code removed for brevity
//When a conversion happens
TargetClient.sendNotifications({
targetCookie,
"request" : {
"notifications" : [
{
type: "display",
timestamp : Date.now(),
id: "conversion",
mbox : {
name : "orderConfirm"
},
order : {
id: "BR9389",
total : 98.93,
purchasedProductIds : ["J9393", "3DJJ3"]
}
}
]
}
})
Notification notification = new Notification();
notification.setId("conversion");
notification.setImpressionId(UUID.randomUUID().toString());
notification.setType(MetricType.DISPLAY);
notification.setTimestamp(System.currentTimeMillis());
Order order = new Order("BR9389");
order.total(98.93);
order.purchasedProductIds(["J9393", "3DJJ3"]);
notification.setOrder(order);
TargetDeliveryRequest notificationRequest =
TargetDeliveryRequest.builder()
.context(new Context().channel(ChannelType.WEB))
.notifications(Collections.singletonList(notification))
.build();
NotificationDeliveryService notificationDeliveryService = new NotificationDeliveryService();
notificationDeliveryService.sendNotification(notificationRequest);
var order = new Order
{
Id = "BR9389",
Total = 98.93M,
PurchasedProductIds = new List<string> { "J9393", "3DJJ3" },
};
var notification = new Notification
{
Id = "conversion",
ImpressionId = Guid.NewGuid().ToString(),
Type = MetricType.Display,
Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
Order = order,
};
var notificationRequest = new TargetDeliveryRequest.Builder()
.SetContext(new Context(ChannelType.Web))
.SetNotifications(new List<Notification> {notification})
.Build();
targetClient.SendNotifications(notificationRequest);
# ... Code removed for brevity
# When a conversion happens
notification_mbox = NotificationMbox(name="orderConfirm")
order = Order(id="BR9389, total=98.93, purchased_product_ids=["J9393", "3DJJ3"])
notification = Notification(
id="conversion",
type=MetricType.DISPLAY,
timestamp=1621530726000, # Epoch time in milliseconds
mbox=notification_mbox,
order=order
)
notification_request = DeliveryRequest(notifications=[notification])
target_client.send_notifications({
"target_cookie": target_cookie,
"request" : notification_request
})
7. Active la actividad A/B Test
-
Haga clic en Activate (1) para activar su actividad A/B Test.
NOTE
Debe tener el Approver o Publisher rol de usuario para realizar este paso.