Guida introduttiva a Target SDK
- Argomenti:
- APIs/SDKs
Creato per:
- Sviluppatore
Per iniziare, ti invitiamo a creare la tua prima attività di flag di funzionalità decisioning sul dispositivo nella lingua desiderata:
- Node.js
- Java
- .NET
- Python
Riepilogo dei passaggi
- Abilitare il decisioning sul dispositivo per la tua organizzazione
- Installare l’SDK
- Inizializzare l’SDK
- Configurare i flag di funzionalità in un'attività Adobe Target A/B Test
- Implementare ed eseguire il rendering della funzione nell’applicazione
- Implementa il tracciamento degli eventi nell’applicazione
- Attiva l'attività A/B Test
1. Abilitare il decisioning sul dispositivo per l’organizzazione
L'abilitazione del decisioning sul dispositivo garantisce che un'attività A/B Test venga eseguita con una latenza prossima allo zero. Per abilitare questa funzionalità, passare a Administration > Implementation > Account details e attivare/disattivare On-Device Decisioning.
Dopo aver attivato l'interruttore On-Device Decisioning, Adobe Target inizia a generare artefatti regola per il client.
2. Installare l’SDK
Per Node.js, Java e Python, esegui il seguente comando nella directory del progetto nel terminale. Per .NET, aggiungerlo come dipendenza installandolo da 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. Inizializzare l’SDK
L’artefatto della regola viene scaricato durante il passaggio di inizializzazione dell’SDK. Puoi personalizzare il passaggio di inizializzazione per determinare come viene scaricato e utilizzato l’artefatto.
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. Configurare i flag di funzionalità in un'attività Adobe Target A/B Test
-
In Target, passare alla pagina Activities, quindi selezionare Create Activity > A/B test.
-
Nella finestra modale Create A/B Test Activity, lascia selezionata l'opzione Web predefinita (1), seleziona Form come compositore esperienza (2), seleziona Default Workspace con No Property Restrictions(3), quindi fai clic su Next (4).
-
Nel passaggio Experiences della creazione di attività, fornisci un nome per l'attività (1) e aggiungi una seconda esperienza, Esperienza B, facendo clic su Add Experience (2). Immettere il nome della posizione desiderata (3). Ad esempio,
ondevice-featureflag
ohomepage-addtocart-featureflag
sono nomi di posizione che indicano le destinazioni per il test dei flag di funzionalità. Nell'esempio seguente,ondevice-featureflag
è la posizione definita per l'Esperienza B. Facoltativamente, puoi aggiungere Perfezionamenti del pubblico (4) per limitare la qualifica all'attività. -
Nella sezione CONTENT della stessa pagina, seleziona Create JSON Offer nel menu a discesa (1) come mostrato.
-
Nella casella di testo JSON Data visualizzata, digita le variabili del flag di funzione per ogni esperienza (1), utilizzando un oggetto JSON valido (2).
Immetti le variabili dei flag di funzione per l’Esperienza A.
(JSON di esempio per l'esperienza A, superiore)
{ "enabled" : true, "flag" : "expA" }
Immetti le variabili dei flag di funzione per l’Esperienza B.
(JSON di esempio per l'esperienza B, superiore)
{ "enabled" : true, "flag" : "expB" }
-
Fai clic su Next (1) per passare al passaggio Targeting della creazione di attività.
-
Nell'esempio del passaggio Targeting mostrato di seguito, il targeting del pubblico (2) rimane sul set predefinito di Tutti i visitatori, per semplicità. Ciò significa che l’attività non è targetizzata. Tuttavia, un Adobe di nota consiglia di indirizzare sempre i tipi di pubblico alle attività di produzione. Fai clic su Next (3) per passare al passaggio Goals & Settings della creazione di attività.
-
Nel passaggio Goals & Settings, impostare Reporting Source su Adobe Target (1). Definisci Goal Metric come Conversion, specificando i dettagli in base alle metriche di conversione del sito (2). Fare clic su Save & Close (3) per salvare l'attività.
5. Implementare ed eseguire il rendering della funzione nell’applicazione
Dopo aver impostato le variabili dei flag di funzionalità in Target, modificare il codice dell'applicazione per utilizzarle. Ad esempio, dopo aver ottenuto il flag di funzione nell’applicazione, puoi utilizzarlo per abilitare le funzioni ed eseguire il rendering dell’esperienza per la quale il visitatore si è qualificato.
//... 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. Implementa il tracciamento aggiuntivo per gli eventi nell’applicazione
Facoltativamente, puoi inviare eventi aggiuntivi per il tracciamento delle conversioni utilizzando la funzione 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. Attiva l'attività A/B Test
-
Fai clic su Activate (1) per attivare l'attività A/B Test.
NOTE
Per eseguire questo passaggio è necessario disporre del Approver o del Publisher ruolo utente.