Benutzeridentifizierung und Bucketing
Erstellt für:
- Entwickler
Benutzeridentifizierung
Es gibt mehrere Möglichkeiten, einen Benutzer innerhalb von Adobe Target zu identifizieren. Target verwendet die folgenden Kennungen:
Feldname | Beschreibung |
---|---|
tntID | Der tntId ist die primäre Kennung in Target für einen Benutzer. Sie können diese ID bereitstellen oder Target generiert sie automatisch, wenn die Anfrage keine enthält. |
thirdPartyId | Der thirdPartyId ist die Kennung des Benutzers in Ihrem Unternehmen, die Sie mit jedem Aufruf senden können. Wenn sich ein(e) Benutzende® auf der Website eines Unternehmens anmeldet, erstellt das Unternehmen normalerweise eine ID, die mit dem Konto, der Treuekarte, der Mitgliedschaftsnummer oder anderen Kennungen des/der Besuchenden für dieses Unternehmen verknüpft ist. |
marketingCloudVisitorId | Die marketingCloudVisitorId wird verwendet, um Daten zwischen verschiedenen Adobe-Lösungen zusammenzuführen und freizugeben. Die marketingCloudVisitorId ist für Integrationen mit Adobe Analytics und Adobe Audience Manager erforderlich. |
customerIds | Neben der Experience Cloud-Besucher-ID können auch zusätzliche Kunden-IDs und ein Authentifizierungsstatus für jeden Besucher verwendet werden. |
Target-ID (tntID)
Die Target-ID oder tntId
kann als Geräte-ID betrachtet werden. Diese tntId
wird automatisch von Adobe Target generiert, wenn sie nicht in der Anfrage angegeben ist. Nachfolgende Anfragen müssen diese tntId
enthalten, damit der richtige Inhalt an ein Gerät gesendet werden kann, das vom selben Benutzer verwendet wird.
Der folgende Beispielaufruf zeigt eine Situation, in der ein tntId
nicht an Target übergeben wird.
const TargetClient = require("@adobe/target-nodejs-sdk");
const CONFIG = {
client: "acmeclient",
organizationId: "1234567890@AdobeOrg"
};
const targetClient = TargetClient.create(CONFIG);
targetClient.getOffers({
request: {
execute: {
mboxes: [{
name: "some-mbox"
}]
}
}
})
.then(console.log)
.catch(console.error);
ClientConfig config = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(config);
Context context = new Context().channel(ChannelType.WEB);
MboxRequest mbox = new MboxRequest()
.name("some-mbox")
.index(0);
ExecuteRequest executeRequest = new ExecuteRequest()
.mboxes(Arrays.asList(mbox));
TargetDeliveryRequest request = TargetDeliveryRequest.builder()
.context(context)
.execute(executeRequest)
.build();
TargetDeliveryResponse offers = targetClient.getOffers(request);
Wenn keine tntId
vorhanden ist, generiert Adobe Target eine tntId
und stellt sie in der Antwort wie folgt bereit.
{
"status": 200,
"requestId": "5b586f83-890c-46ae-93a2-610b1caa43ef",
"client": "acmeclient",
"id": {
"tntId": "10abf6304b2714215b1fd39a870f01afc.35_0"
},
"edgeHost": "mboxedge35.tt.omtrdc.net",
...
}
In diesem Beispiel wird der generierte tntId
10abf6304b2714215b1fd39a870f01afc.35_0
. Beachten Sie, dass diese tntId
sitzungsübergreifend für denselben Benutzer verwendet werden muss.
Drittanbieter-ID (thirdPartyId)
Wenn Ihr Unternehmen eine ID verwendet, um Ihren Besucher zu identifizieren, können Sie thirdPartyID
verwenden, um Inhalte bereitzustellen. Eine thirdPartyID
ist eine persistente ID, mit der Ihr Unternehmen Endbenutzende identifiziert, unabhängig davon, ob diese über Web-, Mobil- oder IoT-Kanäle mit Ihrem Unternehmen interagieren. Mit anderen Worten, die thirdPartyId
verweist auf Benutzerprofildaten, die kanalübergreifend verwendet werden können. Sie müssen jedoch die thirdPartyID
für jeden Aufruf der Adobe Target-Bereitstellungs-API angeben.
Der folgende Beispielaufruf veranschaulicht die Verwendung eines thirdPartyId
.
const TargetClient = require("@adobe/target-nodejs-sdk");
const CONFIG = {
client: "acmeclient",
organizationId: "1234567890@AdobeOrg"
};
const targetClient = TargetClient.create(CONFIG);
targetClient.getOffers({
request: {
id: {
thirdPartyId: "B234A029348"
},
execute: {
mboxes: [{
name: "some-mbox"
}]
}
}
})
.then(console.log)
.catch(console.error);
ClientConfig config = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(config);
VisitorId id = new VisitorId()
.thirdPartyId("B234A029348");
Context context = new Context().channel(ChannelType.WEB);
MboxRequest mbox = new MboxRequest()
.name("some-mbox")
.index(0);
ExecuteRequest executeRequest = new ExecuteRequest()
.mboxes(Arrays.asList(mbox));
TargetDeliveryRequest request = TargetDeliveryRequest.builder()
.context(context)
.execute(executeRequest)
.build();
TargetDeliveryResponse offers = targetClient.getOffers(request);
In diesem Szenario generiert Adobe Target eine tntId
, da sie nicht an den ursprünglichen Aufruf übergeben wurde, der dem bereitgestellten thirdPartyId
zugeordnet wird.
Marketing Cloud-Besucher-ID (marketingCloudVisitorId)
Die marketingCloudVisitorId
ist eine universelle und persistente ID, die Ihre Besucher über alle Adobe Experience Cloud-Lösungen hinweg identifiziert. Wenn Ihr Unternehmen den ID-Service implementiert, können Sie mit dieser ID denselben Site-Besucher und dessen Daten in verschiedenen Experience Cloud-Lösungen identifizieren, einschließlich Adobe Target, Adobe Analytics und Adobe Audience Manager. Beachten Sie, dass die marketingCloudVisitorId
bei der Integration von Target mit Adobe Analytics und Adobe Audience Manager erforderlich ist.
Der folgende Beispielaufruf zeigt, wie ein marketingCloudVisitorId
, das vom Experience Cloud-ID-Service abgerufen wurde, an Target übergeben wird.
const TargetClient = require("@adobe/target-nodejs-sdk");
const CONFIG = {
client: "acmeclient",
organizationId: "1234567890@AdobeOrg"
};
const targetClient = TargetClient.create(CONFIG);
targetClient.getOffers({
request: {
id: {
marketingCloudVisitorId: "10527837386392355901041112038610706884"
},
execute: {
mboxes: [{
name: "some-mbox"
}]
}
}
})
.then(console.log)
.catch(console.error);
ClientConfig config = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(config);
VisitorId id = new VisitorId()
.marketingCloudVisitorId("10527837386392355901041112038610706884");
Context context = new Context().channel(ChannelType.WEB);
MboxRequest mbox = new MboxRequest()
.name("some-mbox")
.index(0);
ExecuteRequest executeRequest = new ExecuteRequest()
.mboxes(Arrays.asList(mbox));
TargetDeliveryRequest request = TargetDeliveryRequest.builder()
.context(context)
.execute(executeRequest)
.build();
TargetDeliveryResponse offers = targetClient.getOffers(request);
In diesem Szenario generiert Target eine tntId
, da sie nicht an den ursprünglichen Aufruf übergeben wurde, der dem bereitgestellten marketingCloudVisitorId
zugeordnet wird.
Kunden-ID (customerIds)
Kunden-IDs können einer Experience Cloud-Besucher-ID hinzugefügt oder mit ihr verknüpft werden. Bei jedem Versand von customerIds
muss auch die marketingCloudVisitorId
angegeben werden. Darüber hinaus kann für jeden Besucher ein Authentifizierungsstatus zusammen mit jedem customerId
angegeben werden. Die folgenden Authentifizierungsstatus können verwendet werden:
unknown
authenticated
logged_out
Beachten Sie, dass nur dann auf die Benutzerprofildaten verwiesen wird, wenn sich die customerId
Target im authentifizierten Zustand befindet, die gespeichert und mit der customerId verknüpft sind. Wenn sich die customerId
in einem unbekannten oder logged_out
Status befindet, wird sie ignoriert, und alle Benutzerprofildaten, die mit dieser customerId
verknüpft sind, werden nicht für das Audience-Targeting genutzt.
const TargetClient = require("@adobe/target-nodejs-sdk");
const CONFIG = {
client: "acmeclient",
organizationId: "1234567890@AdobeOrg"
};
const targetClient = TargetClient.create(CONFIG);
targetClient.getOffers({
request: {
id: {
marketingCloudVisitorId : "10527837386392355901041112038610706884",
customerIds: [{
id: "134325423",
integrationCode : "crm_data",
authenticatedState : "authenticated"
}]
},
execute: {
mboxes: [{
name: "some-mbox"
}]
}
}
})
.then(console.log)
.catch(console.error);
ClientConfig config = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(config);
CustomerId customerId = new CustomerId()
.id("134325423")
.integrationCode("crm_data")
.authenticatedState(AuthenticatedState.AUTHENTICATED);
VisitorId id = new VisitorId()
.marketingCloudVisitorId("10527837386392355901041112038610706884")
.customerIds(Arrays.asList(customerId));
Context context = new Context().channel(ChannelType.WEB);
MboxRequest mbox = new MboxRequest()
.name("some-mbox")
.index(0);
ExecuteRequest executeRequest = new ExecuteRequest()
.mboxes(Arrays.asList(mbox));
TargetDeliveryRequest request = TargetDeliveryRequest.builder()
.context(context)
.execute(executeRequest)
.build();
TargetDeliveryResponse offers = targetClient.getOffers(request);
Das obige Beispiel zeigt, wie ein customerId
mit einem authenticatedState
gesendet wird. Beim Senden eines customerId
sind die integrationCode
, id
und authenticatedState
sowie die marketingCloudVisitorId
erforderlich. Der integrationCode
ist der Alias der Kundenattributdatei),Sie über CRS bereitgestellt haben.
Zusammengeführtes Profil
Sie können tntId
, thirdPartyID
und marketingCloudVisitorId
in derselben Anfrage kombinieren. In diesem Szenario verwaltet Adobe Target die Zuordnung aller dieser IDs und heftet sie an einen Besucher an. Erfahren Sie, wie Profile mithilfe verschiedenen Kennungen in Echtzeit zusammengeführtsynchronisiert werden.
const TargetClient = require("@adobe/target-nodejs-sdk");
const CONFIG = {
client: "acmeclient",
organizationId: "1234567890@AdobeOrg"
};
const targetClient = TargetClient.create(CONFIG);
targetClient.getOffers({
request: {
id: {
tntId: "d359234570e044f14e1faeeba02d6ab23439914e.35_0",
thirdPartyId: "B234A029348",
marketingCloudVisitorId : "10527837386392355901041112038610706884"
},
execute: {
mboxes: [{
name: "some-mbox"
}]
}
}
})
.then(console.log)
.catch(console.error);
ClientConfig config = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(config);
VisitorId id = new VisitorId()
.tntId("d359234570e044f14e1faeeba02d6ab23439914e.35_0")
.thirdPartyId("B234A029348")
.marketingCloudVisitorId("10527837386392355901041112038610706884");
Context context = new Context().channel(ChannelType.WEB);
MboxRequest mbox = new MboxRequest()
.name("some-mbox")
.index(0);
ExecuteRequest executeRequest = new ExecuteRequest()
.mboxes(Arrays.asList(mbox));
TargetDeliveryRequest request = TargetDeliveryRequest.builder()
.context(context)
.execute(executeRequest)
.build();
TargetDeliveryResponse offers = targetClient.getOffers(request);
Das obige Beispiel zeigt, wie Sie tntId
, thirdPartyID
und marketingCloudVisitorId
in derselben Anfrage kombinieren können.
Bucketing
Je nachdem, wie Sie Ihre Adobe Target-Aktivitäten einrichten, werden Ihre Benutzerinnen und Benutzer in Gruppen zusammengefasst, um ein Erlebnis zu sehen. In Adobe Target ist Bucketing:
- Deterministisch: MurmurHash3 wird verwendet, um sicherzustellen, dass Ihre Benutzenden in Buckets zusammengefasst sind und jedes Mal die richtige Variante sehen, solange die Benutzer-ID konsistent ist.
- Sticky: Adobe Target speichert die Variante, die Ihr Benutzer im Benutzerprofil sieht, um sicherzustellen, dass die Variante diesem Benutzer über Sitzungen und Kanäle hinweg konsistent angezeigt wird. Bei der Verwendung der Server-seitigen Entscheidungsfindung sind Variationen und Konsistenz garantiert. Bei Verwendung der geräteinternen Entscheidungsfindung ist die Konsistenz nicht garantiert.
End-to-End-Bucketing-Workflow
Bevor wir in den tatsächlichen Bucketing-Algorithmus eintauchen, müssen Sie betonen, dass ähnliche Schritte sowohl zur Auswahl von Aktivitäten basierend auf ihrem Traffic-Zuordnungsprozentsatz als auch zur Auswahl eines Erlebnisses innerhalb einer Aktivität verwendet werden.
Schritte zur Aktivitätsauswahl
- Generieren einer Geräte-ID, normalerweise einer UUID
- Client-Code abrufen
- Abrufen der Aktivitäts-ID
- Holen Sie sich das Salz, das normalerweise eine Zeichenfolge wie „Aktivität“ ist
- Berechnen des Hash mithilfe von MurmurHash3
- Absoluten Wert des Hash abrufen
- Dividieren des absoluten Hash-Werts durch 10000
- Teilen Sie den Rest durch 10000, wodurch ein Wert zwischen 0 und 1 entsteht.
- Multiplizieren Sie das Ergebnis mit 100 %
- Vergleich des Prozentsatzes der Traffic-Zuordnung der Aktivität mit dem abgerufenen Prozentsatz. Wenn der Prozentsatz der Traffic-Zuordnung niedriger ist, wird die Aktivität ausgewählt. Andernfalls wird die Aktivität übersprungen.
Schritte zur Erlebnisauswahl
- Generieren einer Geräte-ID, normalerweise einer UUID
- Client-Code abrufen
- Abrufen der Aktivitäts-ID
- Holen Sie sich das Salz, was normalerweise eine Zeichenfolge wie „Erlebnis“ ist
- Berechnen des Hash mithilfe von MurmurHash3
- Absoluten Wert des Hash abrufen
- Dividieren des absoluten Hash-Werts durch 10000
- Teilen Sie den Rest durch 10000, wodurch ein Wert zwischen 0 und 1 entsteht.
- Multiplizieren Sie das Ergebnis mit der Gesamtzahl der Erlebnisse innerhalb der Aktivität.
- Runden Sie das Ergebnis ab. Dadurch sollte der Erlebnisindex erstellt werden.
Beispiel
Angenommen, Folgendes:
- Client C mit Client-Code
acmeclient
- Aktivität A mit ID
1111
und drei ErlebnissenE1
,E2
,E3
- Erfahrungen haben folgende Verteilung:
E1
- 33 %,E2
- 33 %,E3
- 34 %
Der Auswahlfluss sieht wie folgt aus:
- Geräte-ID
702ff4d0-83b1-4e2e-a0a6-22cbe460eb15
- Client-Code-
acmeclient
- Aktivitäts-ID
1111
experience
- Wert in Hash-
acmeclient.1111.702ff4d0-83b1-4e2e-a0a6-22cbe460eb15.experience
, Hash-Wert--919077116
- Absoluter Wert des Hash-
919077116
- Rest nach Division durch 10000,
7116
- Wert nach Rest wird durch 10000 dividiert,
0.7116
- Ergebnis nach Multiplikation des Werts mit der Gesamtzahl der
3 * 0.7116 = 2.1348
Erlebnisse - Der Erlebnis-Index ist
2
, was das dritte Erlebnis bedeutet, da wir die0
Indizierung verwenden.