Erste Schritte mit Target SDKs
- Themen:
- APIs/SDKs
Erstellt für:
- Entwickler
Um loszulegen, empfehlen wir Ihnen, Ihre erste On-Device Decisioning Feature Flag-Aktivität in der Sprache Ihrer Wahl zu erstellen:
- Node.js
- Java
- .NET
- Python
Zusammenfassung der Schritte
- Aktivieren der geräteinternen Entscheidungsfindung für Ihre Organisation
- Installieren von SDK
- SDK initialisieren
- Richten Sie die Feature Flags in einer Adobe Target A/B Test ein
- Implementieren und Rendern der Funktion in der Anwendung
- Implementieren des Trackings für Ereignisse in der Anwendung
- Aktivieren der A/B Test Aktivität
1. Aktivieren der geräteinternen Entscheidungsfindung für Ihre Organisation
Durch die Aktivierung der geräteinternen Entscheidungsfindung wird sichergestellt, dass eine A/B Test Aktivität mit einer Latenz von nahezu null ausgeführt wird. Um diese Funktion zu aktivieren, navigieren Sie zu Administration > Implementation > Account details und aktivieren Sie den Umschalter On-Device Decisioning .
Nach der Aktivierung des On-Device Decisioning-Umschalters beginnt Adobe Target mit der Generierung Regelartefakte für Ihren Client.
2. Installieren des SDKS
Führen Sie für Node.js, Java und Python den folgenden Befehl in Ihrem Projektverzeichnis im Terminal aus. Für .NET fügen Sie es als Abhängigkeit hinzu, indem Sie von NuGet installieren.
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. SDK initialisieren
Das Regelartefakt wird während des SDK-Initialisierungsschritts heruntergeladen. Sie können den Initialisierungsschritt anpassen, um zu bestimmen, wie das Artefakt heruntergeladen und verwendet wird.
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. Richten Sie die Feature Flags in einer Adobe Target A/B Test ein
-
Navigieren Sie in Target zur Seite Activities und wählen Sie dann Create Activity > A/B test aus.
-
Lassen Sie im Create A/B Test Activity-Modal die Standard-Web-Option ausgewählt (1), wählen Sie Form als Experience Composer (2) aus, wählen Sie Default Workspace mit No Property Restrictions(3) aus und klicken Sie dann auf Next (4).
-
Geben Sie im Experiences Schritt der Aktivitätserstellung einen Namen für Ihre Aktivität ein (1) und fügen Sie ein zweites Erlebnis, Erlebnis B, hinzu, indem Sie auf Add Experience (2) klicken. Geben Sie den gewünschten Speicherort ein (3). Beispielsweise sind
ondevice-featureflag
oderhomepage-addtocart-featureflag
Ortsnamen, die die Ziele für Feature Flag-Tests angeben. Im folgenden Beispiel istondevice-featureflag
der für Erlebnis B definierte Speicherort. Optional können Sie Zielgruppenverfeinerungen (4) hinzufügen, um die Qualifizierung auf die Aktivität zu beschränken. -
Wählen Sie im Abschnitt CONTENT auf derselben Seite in der Dropdown-Liste (1) die Option Create JSON Offer aus, wie dargestellt.
-
Geben Sie im angezeigten Textfeld JSON Data Ihre Feature Flag-Variablen für jedes Erlebnis ein (1), wobei Sie ein gültiges JSON-Objekt verwenden (2).
Geben Sie die Feature Flag-Variablen für Erlebnis A ein.
(Beispiel-JSON für Erlebnis A, oben)
{ "enabled" : true, "flag" : "expA" }
Geben Sie die Feature Flag-Variablen für Erlebnis B ein.
(Beispiel-JSON für Erlebnis B, oben)
{ "enabled" : true, "flag" : "expB" }
-
Klicken Sie auf Next (1), um zum Targeting Schritt der Aktivitätserstellung zu gelangen.
-
Im Targeting unten gezeigten Beispiel bleibt Zielgruppen-Targeting (2) der Einfachheit halber auf der Standardgruppe „Alle Besucher“. Dies bedeutet, dass die Aktivität nicht zielgerichtet ist. Beachten Sie jedoch, dass Adobe empfiehlt, Ihre Zielgruppen immer für Produktionsaktivitäten anzusprechen. Klicken Sie auf Next (3), um zum Goals & Settings Schritt der Aktivitätserstellung zu gelangen.
-
Legen Sie im Goals & Settings Schritt Reporting Source auf Adobe Target (1) fest. Definieren Sie die Goal Metric als Conversion und geben Sie die Details basierend auf den Konversionsmetriken Ihrer Site an (2). Klicken Sie auf Save & Close (3), um die Aktivität zu speichern.
5. Implementieren und rendern der Funktion in der Anwendung
Nachdem Sie die Feature Flag-Variablen in Target eingerichtet haben, ändern Sie den Anwendungs-Code, um sie zu verwenden. Nachdem Sie beispielsweise das Feature Flag in der Anwendung erhalten haben, können Sie es verwenden, um Funktionen zu aktivieren und das Erlebnis zu rendern, für das sich der Besucher qualifiziert hat.
//... 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. Implementieren des zusätzlichen Trackings für Ereignisse in der Anwendung
Optional können Sie mit der Funktion sendNotification() zusätzliche Ereignisse zum Tracking von Konversionen senden.
//... 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. Aktivieren der A/B Test Aktivität
-
Klicken Sie auf Activate (1), um Ihre A/B Test zu aktivieren.
NOTE
Sie müssen über die Approver oder Publisher Benutzerrolle verfügen,diesen Schritt auszuführen.