Komma igång med Target SDK:er

För att komma igång rekommenderar vi att du skapar din första flaggaktivitet för funktionen på enheten på det språk du väljer:

  • Node.js
  • Java
  • .NET
  • Python

Sammanfattning av steg

  1. Aktivera beslut på enheten för din organisation
  2. Installera SDK
  3. Initiera SDK
  4. Konfigurera funktionsflaggor i en Adobe Target A/B Test-aktivitet
  5. Implementera och återge funktionen i ditt program
  6. Implementera spårning för händelser i ditt program
  7. Aktivera din A/B Test-aktivitet

1. Aktivera beslut på enheten för din organisation

Om du aktiverar enhetsbeslut körs en A/B Test-aktivitet med en latens som är nära noll. Om du vill aktivera den här funktionen går du till Administration > Implementation > Account details och aktiverar växlingsknappen On-Device Decisioning.

alt-bild

NOTE
Du måste ha användarrollen Admin eller Approver 🔗 för att aktivera eller inaktivera växlingsknappen On-Device Decisioning.

När du har aktiverat växeln On-Device Decisioning börjar Adobe Target generera regelartefakter för klienten.

2. Installera SDK

För Node.js, Java och Python kör du följande kommando i din projektkatalog i terminalen. För .NET lägger du till det som ett beroende genom att installera från NuGet.

Node.js (NPM)
code language-js line-numbers
npm i @adobe/target-nodejs-sdk -P
Java (Maven)
code language-javascript line-numbers
<dependency>
   <groupId>com.adobe.target</groupId>
   <artifactId>java-sdk</artifactId>
   <version>2.0</version>
</dependency>
.NET (Bash)
code language-bash line-numbers
dotnet add package Adobe.Target.Client
Python (pip)
code language-python line-numbers
pip install target-python-sdk

3. Initiera SDK

Regelartefakten hämtas under SDK-initieringssteget. Du kan anpassa initieringssteget för att avgöra hur artefakten hämtas och används.

Node.js
code language-js line-numbers
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.
}
Java (Maven)
code language-javascript line-numbers
ClientConfig config = ClientConfig.builder()
   .client("testClient")
   .organizationId("ABCDEF012345677890ABCDEF0@AdobeOrg")
   .build();
TargetClient targetClient = TargetClient.create(config);
.NET (C#)
code language-csharp line-numbers
var targetClientConfig = new TargetClientConfig.Builder("testClient", "ABCDEF012345677890ABCDEF0@AdobeOrg")
   .Build();
this.targetClient.Initialize(targetClientConfig);
Python
code language-python line-numbers
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. Konfigurera funktionsflaggor i en Adobe Target A/B Test-aktivitet.

  1. Gå till sidan Activities i Target och välj sedan Create Activity > A/B test.

    alt-bild

  2. I modala Create A/B Test Activity låter du standardalternativet för webben vara markerat (1), väljer Form som din upplevelsedisposition (2), väljer Default Workspace med No Property Restrictions(3) och klickar sedan på Next (4).

    alt-bild

  3. I steget Experiences när du skapar en aktivitet anger du ett namn för aktiviteten (1) och lägger till en andra upplevelse, Experience B, genom att klicka på Add Experience (2). Ange platsnamnet (3). ondevice-featureflag eller homepage-addtocart-featureflag är till exempel platsnamn som anger mål för testning av funktionsflaggor. I exemplet nedan är ondevice-featureflag den plats som definierats för Experience B. Om du vill kan du lägga till Audience Refinements (4) för att begränsa behörigheten för aktiviteten.

    alt-bild

  4. I avsnittet CONTENT på samma sida väljer du Create JSON Offer i listrutan (1) så som visas.

    alt-bild

  5. I textrutan JSON Data som visas skriver du in dina funktionsflaggvariabler för varje upplevelse (1) med ett giltigt JSON-objekt (2).

    Ange funktionens flaggvariabler för Experience A.

    alt-bild

    (Exempel-JSON för upplevelse A, ovan)

    code language-json line-numbers
       {
       "enabled" : true,
       "flag" : "expA"
    }
    

    Ange funktionens flaggvariabler för Experience B.

    alt-bild

    (Exempel-JSON för upplevelse B ovan)

    code language-json line-numbers
       {
       "enabled" : true,
       "flag" : "expB"
    }
    
  6. Klicka på Next (1) för att gå vidare till steget Targeting när du skapar aktiviteter.

    alt-bild

  7. I exemplet med steget Targeting som visas nedan är målgruppsanpassning (2) fortfarande standarduppsättningen för alla besökare, vilket är enklare. Det innebär att aktiviteten inte är målinriktad. Observera dock att Adobe alltid rekommenderar att ni riktar in er på era målgrupper för produktionsaktiviteter. Klicka på Next (3) för att gå vidare till steget Goals & Settings när du skapar aktiviteter.

    alt-bild

  8. I steget Goals & Settings anger du Reporting Source till Adobe Target (1). Definiera Goal Metric som Conversion och ange informationen baserat på din webbplats konverteringsmått (2). Klicka på Save & Close (3) för att spara aktiviteten.

    alt-bild

5. Implementera och återge funktionen i ditt program

När du har konfigurerat variablerna för funktionsflaggan i Target ändrar du programkoden så att de används. När du har hämtat funktionsflaggan i programmet kan du till exempel använda den för att aktivera funktioner och återge den upplevelse som besökaren är kvalificerad för.

Node.js
code language-js line-numbers
//... 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");
      }
   });
}
Java (Maven)
code language-javascript line-numbers
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");
.NET (C#)
code language-csharp line-numbers
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");
Python
code language-python line-numbers
# ... 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. Implementera ytterligare spårning för händelser i programmet

Du kan också skicka ytterligare händelser för att spåra konverteringar med funktionen sendNotification().

Node.js
code language-js line-numbers
//... 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"]
         }
      }
      ]
   }
})
Java (Maven)
code language-javascript line-numbers
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);
.NET (C#)
code language-csharp line-numbers
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);
Python
code language-python line-numbers
# ... 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. Aktivera aktiviteten A/B Test

  1. Klicka på Activate (1) för att aktivera din A/B Test-aktivitet.

    note note
    NOTE
    Du måste ha användarrollen Approver eller Publisher 🔗 för att kunna utföra det här steget.

    alt-bild

recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3