Zum Hauptinhalt springen
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.
Install-Package 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üsselBeschreibungStandardwert
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.
Device A
// 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);
Device B
// 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.
Da die Custom Data, die Sie als Kennung verwenden, auf Visitor scope gesetzt sein muss, müssen Sie die geräteübergreifende Custom Data-Synchronisierung verwenden, um die Kennung mit der Methode GetRemoteVisitorData() auf jedem Gerät abzurufen.
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
NameTypBeschreibungStandard
siteCode (erforderlich)stringDies ist ein eindeutiger Schlüssel des Kameleoon-Projekts, das Sie mit dem SDK verwenden.
configurationFilePath (optional)stringPfad zur SDK-Konfigurationsdatei./etc/kameleoon/client-csharp.conf
kameleoonConfig (optional)KameleoonClientConfigKonfigurations-SDK-Objekt, das Sie anstelle einer Konfigurationsdatei übergeben können.null
Rückgabewert
TypBeschreibung
IKameleoonClientEine Instanz der Klasse KameleoonClient, die zur Verwaltung Ihrer Experimente und feature flags verwendet wird.
Ausgelöste Ausnahmen
TypBeschreibung
KameleoonException.ConfigCredentialsInvalidAusnahme, die anzeigt, dass die angeforderten Anmeldeinformationen nicht in der Konfigurationsdatei oder als Argumente der Methode bereitgestellt wurden.
KameleoonException.SiteCodeIsEmptyAusnahme, 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
TypBeschreibung
TaskDie Aufgabe wird abgeschlossen, wenn der Client erfolgreich initialisiert wurde.
Ausgelöste Ausnahmen
TypBeschreibung
ExceptionAusnahme, 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
NameTypBeschreibung
visitorCodestringEindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
featureKeystringSchlüssel der Funktion, die Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch.
isUniqueIdentifier (Veraltet)boolEin optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional.
trackboolEin optionaler Parameter, um das Tracking der Feature-Auswertung zu aktivieren oder zu deaktivieren (standardmäßig true).
Rückgabewert
TypBeschreibung
boolWert der Funktion, die für einen bestimmten visitorCode registriert ist.
Ausgelöste Ausnahmen
TypBeschreibung
KameleoonException.VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene Visitor-Code nicht gültig ist. (Er ist entweder leer oder länger als 255 Zeichen).
KameleoonException.FeatureNotFoundAusnahme, 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
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
featureKey (erforderlich)stringSchlüssel der Funktion, die Sie einem Besucher aussetzen möchten.
track (optional)boolEin optionaler Parameter, um das Tracking der Feature-Auswertung zu aktivieren oder zu deaktivieren.true
Rückgabewert
TypBeschreibung
VariationEine einem bestimmten Besucher für ein bestimmtes feature flag zugewiesene Variation.
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen.
FeatureNotFoundAusnahme, 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).
FeatureEnvironmentDisabledAusnahme, 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
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
onlyActive (optional)boolEin optionaler Parameter, der angibt, ob Variations für aktive (true) oder alle (false) feature flags zurückgegeben werden sollen.false
track (optional)boolEin optionaler Parameter, um das Tracking der Feature-Auswertung zu aktivieren oder zu deaktivieren.true
Rückgabewert
TypBeschreibung
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
TypBeschreibung
VisitorCodeInvalidAusnahme, 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
TypBeschreibung
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
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
experimentId (erforderlich)intExperiment Id, die während des Auswertungsprozesses angesprochen und ausgewählt wird.
variationKey (erforderlich)stringVariation 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)boolGibt 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
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen.
FeatureExperimentNotFoundAusnahme, 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.
FeatureVariationNotFoundAusnahme, 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
NameTypBeschreibung
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, 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:
  1. 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.
  2. 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.
  3. 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
NameTypBeschreibung
RequestMicrosoft.AspNetCore.Http.HttpRequest / System.Web.HttpRequestDas aktuelle Request-Objekt sollte als erster Parameter übergeben werden. Dieses Feld ist obligatorisch.
ResponseMicrosoft.AspNetCore.Http.HttpResponse / System.Web.HttpResponseDas aktuelle Response-Objekt sollte als zweiter Parameter übergeben werden. Dieses Feld ist obligatorisch.
defaultVisitorCodestringDieser 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
TypBeschreibung
stringEin visitorCode, der mit diesem bestimmten Benutzer verknüpft wird und mit den meisten Methoden des SDK verwendet werden sollte.
Ausgelöste Ausnahmen
TypBeschreibung
KameleoonException.VisitorCodeInvalidAusnahme, 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
NameTypBeschreibungStandardwert
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
track (optional)boolGibt 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
TypBeschreibung
VisitorCodeInvalidAusnahme, 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
NameTypBeschreibung
instantboolBoolesches Flag, das angibt, ob die Daten sofort (true) oder gemäß dem geplanten Tracking-Intervall (false) gesendet werden sollen. Dieses Feld ist optional.
visitorCodestringEindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
isUniqueIdentifier (Veraltet)boolEin 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
NameTypBeschreibung
keystringDer Schlüssel, mit dem die Daten verknüpft sind, die Sie abrufen möchten. Dieses Feld ist obligatorisch.
timeoutint?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
TypBeschreibung
JObjectDaten, die mit dem Abrufen von Daten für einen bestimmten Schlüssel verknüpft sind.
Ausgelöste Ausnahmen
TypBeschreibung
ExceptionAusnahme, 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
NameTypBeschreibung
visitorCodestringDer Visitor-Code, für den Sie die zugewiesenen Daten abrufen möchten. Dieses Feld ist obligatorisch.
addDataboolEin Boolean, der angibt, ob die Methode die abgerufenen Daten automatisch für einen Besucher hinzufügen soll. Dieses Feld ist optional.
timeoutint?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.
filterKameleoon.Types.RemoteVisitorDataFilterFilter, 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)boolEin optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional.
Rückgabewert
TypBeschreibung
Task<IReadOnlyCollection<IData>>Sammlung, die einem bestimmten Besucher zugeordnet ist.
Ausgelöste Ausnahmen
TypBeschreibung
HttpRequestExceptionAusnahme, die anzeigt, dass die Anfrage aus irgendeinem Grund fehlgeschlagen ist.
ExceptionAusnahme, 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:
NameTypBeschreibungStandard
previousVisitAmount (optional)intAnzahl der vorherigen Besuche, von denen Daten abgerufen werden sollen. Zahl zwischen 1 und 251
currentVisit (optional)boolWenn true, werden die Daten des aktuellen Besuchs abgerufentrue
customData (optional)boolWenn true, werden Custom Data abgerufen.true
pageViews (optional)boolWenn true, werden Seitendaten abgerufen.false
geolocation (optional)boolWenn true, werden Geolokalisierungsdaten abgerufen.false
device (optional)boolWenn true, werden Gerätedaten abgerufen.false
browser (optional)boolWenn true, werden Browser-Daten abgerufen.false
operatingSystem (optional)boolWenn true, werden Betriebssystem-Daten abgerufen.false
conversions (optional)boolWenn true, werden Conversion-Daten abgerufen.false
experiments (optional)boolWenn true, werden Experiment-Daten abgerufen.false
kcs (optional)boolWenn true, wird der Kameleoon Conversion Score (KCS) abgerufen. Erfordert das AI Predictive Targeting-Add-on.false
visitorCode (optional)boolWenn 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)boolWenn 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
NameTypBeschreibung
visitorCodestringEine eindeutige Besucher-Identifikationszeichenfolge, darf 255 Zeichen Länge nicht überschreiten.
customDataIndexintEine Ganzzahl, die den Index der Custom Data darstellt, die Sie zum Targeting Ihrer BigQuery Audiences verwenden möchten.
warehouseKeystringEin eindeutiger Schlüssel zur Identifizierung der Warehouse-Daten (in der Regel Ihre interne Benutzer-ID). Dieses Feld ist optional.
timeoutint?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
TypBeschreibung
Task<CustomData>Eine CustomData-Instanz, die bestätigt, dass die Daten zum Besucher hinzugefügt wurden.
Ausgelöste Ausnahmen
TypBeschreibung
KameleoonException.VisitorCodeInvalidAusnahme, die anzeigt, dass der bereitgestellte Visitor-Code nicht gültig ist (er ist entweder leer oder länger als 255 Zeichen).
HttpRequestExceptionAusnahme, die anzeigt, dass die Anfrage aus irgendeinem Grund fehlgeschlagen ist.
ExceptionAusnahme, 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
NameTypBeschreibung
visitorCodestringDie eindeutige Kennung des Benutzers. Dieses Feld ist erforderlich.
legalConsentboolEin 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.
responseMicrosoft.AspNetCore.Http.HttpResponse / System.Web.HttpRequestDie 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
TypBeschreibung
KameleoonException.VisitorCodeInvalidAusnahme, 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
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
goalId (erforderlich)intID des Ziels.
revenue (optional)float?Umsatz der Conversion.0
negative (optional)boolDefiniert, 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)boolEin 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
TypBeschreibung
VisitorCodeInvalidAusnahme, 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
NameTypBeschreibung
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
Rückgabewert
TypBeschreibung
stringJavaScript-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
NameTypBeschreibung
handlerActionDer 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.
NameTypBeschreibung
browser (erforderlich)Browser.BrowsersListe 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

NameTypBeschreibung
urlstringURL der angezeigten Seite. Dieses Feld ist obligatorisch.
titlestringTitel der angezeigten Seite. Dieses Feld ist obligatorisch.
referrersint[]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.
NameTypBeschreibungStandard
goalId (erforderlich)intID des Ziels.
revenue (optional)floatUmsatz der Conversion.0
negative (optional)boolDefiniert, 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.
NameTypBeschreibungStandard
index/name (erforderlich)int/stringIndex 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)boolFlag zur expliziten Steuerung, wie die Werte gespeichert werden und wie sie in Berichten erscheinen. Mehr anzeigentrue
  • 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

NameTypBeschreibung
deviceDevice.TypeListe 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.
NameTypBeschreibung
ValuestringDer 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.
NameTypBeschreibung
valueboolParameter 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.
NameTypBeschreibung
typeOperatingSystem.TypeListe der Betriebssysteme: WINDOWS, MAC, IOS, LINUX, ANDROID und WINDOWS_PHONE. Dieses Feld ist erforderlich.
kameleoonClient.addData(visitorCode, new OperatingSystem(OperatingSystem.Type.WINDOWS));
Cookie enthält Informationen über das auf dem Gerät des Besuchers gespeicherte Cookie.
NameTypBeschreibung
cookiesIReadOnlyDictionary<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.
NameTypBeschreibung
country (erforderlich)stringDas Land des Besuchers.
region (optional)stringDie Region des Besuchers.
city (optional)stringDie Stadt des Besuchers.
postalCode (optional)stringDie Postleitzahl des Besuchers.
latitude (optional)floatDie Breitengrad-Koordinate, die den Standort des Besuchers darstellt. Die Koordinatenzahl stellt Dezimalgrad dar.
longitude (optional)floatDie 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.
NameTypBeschreibung
version (optional)stringDie 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.
NameTypBeschreibung
FeatureFlagsIReadOnlyDictionary<string, FeatureFlag>Eine Map von FeatureFlag-Objekten, indiziert nach feature flag-Schlüsseln.
DateModifiedlongDer 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).
NameTypBeschreibung
KeystringDer eindeutige Schlüssel, der die Variation identifiziert.
IdintDie ID der zugewiesenen Variation (oder Variation.UndefinedId, wenn es sich um die Standard-Variation handelt).
ExperimentIdintDie ID des mit der Variation verknüpften Experiments (oder Variation.UndefinedId, wenn Standard).
VariablesIReadOnlyDictionary<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.
NameTypBeschreibung
KeystringDer eindeutige Schlüssel, der die Variable identifiziert.
TypestringDer Typ der Variable. Mögliche Werte: BOOLEAN, NUMBER, STRING, JSON, JS, CSS.
ValueobjectDer 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.
Verwenden Sie stattdessen GetVariation().
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
NameTypBeschreibung
visitorCodestringEindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
featureKeystringSchlüssel der Funktion, die Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch.
isUniqueIdentifier (Veraltet)boolEin optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional.
Rückgabewert
TypBeschreibung
stringVariation-Schlüssel des feature flag, der für einen bestimmten visitorCode registriert ist.
Ausgelöste Ausnahmen
TypBeschreibung
KameleoonException.FeatureNotFoundAusnahme, 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.FeatureEnvironmentDisabledAusnahme, 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
NameTypBeschreibung
visitorCodestringEindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
Rückgabewert
TypBeschreibung
List<string>Liste der aktiven feature flag-IDs, die für einen bestimmten visitorCode verfügbar sind.

GetFeatureVariable()

  • 📨 Sendet Tracking-Daten an Kameleoon
Verwenden Sie stattdessen GetVariation().
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
NameTypBeschreibung
visitorCodestringEindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
featureKeystringSchlüssel der Funktion, die Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch.
variableKeystringSchlüssel der Variable, deren Wert Sie erhalten möchten. Dieses Feld ist obligatorisch.
isUniqueIdentifier (Veraltet)boolEin optionaler Parameter, um anzugeben, ob der visitorCode eine eindeutige Kennung ist. Wenn nicht angegeben, ist der Standardwert false. Das Feld ist optional.
Rückgabewert
TypBeschreibung
objectWert 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
TypBeschreibung
KameleoonException.FeatureNotFoundAusnahme, 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.FeatureEnvironmentDisabledAusnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development).
KameleoonException.FeatureVariableNotFoundAusnahme, 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.VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene Visitor-Code nicht gültig ist. (Er ist entweder leer oder länger als 255 Zeichen).

GetActiveFeatures()

Verwenden Sie stattdessen GetVariations().
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
NameTypBeschreibung
visitorCodestringEindeutige Kennung des Besuchers, für den Sie aktive feature flags abrufen möchten. Dieses Feld ist obligatorisch.
Rückgabewert
TypBeschreibung
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
TypBeschreibung
KameleoonException.VisitorCodeInvalidAusnahme, 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
NameTypBeschreibung
featureKeystringIdentifikatorschlüssel des Features, das Sie abrufen müssen. Dieses Feld ist obligatorisch.
variationKeystringSchlüssel der Variation, die Sie abrufen möchten. Dieses Feld ist erforderlich.
Rückgabewert
TypBeschreibung
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
TypBeschreibung
KameleoonException.FeatureNotFoundAusnahme, 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.FeatureEnvironmentDisabledAusnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development).
KameleoonException.FeatureVariationNotFoundAusnahme, 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.