Willkommen in der Entwicklerdokumentation für das Kameleoon C# SDK! Verwenden Sie unser SDK, um Experimente auf Ihrem Back-End .NET-Anwendungsserver auszuführen. Die Integration unseres SDK in Ihre Webanwendung ist einfach, und sein Speicher- und Netzwerkverbrauch ist gering.
Erste Schritte: Hilfe zu den ersten Schritten finden Sie im Entwicklerhandbuch.
SDK-Methoden: Die vollständige Referenzdokumentation der C# SDK-Methoden finden Sie im Abschnitt Referenz.
Changelog: Aktuelle Version des C# SDK: 4.19.0 Changelog.
Entwicklerhandbuch
Erste Schritte
Dieses Handbuch wurde entwickelt, um Ihnen bei der Integration unseres SDK in Ihre C#-Anwendungen zu helfen.
Starter-Kit
Um Ihnen den Einstieg zu erleichtern, stellt Kameleoon ein Starter-Kit und eine Demo-Anwendung zum Testen des SDK bereit. Das Starter-Kit enthält eine vollständig konfigurierte App mit Beispielen, die zeigen, wie SDK-Methoden in einer App verwendet werden können. Das Starter-Kit, die Demo-Anwendung und detaillierte Anweisungen sind unter Starter kit for .NET verfügbar.
C#-Client installieren
Sie können die Paketmanager NuGet, .NET CLI oder Paket verwenden, um den C#-Client zu installieren.
NuGet Package Manager
.NET CLI
Paket CLI
Install-Package KameleoonClient -Version 4.17.0
dotnet add package KameleoonClient --version 4.17.0
paket add KameleoonClient --version 4.17.0
Zusätzliche Konfiguration
Erstellen Sie eine .properties-Konfigurationsdatei, um Anmeldeinformationen bereitzustellen und das Verhalten des SDK anzupassen. Sie können auch eine Beispielkonfiguration herunterladen. Speichern Sie diese Datei im Standardpfad /etc/kameleoon/client-csharp.conf. Wenn Sie die Datei an einem anderen Ort ablegen, müssen Sie den Pfad als Argument an KameleoonClientFactory.Create() übergeben. Mit der aktuellen Version des C# SDK sind dies die verfügbaren Schlüssel:
| Schlüssel | Beschreibung | Standardwert |
|---|
clientId / client_id (erforderlich) | Erforderlich für die Authentifizierung beim Kameleoon-Dienst. Um Ihre client_id zu finden, lesen Sie die Dokumentation API credentials. | |
clientSecret / client_secret (erforderlich) | Erforderlich für die Authentifizierung beim Kameleoon-Dienst. Um Ihr client_secret zu finden, lesen Sie die Dokumentation API credentials. | |
sessionDurationMinute / session_duration_minute (optional) | Bezeichnet das vordefinierte Zeitintervall, in dem Kameleoon den Besucher und die zugehörigen Daten im Arbeitsspeicher (RAM) speichert. Beachten Sie, dass eine Erhöhung der Sitzungsdauer die Menge des RAM erhöht, die für die Speicherung der Besucherdaten zugewiesen werden muss. | 30 Minuten |
refreshIntervalMinute / refresh_interval_minute (optional) | Gibt das Aktualisierungsintervall in Minuten an, in dem das SDK die Konfiguration für die aktiven Experimente und feature flags abruft. Der Wert bestimmt die maximale Zeit, die benötigt wird, um Änderungen wie das Aktivieren oder Deaktivieren von feature flags oder das Starten von Experimenten auf Ihre Produktionsserver zu übertragen. Darüber hinaus bieten wir einen Streaming-Modus an, der server-sent events (SSE) verwendet, um neue Konfigurationen automatisch an das SDK zu übertragen und in Echtzeit anzuwenden, ohne Verzögerungen. | 60 Minuten |
defaultTimeoutMillisecond / default_timeout_millisecond (optional) | Gibt das Timeout in Millisekunden für Netzwerkanfragen vom SDK an. Setzen Sie den Wert auf 30 Sekunden oder mehr, wenn Sie keine stabile Verbindung haben. Einige Methoden haben einen zusätzlichen Parameter, mit dem Sie das Standard-Timeout für diese bestimmte Methode überschreiben können. Wenn Sie das Timeout für eine Methode nicht explizit angeben, verwendet das SDK diesen Standardwert. | 10000 Millisekunden |
trackingIntervalMilliseconds / tracking_interval_millisecond (optional) | Gibt das Intervall für Tracking-Anfragen in Millisekunden an. Alle Besucher, die Kameleoon für ein feature flag ausgewertet hat oder deren Daten geleert wurden, werden in dieser Tracking-Anfrage berücksichtigt, die das SDK einmal pro Intervall ausführt. Der Mindestwert ist 1000 ms, was auch der Standardwert ist, und der Höchstwert ist 5000 ms. | 1000 Millisekunden |
environment / environment (optional) | Umgebung, aus der die Konfiguration des feature flag verwendet werden soll. Der Wert kann production, staging, development sein. Einzelheiten finden Sie im Artikel managing environments. | production |
topLevelDomain / top_level_domain (im hybriden Modus erforderlich) | Die aktuelle Top-Level-Domain für Ihre Website. Verwenden Sie das Format: example.com. Fügen Sie nicht https://, www oder andere Subdomains hinzu. Kameleoon verwendet diese Information, um das entsprechende Cookie auf der Top-Level-Domain zu setzen. | null |
proxyHost / proxy_host (optional) | Legt den Proxy-Host für alle ausgehenden Server-Aufrufe des SDK fest. | null |
networkDomain / network_domain (optional) | Benutzerdefinierte Domain, die von SDKs für ausgehende Anfragen verwendet wird, oft zum Proxying. Muss eine gültige Domain sein (z. B. example.com oder sub.example.com). Ungültige Formate werden auf den Kameleoon-Standardwert zurückgesetzt. | null |
Den Kameleoon-Client initialisieren
Nachdem Sie das SDK installiert und Ihre Anmeldeinformationen sowie das SDK-Verhalten konfiguriert haben, erstellen Sie den Kameleoon-Client in Ihrem Anwendungscode. Zum Beispiel:
using Kameleoon;
string siteCode = "a8st4f59bj";
try {
// Read from default configuration path: "/etc/kameleoon/client-csharp.conf"
IKameleoonClient kameleoonClient = KameleoonClientFactory.Create(siteCode);
} catch (KameleoonException.SiteCodeIsEmpty e) {
// indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
// indicates that provided clientId / clientSecret are not valid
}
try {
IKameleoonClient kameleoonClient = KameleoonClientFactory.Create(siteCode, "custom/file/path/client-csharp.conf");
} catch (KameleoonException.SiteCodeIsEmpty e) {
// indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
// indicates that provided clientId / clientSecret are not valid
}
try {
KameleoonClientConfig config = new KameleoonClientConfig(
clientId: "<clientId>", // mandatory
clientSecret: "<clientId>", // mandatory
refreshIntervalMinute: 60, // in minutes, optional (60 minutes by default)
sessionDurationMinute: 30, // in minutes, optional (30 minutes by default)
defaultTimeoutMillisecond: 10_000, // in milliseconds, optional (10000 ms by default)
trackingIntervalMilliseconds: 1000, // in milliseconds, optional (1000 ms by default)
environment: "development", // optional
topLevelDomain: "example.com", // mandatory if you use hybrid mode (engine or web experiments)
proxyHost: "proxy.host.com", // optional
networkDomain: "example.com", // optional
);
IKameleoonClient kameleoonClient = KameleoonClientFactory.Create(siteCode, config);
} catch (KameleoonException.SiteCodeIsEmpty e) {
// indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
// indicates that provided clientId / clientSecret are not valid
}
Ein IKameleoonClient ist ein Singleton-Objekt, das Ihre App mit der Kameleoon-Plattform verbindet. Es enthält alle Methoden und Funktionen, die Sie zur Durchführung eines Experiments benötigen.
Als Entwickler müssen Sie sicherstellen, dass Ihre App die richtige Logik für A/B-Tests mit Kameleoon verwendet. Es ist am besten, einen Besucher vom Experiment auszuschließen, wenn Sie es noch nicht gestartet haben. Der Ausschluss ist einfach, da dies zur Standardlogik für Variations passt.
Aktivieren eines feature flag
Einem Benutzer eine eindeutige ID zuweisen
Um einem Benutzer eine eindeutige ID zuzuweisen, können Sie die Methode GetVisitorCode() verwenden. Wenn ein visitor code nicht existiert (aus dem Cookie der Request-Header), generiert die Methode eine zufällige eindeutige ID oder verwendet einen defaultVisitorCode, den Sie generiert hätten. Die ID wird dann in einem Cookie der Response-Header festgelegt.
Wenn Sie Kameleoon im Hybridmodus verwenden, stellt der Aufruf der Methode GetVisitorCode() sicher, dass die eindeutige ID (visitor code) zwischen der Anwendungsdatei engine.js (früher kameleoon.js) und dem SDK geteilt wird.
Eine Flag-Konfiguration abrufen
Um ein feature flag in Ihrem Code zu implementieren, müssen Sie zunächst das feature flag in Ihrem Kameleoon-Konto erstellen.
Um den Status oder die Variation eines feature flag für einen bestimmten Benutzer zu ermitteln, sollten Sie die Methode GetVariation() oder IsFeatureActive() verwenden, um die Konfiguration basierend auf dem featureKey abzurufen.
Die Methode GetVariation() verarbeitet sowohl einfache feature flags mit ON/OFF-Zuständen als auch komplexere flags mit mehreren Variations. Die Methode ruft die entsprechende Variation für den Benutzer ab, indem sie die Feature-Regeln überprüft, die Variation zuweist und sie basierend auf dem featureKey und dem visitorCode zurückgibt.
Die Methode IsFeatureActive() kann verwendet werden, wenn Sie die Konfiguration eines einfachen feature flag abrufen möchten, das nur einen ON- oder OFF-Zustand hat, im Gegensatz zu komplexeren feature flags mit mehreren Variations oder Targeting-Optionen.
Wenn Ihr feature flag zugehörige Variablen hat (wie bestimmte Verhaltensweisen, die an jede Variation gebunden sind), ermöglicht Ihnen GetVariation() auch den Zugriff auf das Variation-Objekt, das Details zur zugewiesenen Variation und dem zugehörigen Experiment liefert. Diese Methode prüft, ob der Benutzer angesprochen wird, findet die dem Besucher zugewiesene Variation und speichert sie im Speicher. Wenn track=true, sendet das SDK das Expositionsereignis bei der nächsten Tracking-Anfrage an das angegebene Experiment, die automatisch basierend auf dem tracking_interval_millisecond des SDK ausgelöst wird. Standardmäßig ist dieses Intervall auf 1000 Millisekunden (1 Sekunde) eingestellt.
Die Methode GetVariation() ermöglicht es Ihnen zu steuern, ob das Tracking durchgeführt wird. Wenn track=false, werden vom SDK keine Expositionsereignisse gesendet. Dies ist nützlich, wenn Sie es vorziehen, keine Daten über das SDK zu verfolgen und stattdessen auf clientseitiges Tracking zu setzen, das z. B. vom Kameleoon-Engine verwaltet wird. Darüber hinaus ist die Einstellung track=false hilfreich, wenn Sie die Methode GetVariations() verwenden, bei der Sie möglicherweise nur die Variations für alle Flags benötigen, ohne Tracking-Ereignisse auszulösen. Wenn Sie mehr darüber erfahren möchten, wie Tracking funktioniert, lesen Sie diesen Artikel.
Datenpunkte hinzufügen, um einen Benutzer anzusprechen oder Besuche in Berichten zu filtern/aufzuschlüsseln
Um einen Benutzer anzusprechen, stellen Sie sicher, dass Sie relevante Datenpunkte zu seinem Profil hinzugefügt haben, bevor Sie die Feature-Variation abrufen oder prüfen, ob das Flag aktiv ist. Verwenden Sie die Methode AddData(), um diese Datenpunkte zum Profil des Benutzers hinzuzufügen.
Um Datenpunkte abzurufen, die auf anderen Geräten gesammelt wurden, oder um auf vergangene Benutzerdaten zuzugreifen (clientseitig gesammelt bei Verwendung von Kameleoon im Hybridmodus), verwenden Sie die Methode GetRemoteVisitorData(). Diese Methode ruft Daten asynchron von den Servern ab. Es ist wichtig, GetRemoteVisitorData() vor dem Abrufen der Variation oder der Prüfung, ob das feature flag aktiv ist, aufzurufen, da diese Daten möglicherweise erforderlich sind, um einen Benutzer einer bestimmten Variation zuzuweisen.
Um mehr über verfügbare Targeting-Bedingungen zu erfahren, lesen Sie den ausführlichen Artikel zum Thema.
Darüber hinaus sind die Datenpunkte, die Sie dem Besucherprofil hinzufügen, bei der Analyse Ihrer Experimente verfügbar, sodass Sie Ihre Ergebnisse nach Faktoren wie Gerät und Browser filtern und aufschlüsseln können. Der Kameleoon-Hybridmodus sammelt automatisch eine Vielzahl von Datenpunkten clientseitig, sodass es einfach ist, Ihre Ergebnisse anhand dieser vorgesammelten Datenpunkte aufzuschlüsseln. Die vollständige Liste finden Sie hier.
Wenn Sie zusätzliche Datenpunkte über das hinaus verfolgen müssen, was automatisch gesammelt wird, können Sie die Custom Data-Funktion von Kameleoon verwenden. Custom Data ermöglicht es Ihnen, spezifische Informationen zu erfassen und zu analysieren, die für Ihre Experimente relevant sind. Vergessen Sie nicht, die Methode Flush() aufzurufen, um die gesammelten Daten zur Analyse an die Kameleoon-Server zu senden.
Um die Genauigkeit Ihrer Ergebnisse zu gewährleisten, wird empfohlen, Bots herauszufiltern, indem Sie den Datentyp UserAgent verwenden.
Ziel-Conversions verfolgen
Wenn ein Benutzer eine gewünschte Aktion abschließt (z. B. einen Kauf tätigt), wird dies als Conversion aufgezeichnet. Um Conversions zu verfolgen, verwenden Sie die Methode TrackConversion() und geben Sie die erforderlichen Parameter visitorCode und goalId an.
Die Conversion-Tracking-Anfrage wird zusammen mit der nächsten geplanten Tracking-Anfrage gesendet, die das SDK in regelmäßigen Abständen sendet (definiert durch tracking_interval_millisecond). Wenn Sie die Anfrage sofort senden möchten, verwenden Sie die Methode Flush() mit dem Parameter instant=true.
Ereignisse an Analyselösungen senden
Um Conversions zu verfolgen und Expositionsereignisse an Ihre Kundenanalyselösung zu senden, müssen Sie zunächst Kameleoon im Hybridmodus implementieren. Verwenden Sie dann die Methode GetEngineTrackingCode().
Die Methode GetEngineTrackingCode() ruft den eindeutigen Tracking-Code ab, der zum Senden von Expositionsereignissen an Ihre Analyselösung erforderlich ist. Mit dieser Methode können Sie Ereignisse aufzeichnen und an die gewünschte Analyseplattform senden.
Cross-Device-Experimente
Um Besucher zu unterstützen, die von mehreren Geräten aus auf eine App zugreifen, ermöglicht Kameleoon die Synchronisierung zuvor gesammelter Besucherdaten über jedes der Geräte des Besuchers hinweg und die Abstimmung ihres Besuchsverlaufs zwischen Geräten durch Cross-Device-Experimente. Fallstudien und detaillierte Informationen darüber, wie Kameleoon Daten geräteübergreifend verarbeitet, finden Sie im Artikel über Cross-Device-Experimente.
Custom Data geräteübergreifend synchronisieren
Obwohl die Synchronisierung benutzerdefinierter Zuordnungen verwendet wird, um Besucherdaten zwischen Geräten abzugleichen, ist sie nicht immer erforderlich. Im Folgenden finden Sie zwei Szenarien, in denen eine Synchronisierung benutzerdefinierter Zuordnungen nicht erforderlich ist:
Dieselbe Benutzer-ID auf allen Geräten
Wenn dieselbe Benutzer-ID konsistent auf allen Geräten verwendet wird, wird die Synchronisierung automatisch ohne Synchronisierung der benutzerdefinierten Zuordnung gehandhabt. Es genügt, die Methode GetRemoteVisitorData() aufzurufen, wenn Sie die zwischen mehreren Geräten gesammelten Daten synchronisieren möchten.
Multi-Server-Instanzen mit konsistenten IDs
In komplexen Setups, die mehrere Server umfassen (z. B. verteilte Server-Instanzen), bei denen dieselbe Benutzer-ID serverübergreifend verfügbar ist, ist die Synchronisierung zwischen Servern (mit GetRemoteVisitorData()) ohne zusätzliche Synchronisierung der benutzerdefinierten Zuordnung ausreichend.
Kunden, die zusätzliche Daten benötigen, können sich an die Beschreibung der Methode GetRemoteVisitorData() wenden, um weitere Anleitungen zu erhalten. Im folgenden Code wird angenommen, dass derselbe eindeutige Bezeichner (in diesem Fall der visitorCode, der auch als userId bezeichnet werden kann) konsistent zwischen den beiden Geräten für eine genaue Datenabfrage verwendet wird.
Wenn Sie gesammelte Daten in Echtzeit synchronisieren möchten, müssen Sie den Geltungsbereich Visitor für Ihre Custom Data wählen.
// In this example Custom data with index `90` was set to "Visitor" scope on Kameleoon Platform.
const int VisitorScopeCustomDataIndex = 90;
kameleoonClient.AddData(visitorCode, new CustomData(VisitorScopeCustomDataIndex, "your data"));
kameleoonClient.Flush(visitorCode);
// Before working with the data, call the `GetRemoteVisitorData` method.
await kameleoonClient.GetRemoteVisitorData(visitorCode);
// After calling the method, the SDK on Device B will have access to CustomData of Visitor scope as defined on Device A.
// So, "your data" will be available for targeting and tracking the visitor.
Custom Data für Sitzungszusammenführung verwenden
Cross-Device-Experimente ermöglichen das Kombinieren des Verlaufs eines Besuchers über jedes seiner Geräte hinweg (Verlaufsabstimmung). Die Verlaufsabstimmung ermöglicht das Zusammenführen verschiedener Besuchersitzungen zu einer. Um den Besuchsverlauf abzugleichen, verwenden Sie CustomData, um eine eindeutige Kennung für den Besucher bereitzustellen. Weitere Informationen finden Sie in der zugehörigen Dokumentation.
Nachdem die geräteübergreifende Abstimmung aktiviert wurde, ruft der Aufruf von GetRemoteVisitorData() mit dem Parameter userId alle bekannten Daten für einen bestimmten Benutzer ab.
Sitzungen mit derselben Kennung werden in einem Experiment immer dieselbe Variation sehen. In der Besucher-Ansicht der Ergebnisseiten Ihres Experiments erscheinen diese Sitzungen als ein einzelner Besucher.
Die SDK-Konfiguration stellt sicher, dass zugeordnete Sitzungen immer dieselbe Variation des Experiments sehen. Es gibt jedoch einige Einschränkungen hinsichtlich der geräteübergreifenden Variation-Zuweisung. Diese Einschränkungen sind hier beschrieben.
Folgen Sie dem Leitfaden activating cross-device history reconciliation, um Ihre Custom Data auf der Kameleoon-Plattform einzurichten.
Anschließend können Sie das SDK normal verwenden. Die folgenden Methoden können im Zusammenhang mit der Sitzungszusammenführung hilfreich sein:
GetRemoteVisitorData() mit hinzugefügtem UniqueIdentifier(true) - um Daten für alle verknüpften Besucher abzurufen.
TrackConversion() oder Flush() mit hinzugefügten UniqueIdentifier(true)-Daten - um einige Daten für einen bestimmten Besucher zu verfolgen, der mit einem anderen Besucher verknüpft ist.
Hier ist ein Beispiel für die Verwendung von Custom Data für die Sitzungszusammenführung.
// In this example, `91` represents the index of the Custom Data
// configured as a unique identifier in Kameleoon.
const int MappingIndex = 91;
const string FeatureKey = "ff123";
// 1. Before the visitor is authenticated
// Retrieve the variation for an unauthenticated visitor.
// Assume `anonymousVisitorCode` is the randomly generated ID for that visitor.
Variation anonymousVariation = kameleoonClient.GetVariation(anonymousVisitorCode, FeatureKey);
// 2. After the visitor is authenticated
// Assume `userId` is the visitor code of the authenticated visitor.
kameleoonClient.AddData(anonymousVisitorCode, new CustomData(MappingIndex, userId));
kameleoonClient.Flush(anonymousVisitorCode, instant=true);
// Indicate that `userId` is a unique identifier.
kameleoonClient.AddData(userId, new UniqueIdentifier(true));
// 3. After the visitor has been authenticated
// Retrieve the variation for the `userId`, which will match the anonymous visitor code's variation.
Variation userVariation = kameleoonClient.GetVariation(userId, FeatureKey);
bool isSameVariation = userVariation.Key == anonymousVariation.Key; // true
// The `userId` and `anonymousVisitorCode` are now linked and tracked as a single visitor.
kameleoonClient.TrackConversion(userId, 123, 10.0);
// Additionally, the linked visitors will share all fetched remote visitor data.
await kameleoonClient.GetRemoteVisitorData(userId);
In diesem Beispiel hat die Anwendung eine Login-Seite. Da die Benutzer-ID zum Zeitpunkt der Anmeldung unbekannt ist, wird eine anonyme Besucherkennung verwendet, die von der Methode GetVisitorCode() generiert wurde. Nachdem sich der Benutzer angemeldet hat, wird der anonyme Besucher mit der Benutzer-ID verknüpft und als eindeutige Kennung für den Besucher verwendet.
Einen benutzerdefinierten Bucketing-Schlüssel verwenden
Standardmäßig verwendet Kameleoon eine eindeutige, anonyme Besucher-ID (visitorCode), um Benutzer feature flag-Variations zuzuweisen. Diese ID wird normalerweise auf dem Gerät des Benutzers generiert und gespeichert (in einem Browser-Cookie für clientseitige und serverseitige SDKs – in dauerhaftem Speicher für mobile SDKs). In bestimmten Szenarien müssen Sie jedoch möglicherweise sicherstellen, dass alle Benutzer derselben Organisation dieselbe Variante eines feature flag sehen.
Die Option Custom Bucketing Key ermöglicht es Ihnen, dieses Standardverhalten zu überschreiben, indem Sie Ihre eigene benutzerdefinierte Kennung für das Bucketing bereitstellen. Diese Überschreibung stellt sicher, dass die Zuweisungslogik von Kameleoon Ihren angegebenen Schlüssel anstelle des Standard-visitorCode verwendet.
Anwendungsfälle
Die Verwendung eines benutzerdefinierten Bucketing-Schlüssels ist unerlässlich, um Konsistenz und Genauigkeit Ihrer feature flag-Zuweisungen zu wahren, insbesondere in diesen Situationen:
- Experimente auf Konto- oder Organisationsebene: Für B2B-Produkte oder Szenarien, in denen Sie alle Benutzer derselben Organisation derselben Variation zuweisen möchten, können Sie eine Kennung wie eine
accountId verwenden. Benutzerdefinierte Bucketing-Schlüssel sind entscheidend für A/B-Tests von Funktionen, die ein gesamtes Team oder Unternehmen betreffen.
Durch die Implementierung eines benutzerdefinierten Bucketing-Schlüssels gewährleisten Sie eine größere Konsistenz und Genauigkeit in Ihren Experimenten, was zu zuverlässigeren Ergebnissen und einer besseren Benutzererfahrung führt.
Technische Details
Wenn Sie einen benutzerdefinierten Bucketing-Schlüssel für ein feature flag konfigurieren, stellen Sie Kameleoon eine bestimmte Kennung aus den Daten Ihrer Anwendung zur Verfügung:
kameleoonClient.AddData(visitorCode, new CustomData(index, "newVisitorCode"));
- Bereitstellung des benutzerdefinierten Schlüssels: Sie übergeben Ihre benutzerdefinierte Kennung mit der Methode
AddData() an das Kameleoon SDK. In dieser Methode übergeben Sie Ihren gewählten benutzerdefinierten Bucketing-Schlüssel als CustomData-Objekt. Hier bezieht sich newVisitorCode auf die Kennung, die Sie für Ihr Bucketing verwenden möchten (z. B. die neue userId oder accountId).
Damit der benutzerdefinierte Bucketing-Schlüssel korrekt funktioniert, muss er auch während des Prozesses der Flag-Erstellung oder -Bearbeitung für das feature flag definiert und konfiguriert werden. Ohne diese entsprechende Konfiguration wendet das Bucketing des SDK Ihren benutzerdefinierten Schlüssel nicht an. Detaillierte Anweisungen zum Einrichten in Kameleoon finden Sie in diesem Artikel.
- Bucketing-Logik: Sobald ein benutzerdefinierter Bucketing-Schlüssel über die Methode
AddData() bereitgestellt wird, verwenden alle Hash-Berechnungen zur Zuweisung von Benutzern zu Variations diesen newVisitorCode (Ihren benutzerdefinierten Schlüssel) anstelle des Standard-visitorCode. Die Verwendung des newVisitorCode bedeutet, dass die Bucketing-Entscheidung an Ihre benutzerdefinierte Kennung gebunden ist, was konsistente Zuweisungen über verschiedene Kontexte hinweg gewährleistet, in denen diese Kennung vorhanden ist.
- Datenverfolgung und Analyse: Es ist wichtig zu beachten, dass zwar der
newVisitorCode (Ihr benutzerdefinierter Schlüssel) für Bucketing-Entscheidungen verwendet wird, alle nachfolgenden Daten (z. B. Tracking-Ereignisse und Conversions) jedoch gesendet und mit dem ursprünglichen visitorCode verknüpft werden. Diese Trennung stellt sicher, dass Ihre Analysen die individuellen Benutzerreisen und Interaktionen im breiteren Kontext Ihres Experiments genau widerspiegeln, auch wenn das Bucketing auf einer höheren Ebene (wie einem Konto) oder über mehrere Geräte/Sitzungen hinweg durchgeführt wird. Ihre ursprünglichen Besucherdaten bleiben für umfassende Berichte unverändert.
Technische Anforderungen
Um einen benutzerdefinierten Bucketing-Schlüssel effektiv zu verwenden:
- Der Schlüssel muss ein
string sein.
- Er muss für die Entität, die Sie bucketen möchten, eindeutig sein (z. B. wenn Sie eine
userId verwenden, sollte die ID jedes Benutzers eindeutig sein).
- Der Schlüssel muss dem SDK genau zu dem Zeitpunkt zur Verfügung stehen, an dem die feature flag-Entscheidung für diesen Benutzer oder diese Anfrage ausgewertet wird.
Targeting-Bedingungen
Die Kameleoon SDKs unterstützen eine Vielzahl vordefinierter Targeting-Bedingungen, die Sie zum Targeting von Benutzern in Ihren Kampagnen verwenden können. Die Liste der von diesem SDK unterstützten Bedingungen finden Sie unter use visit history to target users.
Sie können auch Ihre eigenen externen Daten zum Targeting von Benutzern verwenden.
Protokollierung
Das SDK generiert Logs, um verschiedene interne Prozesse und Probleme widerzuspiegeln.
Log-Level
Das SDK unterstützt die Konfiguration der Begrenzung der Protokollierung durch ein Log-Level.
// The `None` log level does not allow logging.
Kameleoon.Logging.KameleoonLogger.LogLevel = Kameleoon.Logging.LogLevel.None;
// The `Error` log level only allows logging issues that may affect the SDK's primary behavior.
Kameleoon.Logging.KameleoonLogger.LogLevel = Kameleoon.Logging.LogLevel.Error;
// The `Warning` log level allows logging issues which may require additional attention.
// It extends the `Error` log level.
// The `Warning` log level is a default log level.
Kameleoon.Logging.KameleoonLogger.LogLevel = Kameleoon.Logging.LogLevel.Warning;
// The `Info` log level allows logging general information on the SDK's internal processes.
// It extends the `Warning` log level.
Kameleoon.Logging.KameleoonLogger.LogLevel = Kameleoon.Logging.LogLevel.Info;
// The `DEBUG` level logs additional details about the SDK’s internal processes and extends the `INFO` level
// with more granular. diagnostic output.
// This information is not intended for end-user interpretation but can be sent to our support team
// to assist with internal troubleshooting.
Kameleoon.Logging.KameleoonLogger.LogLevel = Kameleoon.Logging.LogLevel.Debug;
Benutzerdefinierte Behandlung von Logs
Das SDK schreibt seine Logs standardmäßig in die Konsolenausgabe. Dieses Verhalten kann überschrieben werden.
Die Begrenzung der Protokollierung durch ein Log-Level erfolgt unabhängig von der Logik der Log-Behandlung.
class CustomLogger : Kameleoon.Logging.ILogger
{
private readonly Microsoft.Extensions.Logging.ILogger inner;
public CustomLogger(Microsoft.Extensions.Logging.ILogger inner)
{
this.inner = inner;
}
// `Log` method accepts logs from the SDK
public void Log(Kameleoon.Logging.LogLevel level, string message)
{
// Custom log handling logic here. For example:
switch (level)
{
case Kameleoon.Logging.LogLevel.Error:
Microsoft.Extensions.Logging.LoggerExtensions.LogError(inner, message);
break;
case Kameleoon.Logging.LogLevel.Warning:
Microsoft.Extensions.Logging.LoggerExtensions.LogWarning(inner, message);
break;
case Kameleoon.Logging.LogLevel.Info:
Microsoft.Extensions.Logging.LoggerExtensions.LogInformation(inner, message);
break;
case Kameleoon.Logging.LogLevel.Debug:
Microsoft.Extensions.Logging.LoggerExtensions.LogDebug(inner, message);
break;
}
}
}
// Log level filtering is applied separately from log handling logic.
// The custom logger will only accept logs that meet or exceed the specified log level.
// Ensure the log level is set correctly.
Kameleoon.Logging.KameleoonLogger.LogLevel = Kameleoon.Logging.LogLevel.Debug; // Optional; defaults to `LogLevel.Warning`.
Kameleoon.Logging.KameleoonLogger.Logger = new CustomLogger();
Referenz
Dies ist die vollständige Referenzdokumentation des C# SDK.
Initialisierung
Create()
Um das SDK zu verwenden, müssen Sie es initialisieren. Ihre App interagiert mit dem SDK über die Klasse KameleoonClient, die in Kameleoon.IKameleoonClient zu finden ist. Sie können dieses Objekt mit der statischen Methode Kameleoon.KameleoonClientFactory Create() erstellen.
using Kameleoon;
string siteCode = "a8st4f59bj";
try {
// Read from default configuration path: "/etc/kameleoon/client-csharp.conf"
IKameleoonClient kameleoonClient = KameleoonClientFactory.Create(siteCode);
} catch (KameleoonException.SiteCodeIsEmpty e) {
// indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
// indicates that provided clientId / clientSecret are not valid
}
try {
IKameleoonClient kameleoonClient = KameleoonClientFactory.Create(siteCode, "custom/file/path/client-csharp.conf");
} catch (KameleoonException.SiteCodeIsEmpty e) {
// indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
// indicates that provided clientId / clientSecret are not valid
}
try {
KameleoonClientConfig config = new KameleoonClientConfig(
clientId: "<clientId>", // mandatory
clientSecret: "<clientId>", // mandatory
refreshIntervalMinute: 60, // in minutes, optional (60 minutes by default)
sessionDurationMinute: 30, // in minutes, optional (30 minutes by default)
defaultTimeoutMillisecond: 10_000, // in milliseconds, optional (10000 ms by default)
trackingIntervalMilliseconds: 1000, // in milliseconds, optional (1000 ms by default)
environment: "development", // optional
topLevelDomain: "example.com", // mandatory if you use hybrid mode (engine or web experiments)
proxyHost: "proxy.host.com" // optional
networkDomain: "example.com", // optional
);
IKameleoonClient kameleoonClient = KameleoonClientFactory.Create(siteCode, config);
} catch (KameleoonException.SiteCodeIsEmpty e) {
// indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
// indicates that provided clientId / clientSecret are not valid
}
Argumente
| Name | Typ | Beschreibung | Standard |
|---|
| siteCode (erforderlich) | string | Dies ist ein eindeutiger Schlüssel des Kameleoon-Projekts, das Sie mit dem SDK verwenden. | |
| configurationFilePath (optional) | string | Pfad zur SDK-Konfigurationsdatei. | /etc/kameleoon/client-csharp.conf |
| kameleoonConfig (optional) | KameleoonClientConfig | Konfigurations-SDK-Objekt, das Sie anstelle einer Konfigurationsdatei übergeben können. | null |
Rückgabewert
| Typ | Beschreibung |
|---|
IKameleoonClient | Eine Instanz der Klasse KameleoonClient, die zur Verwaltung Ihrer Experimente und feature flags verwendet wird. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
KameleoonException.ConfigCredentialsInvalid | Ausnahme, die anzeigt, dass die angeforderten Anmeldeinformationen nicht in der Konfigurationsdatei oder als Argumente der Methode bereitgestellt wurden. |
KameleoonException.SiteCodeIsEmpty | Ausnahme, die anzeigt, dass der angegebene Site-Code eine leere Zeichenfolge ist, was ein ungültiger Wert ist. |
WaitInit()
WaitInit() wartet auf die Initialisierung des Kameleoon-Clients. Mit dieser Methode können Sie überprüfen, ob der Client erfolgreich initialisiert wurde, bevor Sie mit anderen Operationen fortfahren.
using static Kameleoon;
try {
await kameleoonClient.WaitInit();
} catch (Exception exception) {
// indicates that client could not be initialized due to the thrown exception.
}
Rückgabewert
| Typ | Beschreibung |
|---|
| Task | Die Aufgabe wird abgeschlossen, wenn der Client erfolgreich initialisiert wurde. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| Exception | Ausnahme, die anzeigt, dass der Client nicht ordnungsgemäß initialisiert wurde und noch nicht verwendet werden kann. |
Feature flags und Variations
IsFeatureActive()
- 📨 Sendet Tracking-Daten an Kameleoon (abhängig vom Parameter
track)
Diese Methode hieß zuvor ActivateFeature, die in der SDK-Version 4.0.0 entfernt wurde.
Um einen Feature-Toggle zu aktivieren, rufen Sie die Methode IsFeatureActive auf.
Diese Methode erfordert einen visitorCode und einen featureKey (oder featureID), um zu prüfen, ob ein Benutzer auf eine bestimmte Funktion zugreifen kann.
Wenn der Benutzer noch nie mit dieser Funktion verknüpft wurde, entscheidet das SDK zufällig, ob es sie aktiviert, und gibt entweder true (der Benutzer kann auf die Funktion zugreifen) oder false (der Benutzer kann nicht zugreifen) zurück. Wenn der Benutzer mit dem angegebenen visitorCode bereits mit dieser Funktion verknüpft ist, gibt das System den vorherigen Wert des featureFlag zurück.
Stellen Sie sicher, dass Sie in Ihrem Code eine angemessene Fehlerbehandlung einbeziehen, wie im Beispiel gezeigt, um potenzielle Fehler abzufangen.
Wenn Sie einen visitorCode angeben, verwendet die Methode IsFeatureActive() ihn als eindeutige Besucherkennung, was für Cross-Device-Experimente nützlich ist. Wenn Sie einen visitorCode angeben und den Parameter isUniqueIdentifier auf true setzen, verknüpft das SDK die geleerten Daten mit dem Besucher, der mit der angegebenen Kennung verknüpft ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in besonderen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch Sitzungszusammenführung mit diesem Besucher verknüpft ist.
Kameleoon verwendet Tracking, um Sitzungen und Besucher zu zählen, wenn Sie bestimmte Methoden aufrufen, z. B. IsFeatureActive(), GetVariation() oder GetVariations().Verwenden Sie den Standardwert true für den Parameter track, wenn Sie Besucher einer Variation aussetzen und sie zählen müssen. Setzen Sie den Parameter track nur dann auf false, wenn Sie diese Methoden aufrufen, bevor Sie Besucher aussetzen.Wenn Sie beispielsweise GetVariations() aufrufen, um alle Variations abzurufen, bevor Sie Besucher aussetzen, setzen Sie den Parameter track auf false. Diese Einstellung verhindert, dass Kameleoon eine Sitzung vorzeitig zählt. Sie können das Tracking dann später auslösen, wenn Sie den Besucher explizit aussetzen.Kameleoon sendet Tracking-Daten standardmäßig jede Sekunde. Sie können dieses Intervall mit der Tracking-Intervall-Konfigurationsoption auf bis zu fünf Sekunden konfigurieren. Kameleoon gruppiert Tracking-Ereignisse in einer einzigen Sitzung, solange das Intervall zwischen Ereignissen weniger als 30 Minuten beträgt. Wenn mehr als 30 Minuten zwischen Tracking-Ereignissen vergehen, zählt Kameleoon die Ereignisse als separate Sitzungen. Ein Besuch erscheint 30 Minuten nach dem letzten aufgezeichneten Ereignis in der Sitzung in Ihren Berichten.
string visitorCode = kameleoonClient.GetVisitorCode(Request, Response, "example.com");
string featureKey = "new_checkout";
bool hasNewCheckout = false;
try {
hasNewCheckout = kameleoonClient.IsFeatureActive(visitorCode, featureKey);
// disabling tracking
hasNewCheckout = kameleoonClient.IsFeatureActive(visitorCode, featureKey, track: false);
}
catch (KameleoonException.FeatureNotFound e) {
// Feature toggle not yet activated on Kameleoon's side - we consider the feature inactive.
hasNewCheckout = false;
}
catch (Exception e) {
// This is a generic Exception handler which will handle all exceptions.
Console.WriteLine("Exception occured");
}
if (hasNewCheckout)
{
// Implement new checkout code here.
}
Die Methode IsFeatureActive() bewertet die ausgelieferte Variante, nicht den Status des Master-Flags. Wenn Sie Regeln ausschließen, verwendet die Methode den Standardzustand Then, for everyone else serve. Wenn Sie für diesen Standardzustand Off auswählen, gibt die Methode immer false zurück, selbst wenn das Master-feature flag On ist.
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode | string | Eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch. |
| featureKey | string | Schlüssel der Funktion, die Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch. |
| isUniqueIdentifier (Veraltet) | bool | Ein optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional. |
| track | bool | Ein optionaler Parameter, um das Tracking der Feature-Auswertung zu aktivieren oder zu deaktivieren (standardmäßig true). |
Rückgabewert
| Typ | Beschreibung |
|---|
| bool | Wert der Funktion, die für einen bestimmten visitorCode registriert ist. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| KameleoonException.VisitorCodeInvalid | Ausnahme, die anzeigt, dass der angegebene Visitor-Code nicht gültig ist. (Er ist entweder leer oder länger als 255 Zeichen). |
| KameleoonException.FeatureNotFound | Ausnahme, die anzeigt, dass die angeforderte Feature-ID nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist in der Regel normal und bedeutet, dass das feature flag auf der Kameleoon-Seite noch nicht aktiviert wurde (aber der Code, der die Funktion implementiert, bereits auf der Webanwendungsseite bereitgestellt ist). |
GetVariation()
- 📨 Sendet Tracking-Daten an Kameleoon (abhängig vom Parameter
track)
Ruft die Variation ab, die einem bestimmten Besucher für ein bestimmtes feature flag zugewiesen ist.
Diese Methode nimmt visitorCode und featureKey als obligatorische Argumente. Das Argument track ist optional und standardmäßig auf true gesetzt.
Sie gibt die zugewiesene Variation für den Besucher zurück. Wenn der Besucher mit keinen feature flag-Regeln verknüpft ist, gibt die Methode die Standard-Variation für das angegebene feature flag zurück.
Stellen Sie sicher, dass in Ihrem Code eine angemessene Fehlerbehandlung implementiert ist, um potenzielle Ausnahmen zu verwalten.
Die Standard-Variation bezieht sich auf die Variation, die einem Besucher zugewiesen wird, wenn er keine vordefinierten Delivery-Regeln für ein feature flag erfüllt. Mit anderen Worten, es ist die Fallback-Variation, die auf alle Benutzer angewendet wird, die nicht durch spezifische Regeln angesprochen werden. Sie wird als Variation im Abschnitt “Then, for everyone else…” in einer Verwaltungsoberfläche dargestellt.
const string featureKey = "new_checkout";
Variation variation;
try
{
variation = kameleoonClient.GetVariation(visitorCode, featureKey);
// disabling tracking
variation = kameleoonClient.GetVariation(visitorCode, featureKey, false);
} catch (KameleoonException.FeatureNotFound e)
{
// The error has occurred; the feature flag isn't found in the current configuration.
} catch (KameleoonException.FeatureEnvironmentDisabled e)
{
// The feature flag is disabled for the environment.
} catch (KameleoonException.VisitorCodeInvalid e)
{
// The visitor code you passed to the method is invalid and can't be accepted by SDK.
}
// Fetch a variable value for the assigned variation.
string title = variation.Variables["title"].Value;
switch (variation.Key)
{
case "on":
// Main variation key is selected for visitorCode.
break;
case "alternative_variation":
// Alternative variation key
break;
default:
// Default variation key
break;
}
Argumente
| Name | Typ | Beschreibung | Standard |
|---|
| visitorCode (erforderlich) | string | Eindeutige Kennung des Besuchers. | |
| featureKey (erforderlich) | string | Schlüssel der Funktion, die Sie einem Besucher aussetzen möchten. | |
| track (optional) | bool | Ein optionaler Parameter, um das Tracking der Feature-Auswertung zu aktivieren oder zu deaktivieren. | true |
Rückgabewert
| Typ | Beschreibung |
|---|
Variation | Eine einem bestimmten Besucher für ein bestimmtes feature flag zugewiesene Variation. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen. |
FeatureNotFound | Ausnahme, die anzeigt, dass der angeforderte Feature-Schlüssel nicht in der internen Konfiguration des SDK gefunden wurde. Dies bedeutet in der Regel, dass das feature flag in der Kameleoon-App nicht aktiviert ist (aber der Code, der die Funktion implementiert, bereits in der Anwendung bereitgestellt ist). |
FeatureEnvironmentDisabled | Ausnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development). |
GetVariations()
- 📨 Sendet Tracking-Daten an Kameleoon (abhängig vom Parameter
track)
Ruft eine Map von Variation-Objekten ab, die einem bestimmten Besucher über alle feature flags hinweg zugewiesen sind.
Diese Methode iteriert über alle verfügbaren feature flags und gibt die zugewiesene Variation für jedes flag zurück, das mit dem angegebenen Besucher verknüpft ist. Sie nimmt visitorCode als obligatorisches Argument, während onlyActive und track optional sind.
- Wenn
onlyActive auf true gesetzt ist, gibt die Methode GetVariations() die feature flag-Variations zurück, sofern der Benutzer nicht mit der Variation off gebucketet ist.
- Der Parameter
track steuert, ob die Methode die Variation-Zuweisungen verfolgt. Standardmäßig ist er auf true gesetzt. Wenn er auf false gesetzt ist, wird das Tracking deaktiviert.
Die zurückgegebene Map besteht aus feature flag-Schlüsseln als Schlüssel und ihrer entsprechenden Variation als Werte. Wenn keine Variation für ein feature flag zugewiesen ist, gibt die Methode die Standard-Variation für dieses flag zurück.
Eine angemessene Fehlerbehandlung sollte implementiert werden, um potenzielle Ausnahmen zu verwalten.
Die Standard-Variation bezieht sich auf die Variation, die einem Besucher zugewiesen wird, wenn er keine vordefinierten Delivery-Regeln für ein feature flag erfüllt. Mit anderen Worten, es ist die Fallback-Variation, die auf alle Benutzer angewendet wird, die nicht durch spezifische Regeln angesprochen werden. Sie wird als Variation im Abschnitt “Then, for everyone else…” in einer Verwaltungsoberfläche dargestellt.
IReadOnlyDictionary<string, Types.Variation> variations;
try
{
variations = kameleoonClient.GetVariations(visitorCode);
// only active variations
variations = kameleoonClient.GetVariations(visitorCode, true);
// disable tracking
variations = kameleoonClient.GetVariations(visitorCode, track: false);
}
catch (VisitorCodeInvalid e)
{
// Handle exception
}
Argumente
| Name | Typ | Beschreibung | Standard |
|---|
| visitorCode (erforderlich) | string | Eindeutige Kennung des Besuchers. | |
| onlyActive (optional) | bool | Ein optionaler Parameter, der angibt, ob Variations für aktive (true) oder alle (false) feature flags zurückgegeben werden sollen. | false |
| track (optional) | bool | Ein optionaler Parameter, um das Tracking der Feature-Auswertung zu aktivieren oder zu deaktivieren. | true |
Rückgabewert
| Typ | Beschreibung |
|---|
IReadOnlyDictionary<string, Variation> | Map, die die zugewiesenen Variation-Objekte der feature flags unter Verwendung der Schlüssel der entsprechenden Features enthält. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen. |
GetFeatureList()
Diese Methode hieß zuvor ObtainFeatureList(), die in der SDK-Version 4.0.0 entfernt wurde.
Gibt eine Liste der feature flag-Schlüssel zurück, die derzeit für das SDK verfügbar sind.
const featureFlagIds = kameleoonClient.GetFeatureList()
Rückgabewert
| Typ | Beschreibung |
|---|
List<string> | Liste der feature flag-Schlüssel |
SetForcedVariation()
Mit dieser Methode können Sie einem Benutzer programmgesteuert eine bestimmte Variation zuweisen und dabei den Standard-Auswertungsprozess umgehen. Dies ist besonders wertvoll für kontrollierte Experimente, bei denen die übliche Auswertungslogik nicht erforderlich ist oder übersprungen werden muss. Es kann auch in Szenarien wie Debugging oder benutzerdefinierten Tests hilfreich sein.
Wenn eine forcierte Variation gesetzt wird, überschreibt sie die Echtzeit-Auswertungslogik von Kameleoon. Prozesse wie Segmentierung, Targeting-Bedingungen und algorithmische Berechnungen werden übersprungen. Um Segmentierung und Targeting-Bedingungen während eines Experiments beizubehalten, setzen Sie stattdessen forceTargeting=false.
Simulierte Variations haben in der Ausführungsreihenfolge immer Vorrang. Wenn eine simulierte Variation-Berechnung ausgelöst wird, wird sie zuerst vollständig verarbeitet und abgeschlossen.
Eine forcierte Variation wird genauso behandelt wie eine ausgewertete Variation. Sie wird in Analysen verfolgt und im Benutzerkontext wie jede standardmäßig ausgewertete Variation gespeichert, was die Konsistenz in der Berichterstattung gewährleistet.
Die Methode kann unter bestimmten Bedingungen Ausnahmen auslösen (z. B. ungültige Parameter, Benutzerkontext oder interne Probleme). Eine angemessene Ausnahmebehandlung ist unerlässlich, um sicherzustellen, dass Ihre Anwendung stabil und widerstandsfähig bleibt.
Es ist wichtig, forcierte Variations von simulierten Variations zu unterscheiden:
- Forcierte Variations: Sind spezifisch für ein einzelnes Experiment.
- Simulierte Variations: Beeinflussen das Gesamtergebnis des feature flag.
const int experimentId = 9516;
try
{
// Forcing the variation "on" in the experiment 9516 for the visitor
kameleoonClient.SetForcedVariation(visitorCode, experimentId, "on");
// Forcing the variation "on" while preserving segmentation and targeting conditions during the experiment
kameleoonClient.SetForcedVariation(visitorCode, experimentId, "on", false);
// Resetting the forced variation for the experiment 9516 for the visitor
kameleoonClient.SetForcedVariation(visitorCode, experimentId, null);
}
catch (KameleoonException ex)
{
// Handling the exception
}
Argumente
| Name | Typ | Beschreibung | Standard |
|---|
| visitorCode (erforderlich) | string | Eindeutige Kennung des Besuchers. | |
| experimentId (erforderlich) | int | Experiment Id, die während des Auswertungsprozesses angesprochen und ausgewählt wird. | |
| variationKey (erforderlich) | string | Variation Key, der einer Variation entspricht, die als zurückgegebener Wert für das Experiment forciert werden soll. Wenn der Wert null ist, wird die forcierte Variation zurückgesetzt. | |
| forceTargeting (optional) | bool | Gibt an, ob das Targeting für das Experiment forciert und übersprungen werden soll (true) oder wie im Standard-Auswertungsprozess angewendet werden soll (false). | true |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen. |
FeatureExperimentNotFound | Ausnahme, die anzeigt, dass die angeforderte Experiment-ID nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist in der Regel normal und bedeutet, dass das der Regel entsprechende Experiment auf der Kameleoon-Seite noch nicht aktiviert wurde. |
FeatureVariationNotFound | Ausnahme, die anzeigt, dass der angeforderte Variation-Schlüssel (Id) nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist in der Regel normal und bedeutet, dass das der Variation entsprechende Experiment auf der Kameleoon-Seite noch nicht aktiviert wurde. |
In den meisten Fällen muss nur der grundlegende Fehler KameleoonException behandelt werden, wie im Beispiel gezeigt. Wenn jedoch unterschiedliche Arten von Fehlern eine Reaktion erfordern, behandeln Sie jeden basierend auf den spezifischen Anforderungen separat. Darüber hinaus können für erhöhte Zuverlässigkeit allgemeine Sprachfehler durch das Einbeziehen von Exception behandelt werden.
EvaluateAudiences()
- 📨 Sendet Tracking-Daten an Kameleoon
Diese Methode wertet Besucher anhand aller verfügbaren Audiences Explorer-Segmente aus und verfolgt diejenigen, die übereinstimmen.
EvaluateAudiences() sollte aufgerufen werden, nachdem alle relevanten Besucherdaten gesetzt oder aktualisiert wurden, und kurz vor dem Abrufen einer Feature-Variation oder dem Prüfen eines feature flag. Dieser Ansatz stellt sicher, dass der Besucher anhand der aktuellsten verfügbaren Daten ausgewertet wird, was eine genaue Zielgruppenzuordnung basierend auf allen Kriterien ermöglicht.
Nach dem Aufruf dieser Methode können Sie eine detaillierte Analyse der Segmentleistung im Audiences Explorer durchführen.
try
{
kameleoonClient.EvaluateAudiences(visitorCode);
}
catch (KameleoonException ex)
{
// Handling the exception
}
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode (erforderlich) | string | Eindeutige Kennung des Besuchers. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen. |
In den meisten Fällen muss nur der grundlegende Fehler KameleoonException behandelt werden, wie im Beispiel gezeigt. Wenn jedoch unterschiedliche Arten von Fehlern eine Reaktion erfordern, behandeln Sie jeden basierend auf den spezifischen Anforderungen separat. Darüber hinaus können für erhöhte Zuverlässigkeit allgemeine Sprachfehler durch das Einbeziehen von Exception behandelt werden.
GetDataFile()
DataFile dataFile = kameleoonClient.GetDataFile();
Rückgabewert
Besucherdaten
GetVisitorCode()
Diese Methode hieß zuvor ObtainVisitorCode, die in der SDK-Version 4.0.0 entfernt wurde.
Um den Kameleoon-visitorCode für den aktuellen Besucher zu erhalten, verwenden Sie die Methode GetVisitorCode(). Diese Methode ist in Umgebungen, in denen Front-End- und Back-End-Systeme Benutzer konsistent identifizieren müssen, von entscheidender Bedeutung. So funktioniert es:
-
Suchen Sie nach einem kameleoonVisitorCode-Cookie oder Abfrageparameter in der aktuellen HTTP-Anfrage. Wenn Sie eines finden, verwenden Sie dies als Besucherkennung und überspringen Sie den nächsten Schritt.
-
Wenn Sie kein Cookie oder keinen Parameter finden, erstellen Sie entweder zufällig eine neue Kennung oder verwenden Sie das Argument defaultVisitorCode, falls es bereitgestellt wird. Auf diese Weise können Sie Ihre Kennungen als Visitor-Codes verwenden, was die Verknüpfung von Kameleoon-Besuchern mit Ihren eigenen Benutzern erleichtert, ohne dass zusätzliche Lookups erforderlich sind.
-
Setzen Sie das serverseitige kameleoonVisitorCode-Cookie mit dem Kennungswert. Die Methode gibt diesen Kennungswert zurück.
Wenn Sie Ihren eigenen visitorCode angeben, stellen Sie sicher, dass er eindeutig ist! Beachten Sie auch, dass die Länge des visitorCode auf 255 Zeichen begrenzt ist. Die Verwendung einer Kennung mit zu vielen Zeichen führt zu einer Ausnahme.
Mit der Methode GetVisitorCode() können Sie simulierte Variations für einen Besucher festlegen. Wenn Cookies (aus einer Anfrage oder einem Dokument) den Schlüssel kameleoonSimulationFFData enthalten, wird der Standard-Auswertungsprozess umgangen. Stattdessen gibt die Methode direkt eine Variation basierend auf den bereitgestellten Daten zurück.Sie können Simulationen auf zwei Arten anwenden:
- Automatisch (empfohlen): Wenn Sie Kameleoon Web Experimentation oder das SDK im Hybridmodus verwenden, wird das Cookie automatisch erstellt, wenn die Anzeige einer Variante mit dem Simulation Panel simuliert wird.
- Manuell: Setzen Sie das
kameleoonSimulationFFData-Cookie manuell.
Es ist wichtig, simulierte Variations von forcierten Variations zu unterscheiden:
- Simulierte Variations: Beeinflussen das Gesamtergebnis des feature flag.
- Forcierte Variations: Sind spezifisch für ein einzelnes Experiment.
⚙️ Manuelles SetupBitte stellen Sie sicher, dass das kameleoonSimulationFFData-Cookie diesem Format folgt:
kameleoonSimulationFFData={"featureKey":{"expId":10,"varId":20}}: Simuliert die Variation mit varId des Experiments expId für den angegebenen featureKey.
kameleoonSimulationFFData={"featureKey":{"expId":0}}: Simuliert die Standard-Variation (definiert im Abschnitt Then, for everyone else in Production, serve) für den angegebenen featureKey.
⚠️ Um die ordnungsgemäße Funktionalität zu gewährleisten, muss der Cookie-Wert als URI-Komponente kodiert werden, indem eine Methode wie encodeURIComponent verwendet wird.
try
{
string visitorCode = kameleoonClient.GetVisitorCode(Request, Response);
string visitorCode = kameleoonClient.GetVisitorCode(Request, Response, defaultVisitorCode);
}
catch (VisitorCodeInvalid e)
{
// Handle exception
}
Argumente
| Name | Typ | Beschreibung |
|---|
| Request | Microsoft.AspNetCore.Http.HttpRequest / System.Web.HttpRequest | Das aktuelle Request-Objekt sollte als erster Parameter übergeben werden. Dieses Feld ist obligatorisch. |
| Response | Microsoft.AspNetCore.Http.HttpResponse / System.Web.HttpResponse | Das aktuelle Response-Objekt sollte als zweiter Parameter übergeben werden. Dieses Feld ist obligatorisch. |
| defaultVisitorCode | string | Dieser Parameter wird als visitorCode verwendet, wenn kein vorhandenes kameleoonVisitorCode-Cookie in der Anfrage gefunden wird. Dieses Feld ist optional, und standardmäßig wird ein zufälliger visitorCode generiert. |
Rückgabewert
| Typ | Beschreibung |
|---|
| string | Ein visitorCode, der mit diesem bestimmten Benutzer verknüpft wird und mit den meisten Methoden des SDK verwendet werden sollte. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| KameleoonException.VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist (er ist entweder leer oder länger als 255 Zeichen). |
AddData()
Die Methode AddData() fügt dem Speicher Targeting-Daten hinzu, damit andere Methoden die Daten verwenden können, um zu entscheiden, ob der aktuelle Besucher angesprochen werden soll.
Die Methode AddData() gibt keinen Wert zurück und interagiert allein nicht mit den Kameleoon-Back-End-Servern. Stattdessen werden alle deklarierten Daten für die zukünftige Übertragung mit der Methode Flush() gespeichert. Dieser Ansatz reduziert die Anzahl der getätigten Serveraufrufe, da die Daten in der Regel in einem einzigen Serveraufruf gruppiert werden, der durch Flush() ausgelöst wird.
Die Methode TrackConversion() sendet ebenfalls alle zuvor verknüpften Daten, genau wie Flush(). Das Gleiche gilt für die Methoden GetVariation() und GetVariations(), wenn eine Experimentierregel ausgelöst wird.
Jeder Besucher kann für die meisten Datentypen nur eine Instanz von verknüpften Daten haben. CustomData ist jedoch eine Ausnahme. Besucher können eine Instanz von verknüpften CustomData pro Index haben.
// Add a single data item (tracked by default)
kameleoonClient.AddData(new Browser(Browser.Browsers.CHROME));
// Add multiple data items (tracked by default)
kameleoonClient.AddData(
visitorCode,
new PageView("https://url.com", "title", new int[] {3}),
new UserAgent("UserAgent")
);
// Add multiple data items stored locally for targeting only (not sent to the Kameleoon Data API)
kameleoonClient.AddData(
visitorCode,
false,
new PageView("https://url.com", "title", new int[] {3}),
new UserAgent("UserAgent")
);
Argumente
| Name | Typ | Beschreibung | Standardwert |
|---|
| visitorCode (erforderlich) | string | Eindeutige Kennung des Besuchers. | |
| track (optional) | bool | Gibt an, ob die hinzugefügten Daten für das Tracking geeignet sind. Bei Einstellung auf false werden die Daten lokal gespeichert und nur für die Targeting-Auswertung verwendet; sie werden nicht an die Kameleoon Data API gesendet. | true |
| data (erforderlich) | params IData[] | Sammlung von Kameleoon-Datentypen. | |
Ausnahmen
| Typ | Beschreibung |
|---|
VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen. |
Flush()
- 📨 Sendet Tracking-Daten an Kameleoon
Die Methode Flush() sammelt die mit dem Besucher verknüpften Kameleoon-Daten. Sie sendet dann eine Tracking-Anfrage zusammen mit allen zuvor mit der Methode AddData hinzugefügten Daten, die noch nicht mit einer dieser Methoden gesendet wurden. Flush() ist nicht blockierend, da der Server-Aufruf asynchron erfolgt.
Flush() ermöglicht es Ihnen zu steuern, wann die mit einem bestimmten visitorCode verknüpften Daten an unsere Server gesendet werden. Wenn Sie beispielsweise AddData() ein Dutzend Mal aufrufen, wäre es ineffizient, nach jedem Aufruf von AddData() Daten an den Server zu senden. Sie müssen also Flush() nur einmal am Ende aufrufen.
Wenn Sie einen visitorCode angeben, verwendet die Methode Flush() ihn als eindeutige Besucherkennung, was für Cross-Device-Experimente nützlich ist. Wenn Sie einen visitorCode angeben und den Parameter isUniqueIdentifier auf true setzen, verknüpft das SDK die geleerten Daten mit dem Besucher, der mit der angegebenen Kennung verknüpft ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in besonderen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch Sitzungszusammenführung mit diesem Besucher verknüpft ist.
string visitorCode = kameleoonClient.GetVisitorCode(Request, Response, "example.com");
kameleoonClient.AddData(new Browser(Browser.Browsers.CHROME));
kameleoonClient.AddData(
visitorCode,
new PageView("https://url.com", "title", new int[] {3}),
new Conversion(32, 10f, false)
);
kameleoonClient.Flush(visitorCode); // Interval tracking (most performant tracking method)
kameleoonClient.Flush(true, visitorCode); // Instant tracking
// if you operate with unique ID
kameleoonClient.AddData(visitorCode, new UniqueIdentifier(true));
kameleoonClient.Flush(visitorCode);
Argumente
| Name | Typ | Beschreibung |
|---|
| instant | bool | Boolesches Flag, das angibt, ob die Daten sofort (true) oder gemäß dem geplanten Tracking-Intervall (false) gesendet werden sollen. Dieses Feld ist optional. |
| visitorCode | string | Eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch. |
| isUniqueIdentifier (Veraltet) | bool | Ein optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Der visitorCode muss bereitgestellt werden und darf nicht null sein, um isUniqueIdentifier für einen Besucher anzuwenden, andernfalls wird er ignoriert. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional. |
GetRemoteData()
Diese Methode hieß zuvor RetrieveDataFromRemoteSource, die in der SDK-Version 4.0.0 entfernt wurde.
GetRemoteData() ist eine Methode, mit der Sie Daten für einen bestimmten siteCode (festgelegt in KameleoonClientFactory.create()) von einem entfernten Kameleoon-Server mit einem von Ihnen bereitgestellten Schlüssel abrufen können. Unsere Data API speichert diese Daten auf unseren Servern, die für die effiziente Verarbeitung großer Datenmengen ausgelegt sind. Beachten Sie, dass diese Methode aufgrund eines Server-Aufrufs asynchron arbeitet.
var testValue = await kameleoonClient.GetRemoteData("test"); // default timeout
testValue = await kameleoonClient.GetRemoteData("test", 1000);
try {
testValue = await kameleoonClient.GetRemoteData("test");
} catch (Exception e) {
// Timeout or Json Parsing Exception
}
Argumente
| Name | Typ | Beschreibung |
|---|
| key | string | Der Schlüssel, mit dem die Daten verknüpft sind, die Sie abrufen möchten. Dieses Feld ist obligatorisch. |
| timeout | int? | Timeout (in Millisekunden). Dieser Parameter gibt die maximale Wartezeit auf ein Ergebnis an. Dieses Feld ist optional, wenn nicht angegeben, wird der Standardwert von 10000 Millisekunden verwendet. |
Rückgabewert
| Typ | Beschreibung |
|---|
| JObject | Daten, die mit dem Abrufen von Daten für einen bestimmten Schlüssel verknüpft sind. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| Exception | Ausnahme, die anzeigt, dass die Anfrage abgelaufen ist oder die abgerufenen Daten nicht mit der Methode JObject.Parse geparst werden können. |
GetRemoteVisitorData()
GetRemoteVisitorData() ist eine Methode, die Kameleoon-Besuchsdaten für einen bestimmten Benutzer mit seinem VisitorCode abruft. Sie arbeitet im Hintergrund und speichert diese Daten, damit andere Methoden Targeting-Entscheidungen treffen können.
Diese Daten sind aus mehreren Gründen wichtig:
- Sie helfen Ihnen, Informationen zu verwenden, die von verschiedenen Geräten gesammelt wurden.
- Sie ermöglichen Ihnen den Zugriff auf den Verlauf eines Benutzers, z. B. zuvor besuchte Seiten aus früheren Besuchen.
- Sie ermöglichen Ihnen die Verwendung von Daten, die nur auf der Client-Seite verfügbar sind, wie z. B. Datalayer-Variablen und Ziele, die Conversions nur im Front-End verfolgen.
Lesen Sie diesen Artikel für ein besseres Verständnis möglicher Anwendungsfälle.
Standardmäßig ruft GetRemoteVisitorData() automatisch die neuesten gespeicherten Custom Data mit Scope=Visitor ab und hängt sie an den Besucher an, ohne dass die Methode AddData() aufgerufen werden muss. Dies ist besonders nützlich für die Synchronisierung von Custom Data zwischen mehreren Geräten.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in besonderen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch Sitzungszusammenführung mit diesem Besucher verknüpft ist.
string visitorCode = "visitorCode";
// Visitor data will be fetched and automatically added for `visitorCode`
Task<IReadOnlyCollection<IData>> visitorData = kameleoonClient.GetRemoteVisitorData(visitorCode);
// If you only want to fetch data and add it yourself manually, set addData == `false`.
Task<IReadOnlyCollection<IData>> visitorData = kameleoonClient.GetRemoteVisitorData(visitorCode, false);
// If you want to fetch custom list of data types
var filter = new RemoteVisitorDataFilter(25, customData: false, conversions: true, experiments: true);
var visitorData = kameleoonClient.getRemoteVisitorData(visitorCode, filter: filter);
try {
IReadOnlyCollection<IData> visitorData = await kameleoonClient.GetRemoteVisitorData(visitorCode);
// Your custom code
} catch (Exception e) {
// Catch exception
}
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode | string | Der Visitor-Code, für den Sie die zugewiesenen Daten abrufen möchten. Dieses Feld ist obligatorisch. |
| addData | bool | Ein Boolean, der angibt, ob die Methode die abgerufenen Daten automatisch für einen Besucher hinzufügen soll. Dieses Feld ist optional. |
| timeout | int? | Timeout (in Millisekunden). Dieser Parameter gibt die maximale Wartezeit auf ein Ergebnis an. Dieses Feld ist optional. Wenn nicht angegeben, ist der Standardwert 10000 Millisekunden. |
| filter | Kameleoon.Types.RemoteVisitorDataFilter | Filter, um anzugeben, welche Daten aus Besuchen abgerufen werden sollen. Standardmäßig werden nur CustomData aus dem aktuellen und dem letzten vorherigen Besuch abgerufen (new RemoteVisitorDataFilter(previousVisitAmount: 1, currentVisit: true, customData: true) oder RemoteVisitorDataFilter.Default). Andere Filterparameter sind auf false gesetzt. Dieses Feld ist optional. |
| isUniqueIdentifier (Veraltet) | bool | Ein optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional. |
Rückgabewert
| Typ | Beschreibung |
|---|
Task<IReadOnlyCollection<IData>> | Sammlung, die einem bestimmten Besucher zugeordnet ist. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| HttpRequestException | Ausnahme, die anzeigt, dass die Anfrage aus irgendeinem Grund fehlgeschlagen ist. |
| Exception | Ausnahme, die anzeigt, dass die Anfrage abgelaufen ist oder einen anderen Grund für das Scheitern hatte. |
Verwendung von Parametern in GetRemoteVisitorData()
Die Methode GetRemoteVisitorData() bietet Flexibilität, indem sie es Ihnen ermöglicht, verschiedene Parameter beim Abrufen von Besucherdaten zu definieren. Egal, ob Sie auf der Grundlage von Zielen, Experimenten oder Variations zielen, der gleiche Ansatz gilt für alle Datentypen.
Angenommen, Sie möchten Daten zu Besuchern abrufen, die ein Ziel “Order transaction” abgeschlossen haben. Sie können Parameter innerhalb der Methode GetRemoteVisitorData() angeben, um Ihr Targeting zu verfeinern. Wenn Sie beispielsweise nur Benutzer ansprechen möchten, die bei ihren letzten fünf Besuchen auf das Ziel konvertiert haben, können Sie den Parameter PreviousVisitAmount auf 5 und Conversions auf true setzen.
Die in diesem Beispiel gezeigte Flexibilität ist nicht auf Zieldaten beschränkt. Sie können Parameter innerhalb der Methode GetRemoteVisitorData() verwenden, um Daten zu einer Vielzahl von Besucherverhaltensweisen abzurufen.
Hier ist die Liste der verfügbaren Kameleoon.Types.RemoteVisitorDataFilter-Optionen:| Name | Typ | Beschreibung | Standard |
|---|
| previousVisitAmount (optional) | int | Anzahl der vorherigen Besuche, von denen Daten abgerufen werden sollen. Zahl zwischen 1 und 25 | 1 |
| currentVisit (optional) | bool | Wenn true, werden die Daten des aktuellen Besuchs abgerufen | true |
| customData (optional) | bool | Wenn true, werden Custom Data abgerufen. | true |
| pageViews (optional) | bool | Wenn true, werden Seitendaten abgerufen. | false |
| geolocation (optional) | bool | Wenn true, werden Geolokalisierungsdaten abgerufen. | false |
| device (optional) | bool | Wenn true, werden Gerätedaten abgerufen. | false |
| browser (optional) | bool | Wenn true, werden Browser-Daten abgerufen. | false |
| operatingSystem (optional) | bool | Wenn true, werden Betriebssystem-Daten abgerufen. | false |
| conversions (optional) | bool | Wenn true, werden Conversion-Daten abgerufen. | false |
| experiments (optional) | bool | Wenn true, werden Experiment-Daten abgerufen. | false |
| kcs (optional) | bool | Wenn true, wird der Kameleoon Conversion Score (KCS) abgerufen. Erfordert das AI Predictive Targeting-Add-on. | false |
| visitorCode (optional) | bool | Wenn true, soll der visitorCode aus dem letzten Besuch abgerufen und auf den aktuellen Besucher angewendet werden. Erforderlich für Cross-Device-Experimente. | true |
| cbs (optional) | bool | Wenn true, werden Contextual Bandit-Score-Daten abgerufen. | false |
GetVisitorWarehouseAudience()
Diese Methode ruft alle mit dem Besucher in Ihrem Data Warehouse verknüpften Zielgruppendaten unter Verwendung der angegebenen visitorCode und warehouseKey ab. Der warehouseKey ist normalerweise Ihre interne Benutzer-ID. Der Parameter customDataIndex entspricht den Kameleoon-Custom-Data, die Kameleoon zum Targeting Ihrer Besucher verwendet. Weitere Details finden Sie in der Warehouse-Targeting-Dokumentation. Die Methode gibt ein CustomData-Objekt zurück, das bestätigt, dass die Daten zum Besucher hinzugefügt wurden und für Targeting-Zwecke verfügbar sind.
Task<CustomData> warehouseAudienceDataTask = kameleoonClient.
GetVisitorWarehouseAudience(visitorCode, customDataIndex); // default timeout
Task<CustomData> warehouseAudienceDataTask = kameleoonClient.
GetVisitorWarehouseAudience(visitorCode, customDataIndex, timeout: 1000);
// If you need to specify warehouse key
Task<CustomData> warehouseAudienceDataTask = kameleoonClient.
GetVisitorWarehouseAudience(visitorCode, customDataIndex, warehouseKeyValue); // default timeout
Task<CustomData> warehouseAudienceDataTask = kameleoonClient.
GetVisitorWarehouseAudience(visitorCode, customDataIndex, warehouseKeyValue, 1000);
try
{
CustomData warehouseAudienceData = await warehouseAudienceDataTask;
// Your custom code
}
catch (Exception e)
{
// Catch exception
}
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode | string | Eine eindeutige Besucher-Identifikationszeichenfolge, darf 255 Zeichen Länge nicht überschreiten. |
| customDataIndex | int | Eine Ganzzahl, die den Index der Custom Data darstellt, die Sie zum Targeting Ihrer BigQuery Audiences verwenden möchten. |
| warehouseKey | string | Ein eindeutiger Schlüssel zur Identifizierung der Warehouse-Daten (in der Regel Ihre interne Benutzer-ID). Dieses Feld ist optional. |
| timeout | int? | Timeout (in Millisekunden). Dieser Parameter gibt die maximale Wartezeit auf ein Ergebnis an. Dieses Feld ist optional. Wenn nicht angegeben, ist der Standardwert 10000 Millisekunden. |
Rückgabewert
| Typ | Beschreibung |
|---|
Task<CustomData> | Eine CustomData-Instanz, die bestätigt, dass die Daten zum Besucher hinzugefügt wurden. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| KameleoonException.VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist (er ist entweder leer oder länger als 255 Zeichen). |
| HttpRequestException | Ausnahme, die anzeigt, dass die Anfrage aus irgendeinem Grund fehlgeschlagen ist. |
| Exception | Ausnahme, die anzeigt, dass die Anfrage abgelaufen ist oder einen anderen Grund für das Scheitern hatte. |
SetLegalConsent()
Sie müssen diese Methode verwenden, um anzugeben, ob der Besucher seine rechtliche Zustimmung zur Verwendung personenbezogener Daten gegeben hat. Das Setzen des Parameters legalConsent auf false begrenzt die Datentypen, die Sie in Tracking-Anfragen einbeziehen können. Diese Methode hilft Ihnen, gesetzliche und behördliche Anforderungen einzuhalten und gleichzeitig Besucherdaten verantwortungsvoll zu verwalten. Weitere Informationen zu personenbezogenen Daten finden Sie in der Consent-Management-Richtlinie.
string visitorCode = kameleoonClient.GetVisitorCode(httpRequest, httpResponse);
kameleoonClient.SetLegalConsent(visitorCode, true, httpResponse);
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode | string | Die eindeutige Kennung des Benutzers. Dieses Feld ist erforderlich. |
| legalConsent | bool | Ein boolescher Wert, der den Status der rechtlichen Zustimmung darstellt. true zeigt an, dass der Besucher seine rechtliche Zustimmung gegeben hat, false zeigt an, dass der Besucher nie eine rechtliche Zustimmung gegeben oder diese zurückgezogen hat. Dieses Feld ist erforderlich. |
| response | Microsoft.AspNetCore.Http.HttpResponse / System.Web.HttpRequest | Die HTTP-Antwort, in der die Werte in den Cookies basierend auf dem Status der rechtlichen Zustimmung angepasst werden. Dieses Feld ist optional. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| KameleoonException.VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen. |
Verhalten beim Widerruf der Zustimmung
Wenn Sie setLegalConsent() mit consent=false aufrufen, löscht das SDK das kameleoonVisitorCode-Cookie nicht. Stattdessen verlängert es das Ablaufdatum des Cookies nicht mehr, sodass das Cookie bestehen bleibt, bis es auf natürliche Weise abläuft.
Wenn Ihre Compliance-Anforderungen die sofortige Entfernung der Cookie-Datei nach dem Opt-out verlangen, müssen Sie sie manuell mit den nativen Cookie-Verwaltungsmethoden Ihres Frameworks löschen. Das SDK entfernt die Datei nicht automatisch.
Ziele und Drittanbieter-Analysen
TrackConversion()
- 📨 Sendet Tracking-Daten an Kameleoon
Verwenden Sie diese Methode, um eine Conversion für ein bestimmtes Ziel und einen bestimmten Benutzer zu verfolgen. Diese Methode erfordert visitorCode und goalId. Darüber hinaus akzeptiert diese Methode auch die optionalen Argumente revenue, negative und metadata. Der visitorCode ist in der Regel identisch mit dem, der beim Auslösen des Experiments verwendet wurde.
Die Methode TrackConversion() gibt keinen Wert zurück. Diese Methode ist nicht blockierend, da der Server-Aufruf asynchron erfolgt.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann auch in anderen Sonderfällen nützlich sein, z. B. wenn Sie nicht auf den anonymen visitorCode zugreifen können, der dem Besucher ursprünglich zugewiesen wurde, aber Zugriff auf eine interne ID haben, die mit dem anonymen Besucher über Sitzungszusammenführungsfunktionen verbunden ist.
using Kameleoon;
string visitorCode = kameleoonClient.GetVisitorCode(Request, Response, "example.com");
int goalId = 83023;
kameleoonClient.TrackConversion(visitorCode, goalId);
// Add metadata
var cd = new CustomData(1, "metadata");
kameleoonClient.TrackConversion(visitorCode, goalId, metadata: cd)
Argumente
| Name | Typ | Beschreibung | Standard |
|---|
| visitorCode (erforderlich) | string | Eindeutige Kennung des Besuchers. | |
| goalId (erforderlich) | int | ID des Ziels. | |
| revenue (optional) | float? | Umsatz der Conversion. | 0 |
| negative (optional) | bool | Definiert, ob der Umsatz positiv oder negativ ist. | false |
| metadata (optional) | params CustomData[] | Ermöglicht es Ihnen, spezifische Werte für Custom Data festzulegen, die in der Kameleoon-App als Metadata für das Ziel definiert wurden. Beispiel: [CustomData{id: 5, value: "Payment Type"}, CustomData{id: 6, value: "Delivery Method"}]. In diesem Beispiel sind 5 und 9 die Indizes der Custom Data (5 = “Payment Type”, 9 = “Delivery Method”). | new CustomData[0] |
| isUniqueIdentifier (veraltet) | bool | Ein optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. | false |
Metadata-Werte sind über Rohdaten-Exporte und die Ergebnisseite zugänglich.Wenn der Parameter metadata angegeben wird, verwendet Kameleoon diese angegebenen Werte für die aktuelle Conversion anstelle dessen, was zuvor mit der Methode AddData() gesammelt wurde. Wenn der Parameter weggelassen wird, verwendet Kameleoon die zuletzt verfolgten Werte für diese CustomData vor der Conversion und innerhalb des gleichen Besuchs.Kameleoon berücksichtigt nur die Metadata-Werte, die explizit als Parameter an die Methode TrackConversion() übergeben werden.Im folgenden Beispiel verknüpft Kameleoon die Conversion nur mit dem Custom-Data-Wert, der explizit als Parameter angegeben wurde (hier: Index 5 mit dem Wert ‘Amex Credit Card’).kameleoonClient.AddData(visitorCode, new CustomData(5, "Credit Card"), new CustomData(9, "Express Delivery"));
kameleoonClient.TrackConversion(visitorCode, 10, metadata: new CustomData(5, "Amex Credit Card"));
Ausnahmen
| Typ | Beschreibung |
|---|
VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen. |
GetEngineTrackingCode()
Kameleoon integriert sich mit mehreren Analyselösungen, darunter Mixpanel, Google Analytics 4 und Segment. Um serverseitige Experimente korrekt zu verfolgen, rufen Sie die Methode GetEngineTrackingCode() auf, nachdem der Besucher ein Experiment ausgelöst hat. Das SDK gibt JavaScript-Queue-Befehle für die Experimente zurück, die der Besucher in den letzten fünf Sekunden ausgelöst hat. Wenn Sie diesen Code in die Seite einfügen, verarbeitet Engine.js die Befehle und sendet die Expositionsereignisse über die aktive Analyse-Integration.
Weitere Informationen zur Implementierung dieser Methode finden Sie unter hybride Experimentierung.
string engineTrackingCode = kameleoonClient.GetEngineTrackingCode(visitorCode);
- Um diese Funktion zu verwenden, implementieren Sie sowohl das C# SDK als auch Kameleoon Engine.js. Da Engine.js in diesem Fluss nur zum Tracking verwendet wird, können Sie das asynchrone Tag vor dem schließenden
</body>-Tag installieren.
- Wenn Sie nur Experimente in Kameleoon verfolgen möchten und keine Expositionsereignisse an Drittanbieter-Analysetools senden müssen, verwenden Sie das JavaScript / TypeScript SDK. Diese Option eignet sich gut für serverlose Edge-Compute-Plattformen. Das JavaScript / TypeScript SDK verfolgt automatisch Variations, wenn Sie
getVisitorCode aufrufen, solange Sie die entsprechenden Experiment-Zuweisungen zu window.kameleoonQueue hinzufügen.
- Sie können den zurückgegebenen Tracking-Code direkt in einen HTML-
<script>-Tag einfügen.
<html lang="en">
<body>
<script>
const engineTrackingCode = `
window.kameleoonQueue = window.kameleoonQueue || [];
window.kameleoonQueue.push(['Experiments.assignVariation', 123456, 7890, true]);
window.kameleoonQueue.push(['Experiments.trigger', 123456, true]);
window.kameleoonQueue.push(['Experiments.assignVariation', 234567, 8901, true]);
window.kameleoonQueue.push(['Experiments.trigger', 234567, true]);
`;
const script = document.createElement('script');
script.textContent = engineTrackingCode;
document.body.appendChild(script);
</script>
</body>
</html>
In diesem Beispiel sind 123456 und 234567 Experiment-IDs und 7890 und 8901 Variation-IDs. In Ihrer Implementierung generiert das SDK diese Werte im zurückgegebenen Tracking-Code.
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode (erforderlich) | string | Eindeutige Kennung des Besuchers. |
Rückgabewert
| Typ | Beschreibung |
|---|
string | JavaScript-Code zum Einfügen in die Seite. |
Ereignisse
UpdateConfigurationHandler()
Mit der Methode UpdateConfigurationHandler() können Sie das Ereignis behandeln, wenn die Konfiguration Daten aktualisiert hat. Sie nimmt einen Eingabeparameter, handler. Der Handler, der aufgerufen wird, wenn die Konfiguration mithilfe eines Echtzeit-Konfigurationsereignisses aktualisiert wird.
kameleoonClient.UpdateConfigurationHandler(async delegate () {
// Configuration was updated
});
Argumente
| Name | Typ | Beschreibung |
|---|
| handler | Action | Der Handler, der aufgerufen wird, wenn die Konfiguration mithilfe eines Echtzeit-Konfigurationsereignisses aktualisiert wird. |
Datentypen
Die im SDK verfügbaren Daten stehen für Targeting und Reporting in der Kameleoon-App nicht zur Verfügung, bis sie hinzugefügt wurden; zum Beispiel mit der Methode addData().
Weitere Informationen finden Sie unter use visit history to target users.
Wenn Sie sich im hybriden Modus befinden, können Sie GetRemoteVisitorData() aufrufen, um automatisch alle Daten zu füllen, die Kameleoon zuvor gesammelt hat.
Die folgenden Datentypen sind in Kameleoon.Data.IData verfügbar.
Browser
Der hier gespeicherte Browser-Datensatz kann verwendet werden, um Experiment- und Personalisierungsberichte nach jedem zugehörigen Wert zu filtern.
| Name | Typ | Beschreibung |
|---|
| browser (erforderlich) | Browser.Browsers | Liste der Browser: CHROME, INTERNET_EXPLORER, FIREFOX, SAFARI, OPERA, OTHER. |
| version (optional) | float? | Version des Browsers, die Gleitkommazahl repräsentiert die Haupt- und Nebenversion des Browsers. |
kameleoonClient.AddData(visitorCode, new Browser(Browser.Browsers.CHROME));
kameleoonClient.AddData(visitorCode, new Browser(Browser.Browsers.SAFARI, 16));
PageView
| Name | Typ | Beschreibung |
|---|
| url | string | URL der angezeigten Seite. Dieses Feld ist obligatorisch. |
| title | string | Titel der angezeigten Seite. Dieses Feld ist obligatorisch. |
| referrers | int[] | Referrer der angezeigten Seiten. Dieses Feld ist optional. |
Der Index (ID) des Referrers ist in unserem Back-Office auf der Konfigurationsseite des Akquisitionskanals verfügbar. Vorsicht: Dieser Index beginnt bei 0, sodass der erste Akquisitionskanal, den Sie für eine bestimmte Site erstellen, die ID 0 und nicht 1 hätte.
kameleoonClient.AddData(
visitorCode,
new PageView("https://url.com", "title", new int[] {3})
);
Conversion
Der hier gespeicherte Conversion-Datensatz kann verwendet werden, um Experiment- und Personalisierungsberichte nach jedem zugeordneten Ziel zu filtern.
- Jeder Besucher kann mehrere
Conversion-Objekte haben.
- Sie können die
goalId in der Kameleoon-App finden.
| Name | Typ | Beschreibung | Standard |
|---|
| goalId (erforderlich) | int | ID des Ziels. | |
| revenue (optional) | float | Umsatz der Conversion. | 0 |
| negative (optional) | bool | Definiert, ob der Umsatz positiv oder negativ ist. | false |
| metadata (optional) | params CustomData[] | Metadata der Conversion. | new CustomData[0] |
kameleoonClient.AddData(visitorCode, new Conversion(32, 10f));
kameleoonClient.AddData(visitorCode, new Conversion(33, negative: true));
kameleoonClient.AddData(
visitorCode,
new Conversion(34, 5f, metadata: new CustomData(3, "metadata1", "md2"), new CustomData(5, "md3"))
);
CustomData
CustomData ermöglicht es, jede Art von Daten einfach mit jedem Besucher zu verknüpfen. Sie kann dann als Targeting-Bedingung in Segmenten oder als Filter/Aufschlüsselung in Experimentberichten verwendet werden.
Um mehr über Custom Data zu erfahren, lesen Sie bitte diesen Artikel.
| Name | Typ | Beschreibung | Standard |
|---|
| index/name (erforderlich) | int/string | Index oder Name der Custom Data. Entweder index oder name muss angegeben werden, um die Daten zu identifizieren. | |
| values (erforderlich) | params string[] | Zu speichernde Werte der Custom Data. | |
| overwrite (optional) | bool | Flag zur expliziten Steuerung, wie die Werte gespeichert werden und wie sie in Berichten erscheinen. Mehr anzeigen | true |
-
Jeder Besucher darf nur eine
CustomData für jeden eindeutigen index haben. Das Hinzufügen einer weiteren CustomData mit demselben index ersetzt die vorhandene.
-
Der Index der Custom Data befindet sich im Custom Data dashboard unter der Spalte “INDEX”.
-
Um zu verhindern, dass das SDK aus Datenschutzgründen Daten mit dem ausgewählten Index an die Kameleoon-Server sendet, aktivieren Sie die Option: Use this data only locally for targeting purposes beim Erstellen von Custom Data.
-
Das Hinzufügen einer mit einem Namen erstellten
CustomData-Instanz, wenn die Konfiguration der SDK-Instanz nicht aktuell ist oder der Name nicht registriert ist, führt dazu, dass die Daten ignoriert werden.
kameleoonClient.AddData(visitorCode, new CustomData(1, "value"));
// With several values
kameleoonClient.AddData(visitorCode, new CustomData(1, "value1", "value2"));
// To set the 'overwrite' flag to false
kameleoonClient.AddData(visitorCode, new CustomData(1, false, "value"));
// To use a name instead of the index
kameleoonClient.AddData(visitorCode, new CustomData("my-custom-data", "value"));
Device
| Name | Typ | Beschreibung |
|---|
| device | Device.Type | Liste der Geräte: PHONE, TABLET, DESKTOP. Dieses Feld ist obligatorisch. |
kameleoonClient.AddData(visitorCode, new Device(Device.Type.DESKTOP));
UserAgent
Serverseitige Experimente werden eher von Bot-Traffic beeinflusst als clientseitige Experimente. Kameleoon verwendet die IAB/ABC International Spiders and Bots List, um dieses Problem anzugehen und bekannte Bots und Spider zu erkennen. Kameleoon verwendet auch das Feld UserAgent, um Bots und anderen unerwünschten Traffic herauszufiltern, der Ihre Conversion-Metriken verfälschen könnte. Weitere Details finden Sie in unserem Hilfeartikel zur Bot-Filterung.
Wenn Sie interne Bots verwenden, empfehlen wir Ihnen, den Wert curl/8.0 des userAgent zu übergeben, um sie von unseren Analysen auszuschließen.
| Name | Typ | Beschreibung |
|---|
| Value | string | Der UserAgent-Wert, der mit Tracking-Anfragen gesendet wird. Dieses Feld ist obligatorisch. |
kameleoonClient.AddData(visitorCode, new UserAgent("Your User Agent"));
UniqueIdentifier
Wenn Sie keinen UniqueIdentifier für einen Besucher hinzufügen, wird visitorCode als eindeutige Besucherkennung verwendet, was für Cross-Device-Experimente nützlich ist. Wenn Sie UniqueIdentifier für einen Besucher hinzufügen, verknüpft das SDK die geleerten Daten mit dem Besucher, der mit der angegebenen Kennung verknüpft ist.
Der isUniqueIdentifier kann in besonderen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch Sitzungszusammenführung mit diesem Besucher verknüpft ist.
| Name | Typ | Beschreibung |
|---|
| value | bool | Parameter zur Angabe, ob der visitorCode eine eindeutige Kennung ist. Dieses Feld ist erforderlich. |
kameleoonClient.AddData(visitorCode, new UniqueIdentifier(true));
OperatingSystem
OperatingSystem enthält Informationen über das Betriebssystem auf dem Gerät des Besuchers.
Jeder Besucher kann nur ein OperatingSystem haben. Das Hinzufügen eines zweiten OperatingSystem überschreibt das erste.
| Name | Typ | Beschreibung |
|---|
| type | OperatingSystem.Type | Liste der Betriebssysteme: WINDOWS, MAC, IOS, LINUX, ANDROID und WINDOWS_PHONE. Dieses Feld ist erforderlich. |
kameleoonClient.addData(visitorCode, new OperatingSystem(OperatingSystem.Type.WINDOWS));
Cookie
Cookie enthält Informationen über das auf dem Gerät des Besuchers gespeicherte Cookie.
| Name | Typ | Beschreibung |
|---|
| cookies | IReadOnlyDictionary<string, string> | Eine Zeichenfolgenobjekt-Map, die aus Cookie-Schlüsseln und -Werten besteht. Dieses Feld ist erforderlich. |
Jeder Besucher kann nur ein Cookie haben. Das Hinzufügen eines zweiten Cookie überschreibt das erste.
Cookie cookie = new Cookie (new Dictionary<string, string>() {
{ "k1", "v1" },
{ "k2", "v2" },
});
kameleoonClient.addData(visitorCode, cookie);
Geolocation
Geolocation enthält die Geolokalisierungsdetails des Besuchers.
| Name | Typ | Beschreibung |
|---|
| country (erforderlich) | string | Das Land des Besuchers. |
| region (optional) | string | Die Region des Besuchers. |
| city (optional) | string | Die Stadt des Besuchers. |
| postalCode (optional) | string | Die Postleitzahl des Besuchers. |
| latitude (optional) | float | Die Breitengrad-Koordinate, die den Standort des Besuchers darstellt. Die Koordinatenzahl stellt Dezimalgrad dar. |
| longitude (optional) | float | Die Längengrad-Koordinate, die den Standort des Besuchers darstellt. Die Koordinatenzahl stellt Dezimalgrad dar. |
- Jeder Besucher kann nur eine
Geolocation haben. Das Hinzufügen einer zweiten Geolocation überschreibt die erste.
kameleoonClient.addData(visitorCode, new Geolocation("France", "Île-de-France", "Paris"));
ApplicationVersion
ApplicationVersion repräsentiert die semantische Versionsnummer Ihrer Anwendung.
Ein Besucher kann nur eine ApplicationVersion haben. Das Hinzufügen einer zweiten Instanz überschreibt die erste.
| Name | Typ | Beschreibung |
|---|
| version (optional) | string | Die Version der mobilen Anwendung. Dieses Feld muss der semantischen Versionierung folgen. Akzeptierte Formate sind major, major.minor oder major.minor.patch. |
client.AddData(visitorCode, new ApplicationVersion("10")) // major
client.AddData(visitorCode, new ApplicationVersion("10.20")) // major.minor
client.AddData(visitorCode, new ApplicationVersion("10.20.30")) // major.minor.patch
Zurückgegebene Typen
DataFile
Die DataFile enthält die SDK-Konfigurationsdetails.
Sie kann bei Bedarf mit zusätzlichen Informationen erweitert werden. Wenn Sie weitere Details benötigen, wenden Sie sich bitte an Ihren Customer Success Manager.
| Name | Typ | Beschreibung |
|---|
| FeatureFlags | IReadOnlyDictionary<string, FeatureFlag> | Eine Map von FeatureFlag-Objekten, indiziert nach feature flag-Schlüsseln. |
| DateModified | long | Der Zeitstempel (in Millisekunden), der angibt, wann die DataFile zuletzt geändert wurde. |
// Retrieves the map of feature flags from the DataFile.
// The map is keyed by feature flag identifiers, with each value being a FeatureFlag object.
IReadOnlyDictionary<string, FeatureFlag> featureFlags = dataFile.FeatureFlags;
// Retrieves the last modification timestamp of the DataFile.
// The value is a long representing milliseconds since the Unix epoch.
long dateModified = dataFile.DateModified;
Variation
Variation enthält Informationen über die dem Besucher zugewiesene Variation (oder die Standard-Variation, wenn keine spezifische Zuweisung vorhanden ist).
| Name | Typ | Beschreibung |
|---|
| Key | string | Der eindeutige Schlüssel, der die Variation identifiziert. |
| Id | int | Die ID der zugewiesenen Variation (oder Variation.UndefinedId, wenn es sich um die Standard-Variation handelt). |
| ExperimentId | int | Die ID des mit der Variation verknüpften Experiments (oder Variation.UndefinedId, wenn Standard). |
| Variables | IReadOnlyDictionary<string, Variable> | Ein Dictionary, das die Variablen der zugewiesenen Variation enthält, indiziert nach Variablennamen. Dies kann eine leere Sammlung sein, wenn keine Variablen verknüpft sind. |
- Das
Variation-Objekt liefert Details zur zugewiesenen Variation und dem zugehörigen Experiment, während das Variable-Objekt spezifische Details zu jeder Variablen innerhalb einer Variation enthält.
- Stellen Sie sicher, dass Ihr Code den Fall behandelt, in dem
Id oder ExperimentId Variation.UndefinedId sein können, was auf eine Standard-Variation hinweist.
- Das
Variables-Dictionary kann leer sein, wenn keine Variablen mit der Variation verknüpft sind.
// Retrieving the variation key
string variationKey = variation.Key;
// Retrieving the variation id
int variationId = variation.Id;
// Retrieving the experiment id
int experimentId = variation.ExperimentId;
// Retrieving the variables map
var variables = variation.Variables;
Variable
Variable enthält Informationen über eine Variable, die mit der zugewiesenen Variation verknüpft ist.
| Name | Typ | Beschreibung |
|---|
| Key | string | Der eindeutige Schlüssel, der die Variable identifiziert. |
| Type | string | Der Typ der Variable. Mögliche Werte: BOOLEAN, NUMBER, STRING, JSON, JS, CSS. |
| Value | object | Der Wert der Variable, der einer der folgenden Typen sein kann: bool, int, double, string, Newtonsoft.Json.Linq.JToken. |
// Retrieving the variables map
var variables = variation.Variables;
// Variable type can be retrieved for further processing
string type = variables["isDiscount"].Type;
// Retrieving the variable value by key
bool isDiscount = (bool)variables["isDiscount"].Value;
// Variable value can be of different types
string title = (string)variables["title"].Value;
Veraltete Methoden
Diese Methoden sind veraltet und werden in der SDK-Version 5.0.0 entfernt.
GetFeatureVariationKey()
- 📨 Sendet Tracking-Daten an Kameleoon
Um den Feature-Variation-Schlüssel zu erhalten, rufen Sie GetFeatureVariationKey() auf.
Diese Methode erfordert einen visitorCode und einen featureKey (oder featureID), um zu prüfen, ob ein Benutzer auf eine bestimmte Funktion zugreifen kann.
Wenn der Benutzer noch nie mit dieser Funktion verknüpft wurde, entscheidet das SDK zufällig, ob es sie aktiviert, und gibt entweder true (er kann auf die Funktion zugreifen) oder false (er kann nicht zugreifen) zurück. Wenn der Benutzer mit dem angegebenen visitorCode bereits mit dieser Funktion verknüpft ist, gibt das System den vorherigen Wert des featureFlag zurück.
Stellen Sie sicher, dass Sie in Ihrem Code eine angemessene Fehlerbehandlung einbeziehen, wie im Beispiel gezeigt, um potenzielle Fehler abzufangen.
Wenn Sie einen visitorCode angeben, verwendet die Methode GetFeatureVariationKey() ihn als eindeutige Besucherkennung, was für Cross-Device-Experimente nützlich ist. Wenn Sie einen visitorCode angeben und den Parameter isUniqueIdentifier auf true setzen, verknüpft das SDK die geleerten Daten mit dem Besucher, der mit der angegebenen Kennung verknüpft ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in besonderen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch Sitzungszusammenführung mit diesem Besucher verknüpft ist.
string visitorCode = kameleoonClient.GetVisitorCode(Request, Response, "example.com");
string featureKey = "new_checkout";
string variationKey = "";
try {
variationKey = kameleoonClient.GetFeatureVariationKey(visitorCode, featureKey);
} catch (KameleoonException.FeatureNotFound e) {
// The feature is not yet activated on Kameleoon's side.
} catch (KameleoonException.FeatureEnvironmentDisabled e) {
// The feature flag is disabled for the environment.
}
switch (variationKey) {
case "on":
// Main variation key is selected for visitorCode.
break;
case "alternative_variation":
// Alternative variation key
break;
default:
// Default variation key
break;
}
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode | string | Eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch. |
| featureKey | string | Schlüssel der Funktion, die Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch. |
| isUniqueIdentifier (Veraltet) | bool | Ein optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional. |
Rückgabewert
| Typ | Beschreibung |
|---|
| string | Variation-Schlüssel des feature flag, der für einen bestimmten visitorCode registriert ist. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| KameleoonException.FeatureNotFound | Ausnahme, die anzeigt, dass der angeforderte Feature-Schlüssel nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist in der Regel normal und bedeutet, dass das feature flag auf der Kameleoon-Seite noch nicht aktiviert wurde (aber der Code, der die Funktion implementiert, bereits auf der Webanwendungsseite bereitgestellt ist). |
| KameleoonException.FeatureEnvironmentDisabled | Ausnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development). |
GetActiveFeatureListForVisitor()
- Verwenden Sie stattdessen
GetActiveFeatures.
- Diese Methode hieß zuvor
ObtainFeatureListForVisitorCode(), die in der SDK-Version 4.0.0 entfernt wurde.
Diese Methode nimmt einen einzigen Parameter visitorCode. Gibt nur die aktiven feature flags für den angegebenen Besucher zurück.
var featureListIds = kameleoonClient.GetActiveFeatureListForVisitor(visitorCode)
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode | string | Eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch. |
Rückgabewert
| Typ | Beschreibung |
|---|
List<string> | Liste der aktiven feature flag-IDs, die für einen bestimmten visitorCode verfügbar sind. |
GetFeatureVariable()
- 📨 Sendet Tracking-Daten an Kameleoon
Um die Variable des Variation-Schlüssels zu erhalten, die mit einem Benutzer verknüpft ist, rufen Sie die Methode GetFeatureVariable() unseres SDK auf.
Diese Methode erfordert einen visitorCode und einen featureKey (oder featureID), um zu prüfen, ob ein Benutzer auf eine bestimmte Funktion zugreifen kann.
Wenn der Benutzer noch nie mit dieser Funktion verknüpft wurde, entscheidet das SDK zufällig, ob es sie aktiviert, und gibt entweder true (er kann auf die Funktion zugreifen) oder false (er kann nicht zugreifen) zurück. Wenn der Benutzer mit dem angegebenen visitorCode bereits mit dieser Funktion verknüpft ist, gibt das System den vorherigen Wert des featureFlag zurück.
Stellen Sie sicher, dass Sie in Ihrem Code eine angemessene Fehlerbehandlung einbeziehen, wie im Beispiel gezeigt, um potenzielle Fehler abzufangen.
Wenn Sie einen visitorCode angeben, verwendet die Methode GetFeatureVariable() ihn als eindeutige Besucherkennung, was für Cross-Device-Experimente nützlich ist. Wenn Sie einen visitorCode angeben und den Parameter isUniqueIdentifier auf true setzen, verknüpft das SDK die geleerten Daten mit dem Besucher, der mit der angegebenen Kennung verknüpft ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in besonderen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch Sitzungszusammenführung mit diesem Besucher verknüpft ist.
var visitorCode = kameleoonClient.GetVisitorCode(req, res, "example.com");
const string featureKey = "feature_key";
const string variableKey = "var"
try {
var variableValue = kameleoonClient.GetFeatureVariable(visitorCode, featureKey, variableKey);
// Your custom code, depending on variableValue
} catch (KameleoonException.FeatureNotFound e) {
// The feature is not yet activated in the Kameleoon app
} catch (KameleoonException.FeatureEnvironmentDisabled e) {
// The feature flag is disabled for the environment
} catch (KameleoonException.FeatureVariableNotFound e) {
// Requested variable not defined in the Kameleoon app
}
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode | string | Eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch. |
| featureKey | string | Schlüssel der Funktion, die Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch. |
| variableKey | string | Schlüssel der Variable, deren Wert Sie erhalten möchten. Dieses Feld ist obligatorisch. |
| isUniqueIdentifier (Veraltet) | bool | Ein optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional. |
Rückgabewert
| Typ | Beschreibung |
|---|
| object | Wert der Variable einer Variation, die für einen bestimmten visitorCode für dieses feature flag registriert ist. Mögliche Typen: bool, int, double, string, JObject, JArray |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| KameleoonException.FeatureNotFound | Ausnahme, die anzeigt, dass der angeforderte Feature-Schlüssel nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist in der Regel normal und bedeutet, dass das feature flag auf der Kameleoon-Seite noch nicht aktiviert wurde (aber der Code, der die Funktion implementiert, bereits auf der Webanwendungsseite bereitgestellt ist). |
| KameleoonException.FeatureEnvironmentDisabled | Ausnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development). |
| KameleoonException.FeatureVariableNotFound | Ausnahme, die anzeigt, dass die angeforderte Variable nicht gefunden wurde. Überprüfen Sie, ob der Schlüssel der Variable in der Kameleoon-App mit dem in Ihrem Code übereinstimmt. |
| KameleoonException.VisitorCodeInvalid | Ausnahme, die anzeigt, dass der angegebene Visitor-Code nicht gültig ist. (Er ist entweder leer oder länger als 255 Zeichen). |
GetActiveFeatures()
Die Methode GetActiveFeatures ruft Informationen über die aktiven feature flags ab, die für den angegebenen Visitor-Code verfügbar sind.
Die Eigenschaften Kameleoon.Types.Variation.Id und Kameleoon.Types.Variation.ExperimentId der zurückgegebenen Variations sind optional. Wenn sie nicht angegeben sind, ist der Standardwert Kameleoon.Types.Variation.UndefinedId.
IReadOnlyDictionary<string, Kameleoon.Types.Variation> activeFeatures = GetActiveFeatures(visitorCode);
Argumente
| Name | Typ | Beschreibung |
|---|
| visitorCode | string | Eindeutige Kennung des Besuchers, für den Sie aktive feature flags abrufen möchten. Dieses Feld ist obligatorisch. |
Rückgabewert
| Typ | Beschreibung |
|---|
IReadOnlyDictionary<string, Kameleoon.Types.Variation> | Ein Dictionary, das die zugewiesenen Variations der aktiven Features unter Verwendung der aktiven Feature-IDs als Schlüssel enthält. |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| KameleoonException.VisitorCodeInvalid | Ausnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen. |
GetFeatureVariationVariables()
- Verwenden Sie stattdessen
GetVariation().
- Diese Methode hieß zuvor
GetFeatureAllVariables(), die in der SDK-Version 4.0.0 entfernt wurde.
Rufen Sie diese Methode auf, um alle Feature-Variablen für ein Feature abzurufen. Sie können Feature-Variablen in der Kameleoon-App ändern.
Diese Methode nimmt zwei Eingabeparameter: featureKey und variationKey. Sie gibt die Daten vom Typ Dictionary<string, object> zurück, wie in der Web-Oberfläche definiert. Sie löst eine Ausnahme (KameleoonException.FeatureNotFound) aus, wenn das angeforderte Feature nicht in der internen Konfiguration des SDK gefunden wurde.
string featureKey = "myFeature";
try {
var allVariables = kameleoonClient.GetFeatureVariationVariables(featureKey, variationKey);
} catch (KameleoonException.FeatureNotFound e) {
// The feature is not yet activated in the Kameleoon app.
} catch (KameleoonException.FeatureEnvironmentDisabled e) {
// The feature flag is disabled for the environment.
} catch (KameleoonException.FeatureVariationNotFound e) {
// The variation is not activated in the Kameleoon app (the associated experiment is not online).
} catch (Exception e) {
// This is a generic Exception handler which will handle all exceptions.
Console.WriteLine("Exception occurred");
}
Argumente
| Name | Typ | Beschreibung |
|---|
| featureKey | string | Identifikatorschlüssel des Features, das Sie abrufen müssen. Dieses Feld ist obligatorisch. |
| variationKey | string | Schlüssel der Variation, die Sie abrufen möchten. Dieses Feld ist erforderlich. |
Rückgabewert
| Typ | Beschreibung |
|---|
Dictionary<string, object> | Daten, die mit diesem feature flag verknüpft sind. Die Werte können eine Zahl, eine Zeichenfolge, ein Boolean oder ein Objekt sein (abhängig vom in der Web-Oberfläche definierten Typ). |
Ausgelöste Ausnahmen
| Typ | Beschreibung |
|---|
| KameleoonException.FeatureNotFound | Ausnahme, die anzeigt, dass das angeforderte Feature nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist in der Regel normal und bedeutet, dass das feature flag auf der Kameleoon-Seite noch nicht aktiviert wurde. |
| KameleoonException.FeatureEnvironmentDisabled | Ausnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development). |
| KameleoonException.FeatureVariationNotFound | Ausnahme, die anzeigt, dass die angeforderte Variation-ID nicht in der internen Konfiguration des SDK gefunden wurde. Dies bedeutet in der Regel, dass das der Variation entsprechende Experiment in der Kameleoon-App nicht aktiviert ist. |