Zum Hauptinhalt springen
Mit dem Go SDK können Sie Experimente ausführen und feature flags aktivieren. Die Integration unseres SDK in Ihre Webanwendung ist einfach, und sein Fußabdruck (Speicher- und Netzwerknutzung) ist gering. Erste Schritte: Hilfe für den Einstieg finden Sie im Entwicklerhandbuch. Änderungsprotokoll: Neueste Version des Go SDK: 3.18.0 Changelog. SDK-Methoden: Die vollständige Referenzdokumentation des Go SDK finden Sie im Abschnitt Referenz.

Entwicklerhandbuch

Folgen Sie diesem Abschnitt, um das SDK zu installieren und zu konfigurieren und um mehr über erweiterte Funktionen zu erfahren.

Erste Schritte

Installation des Go-Clients

Um das Kameleoon Go SDK zu installieren, verwenden Sie den Befehl go get und installieren Sie unser Paket direkt aus unserem GitHub-Repository. Führen Sie einfach den folgenden Befehl aus:
go get github.com/Kameleoon/client-go/v3

Zusätzliche Konfiguration

Um zusätzliche Einstellungen für das Go SDK bereitzustellen, können Sie eine Konfigurationsdatei verwenden, mit der Sie das Verhalten des SDK anpassen können. Sie können eine Beispielkonfigurationsdatei hier herunterladen. Wir empfehlen, diese Datei am Standardpfad /etc/kameleoon/client-go.yaml zu installieren, der automatisch gelesen wird. Wenn Sie diesen Pfad anpassen müssen, können Sie der Methode NewClient() ein zusätzliches Argument übergeben. Geben Sie entweder eine Zeichenkette an, die einen alternativen Pfad zur Konfigurationsdatei angibt, oder fügen Sie ein JavaScript-Objekt (Map) hinzu, das die Konfiguration enthält. Die aktuelle Version des Go SDK verfügt über folgende Schlüssel in der Konfigurationsdatei:
SchlüsselBeschreibungStandardwert
ClientID / client_id (erforderlich)Erforderlich für die Authentifizierung beim Kameleoon-Dienst. Um Ihre client_id zu finden, lesen Sie die Dokumentation zu API credentials.
ClientSecret / client_secret (erforderlich)Erforderlich für die Authentifizierung beim Kameleoon-Dienst. Um Ihr client_secret zu finden, lesen Sie die Dokumentation zu API credentials.
SessionDuration / session_duration (optional)Bezeichnet das vordefinierte Zeitintervall, in dem Kameleoon den Besucher und die zugehörigen Daten im Speicher (RAM) speichert. Beachten Sie, dass die Erhöhung der Sitzungsdauer die Menge an RAM erhöht, die für die Speicherung der Besucherdaten zugewiesen werden muss.30 Minuten
RefreshInterval / refresh_interval (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 zur Übertragung von Änderungen, wie z. B. dem Aktivieren oder Deaktivieren von feature flags oder dem Starten von Experimenten, an Ihre Produktionsserver benötigt wird. Darüber hinaus bieten wir einen Streaming-Modus, der Server-Sent Events (SSE) verwendet, um neue Konfigurationen automatisch an das SDK zu übermitteln und neue Konfigurationen in Echtzeit ohne Verzögerungen anzuwenden.60 Minuten
DefaultTimeout / default_timeout (optional)Gibt den Timeout in Millisekunden für Netzwerkanfragen vom SDK an. Stellen Sie den Wert auf 30 Sekunden oder mehr ein, wenn Sie keine stabile Verbindung haben. Einige Methoden verfügen über 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
TrackingInterval / tracking_interval (optional)Gibt das Intervall für Tracking-Anfragen in Millisekunden an. Alle Besucher, die Kameleoon für einen feature flag bewertet hat oder deren Daten geflusht wurden, sind in dieser Tracking-Anfrage enthalten, die das SDK einmal pro Intervall durchführt. Der Mindestwert beträgt 1000 ms, was auch der Standardwert ist, und der Höchstwert beträgt 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. Weitere Informationen finden Sie im Artikel Umgebungen verwalten.production
TopLevelDomain / top_level_domain (im Hybridmodus erforderlich)Die aktuelle Top-Level-Domain für Ihre Website. Verwenden Sie das Format: example.com. Fügen Sie keine https://, www oder andere Subdomains hinzu. Kameleoon verwendet diese Information, um das entsprechende Cookie auf der Top-Level-Domain zu setzen.""
ProxyUrl / proxy_url (optional)Legt den Proxy-Host für alle ausgehenden Serveranfragen fest, die vom SDK getätigt werden.""
NetworkDomain / network_domain (optional)Benutzerdefinierte Domain, die von SDKs für ausgehende Anfragen verwendet wird, oft für das Proxying. Muss eine gültige Domain sein (z. B. example.com oder sub.example.com). Ungültige Formate verwenden standardmäßig den Kameleoon-Wert.""
VerboseMode / verbose_mode (veraltet)Boolescher Wert (true oder false), der zusätzliche Protokollierung aktiviert, einschließlich Netzwerkanfragen und Debug-Informationen. Dieses Feld ist veraltet und wird in SDK-Version 4.0.0 entfernt. Verwenden Sie stattdessen logging.SetLogLevel.false
Um mehr über client_id und client_secret zu erfahren und Anweisungen zu deren Beschaffung zu erhalten, lesen Sie bitte diesen Artikel. Es ist erwähnenswert, dass unser Go SDK die Automation API verwendet und dem OAuth 2.0 Client Credentials Flow folgt.

Initialisierung des Kameleoon-Clients

Sobald Sie unser SDK in Ihrer Anwendung installiert haben, müssen Sie Kameleoon initialisieren. Alle Interaktionen mit dem SDK, wie z. B. das Auslösen eines Experiments, erfolgen über das Objekt (den Kameleoon-Client), das mit der Methode NewClient() erstellt wurde. Sie können das Verhalten des SDK (z. B. die Umgebung oder die Anmeldeinformationen) anpassen, indem Sie ein Konfigurationsobjekt bereitstellen.
import (
	kameleoon "github.com/Kameleoon/client-go/v3"
)

// First option
config := &kameleoon.KameleoonClientConfig{
	Network: kameleoon.NetworkConfig{ // Optional
		ProxyURL:        "http://proxy-pass:1234/", // Optional
		DoTimeout:       10 * time.Second, // Optional
		ReadTimeout:     5 * time.Second, // Optional
		WriteTimeout:    5 * time.Second, // Optional
		MaxConnsPerHost: 10000, // Optional
	},
	ClientID:         "your-client-id", // This field is required. Please enter your client_id here.
	ClientSecret:     "your-client-secret", // This field is required. Please enter your client_secret here.
	TopLevelDomain:   "example.com", // This field is strictly recommended, otherwise you may have problems when using subdomains.
	RefreshInterval:  time.Hour, // Optional (60 minutes by default)
	TrackingInterval: time.Second, // Optional (1000 ms by default)
	Environment:      "staging", // Optional
	SessionDuration:  30 * time.Minute, // Optional (30 minutes by default)
    NetworkDomain:    "example.com", // Optional
}
client, err := KameleoonClientFactory.Create("your-project-sitecode", config)

// Second option
config, err := LoadConfig("/etc/kameleoon/client-go.yaml")
client, err := KameleoonClientFactory.Create("your-project-sitecode", config)
// Notice: In the example above, the configuration is loaded every time. To load it once, use `CreateFromFile`.

// Third option
client, err := KameleoonClientFactory.CreateFromFile("your-project-sitecode", "/etc/kameleoon/client-go.yaml")

Aktivieren eines feature flag

Zuweisen einer eindeutigen ID zu einem Benutzer
Um einem Benutzer eine eindeutige ID zuzuweisen, können Sie die Methode GetVisitorCode() verwenden. Wenn kein visitor code existiert (aus dem Cookie der Anforderungsheader), 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 Antwort-Header gesetzt. Wenn Sie Kameleoon im Hybridmodus verwenden, stellt der Aufruf der Methode GetVisitorCode() sicher, dass die eindeutige ID (visitor code) zwischen der Anwendungsdatei engine.js (zuvor kameleoon.js genannt) und dem SDK geteilt wird.
Abrufen einer Flag-Konfiguration
Um einen feature flag in Ihrem Code zu implementieren, müssen Sie zunächst den 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 AN/AUS-Zuständen als auch komplexere flags mit mehreren variations. Die Methode ruft die geeignete variation für den Benutzer ab, indem sie die Feature-Regeln überprüft, die variation zuweist und sie basierend auf dem featureKey und visitorCode zurückgibt. Die Methode IsFeatureActive() kann verwendet werden, wenn Sie die Konfiguration eines einfachen feature flag abrufen möchten, der nur einen AN- oder AUS-Zustand hat, im Gegensatz zu komplexeren feature flags mit mehreren variations oder Targeting-Optionen. Wenn Ihr feature flag zugehörige Variablen hat (wie z. B. spezifische Verhaltensweisen, die mit jeder variation verbunden sind), ermöglicht Ihnen GetVariation() auch den Zugriff auf das Objekt Variation, das Details zur zugewiesenen variation und ihrem zugehörigen Experiment bereitstellt. Diese Methode überprüft, ob der Benutzer zielgerichtet ist, findet die dem Besucher zugewiesene variation und speichert sie. Wenn GetVariationOptParams.Track=true, sendet das SDK das Expositionsereignis bei der nächsten Tracking-Anfrage an das angegebene Experiment, die automatisch basierend auf dem tracking_interval 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 ein Tracking durchgeführt wird. Wenn GetVariationOptParams.Track=false, werden vom SDK keine Expositionsereignisse gesendet. Dies ist nützlich, wenn Sie es vorziehen, Daten nicht über das SDK zu verfolgen, sondern sich stattdessen auf clientseitiges Tracking zu verlassen, das beispielsweise von der Kameleoon-Engine verwaltet wird. Außerdem ist das Setzen von GetVariationOptParams.Track=false hilfreich bei der Verwendung der Methode GetVariations(), 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
Hinzufügen von Datenpunkten, um einen Benutzer zu zielgerichtet oder Besuche in Berichten zu filtern / aufzuschlüsseln
Um einen Benutzer zielgerichtet anzusprechen, stellen Sie sicher, dass Sie seinem Profil relevante Datenpunkte hinzugefügt haben, bevor Sie die Feature-variation abrufen oder überprüfen, ob der 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, wenn Kameleoon im Hybridmodus verwendet wird), 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 Überprüfung, ob der 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 stehen die Datenpunkte, die Sie dem Besucherprofil hinzufügen, bei der Analyse Ihrer Experimente zur Verfügung, sodass Sie Ihre Ergebnisse nach Faktoren wie Gerät und Browser filtern und aufschlüsseln können. Der Hybridmodus von Kameleoon sammelt automatisch eine Vielzahl von Datenpunkten clientseitig, was es einfach macht, Ihre Ergebnisse basierend auf diesen vorgesammelten Datenpunkten aufzuschlüsseln. Die vollständige Liste finden Sie hier. Wenn Sie zusätzliche Datenpunkte verfolgen müssen, die über das hinausgehen, was automatisch gesammelt wird, können Sie die Custom Data-Funktion von Kameleoon verwenden. Mit Custom Data können Sie spezifische Informationen erfassen und 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 sicherzustellen, dass Ihre Ergebnisse korrekt sind, wird empfohlen, Bots mithilfe des Datentyps UserAgent herauszufiltern.
Verfolgen von Flag-Expositionen und Zielkonvertierungen
Wenn ein Benutzer eine gewünschte Aktion ausführt (z. B. einen Kauf tätigt), wird dies als Konvertierung aufgezeichnet. Um Konvertierungen zu verfolgen, verwenden Sie die Methode TrackConversion() und geben Sie die erforderlichen Parameter visitorCode und goalId an. Die Anfrage zur Konvertierungsverfolgung wird zusammen mit der nächsten geplanten Tracking-Anfrage gesendet, die das SDK in regelmäßigen Abständen sendet (definiert durch tracking_interval). Wenn Sie die Anfrage sofort senden möchten, verwenden Sie die Methode FlushVisitorInstantly().
Senden von Ereignissen an Analyselösungen
Um Konvertierungen 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 erforderlich ist, um Expositionsereignisse an Ihre Analyselösung zu senden. Mit dieser Methode können Sie Ereignisse aufzeichnen und an die gewünschte Analyseplattform senden.

Cross-Device-Experimente

Um Besucher zu unterstützen, die auf eine App von mehreren Geräten zugreifen, ermöglicht Kameleoon die Synchronisierung zuvor gesammelter Besucherdaten über jedes Gerät des Besuchers und die Abstimmung des Besuchsverlaufs zwischen Geräten durch Cross-Device-Experimente. Fallstudien und detaillierte Informationen darüber, wie Kameleoon Daten zwischen Geräten verarbeitet, finden Sie im Artikel zu Cross-Device-Experimenten.

Synchronisieren von Custom Data zwischen Geräten

Obwohl die Synchronisierung des benutzerdefinierten Mappings verwendet wird, um Besucherdaten zwischen Geräten abzugleichen, ist sie nicht immer erforderlich. Im Folgenden sind zwei Szenarien aufgeführt, in denen die Synchronisierung des benutzerdefinierten Mappings nicht erforderlich ist: Gleiche Benutzer-ID auf verschiedenen Geräten Wenn die gleiche Benutzer-ID konsistent auf allen Geräten verwendet wird, wird die Synchronisierung automatisch ohne benutzerdefinierte Mapping-Synchronisierung gehandhabt. Es reicht aus, die Methode GetRemoteVisitorData() aufzurufen, wenn Sie die zwischen mehreren Geräten gesammelten Daten synchronisieren möchten. Multi-Server-Instanzen mit konsistenten IDs In komplexen Konfigurationen mit mehreren Servern (z. B. verteilten Serverinstanzen), bei denen die gleiche Benutzer-ID auf allen Servern verfügbar ist, ist die Synchronisierung zwischen Servern (mit GetRemoteVisitorData()) ohne zusätzliche benutzerdefinierte Mapping-Synchronisierung ausreichend. Kunden, die zusätzliche Daten benötigen, können in der Beschreibung der Methode GetRemoteVisitorData() weitere Anleitungen finden. 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 in Kameleoon.
const VisitorScopeCustomDataIndex = 90

kameleoonClient.AddData(visitorCode, types.NewCustomData(VisitorScopeCustomDataIndex, "your data"))
err := kameleoonClient.FlushVisitor(visitorCode)
Device B
// Before working with the data, call the `GetRemoteVisitorData` method.
_, err := kameleoonClient.GetRemoteVisitorData(visitorCode, true)

// After calling the method, the SDK on Device B will have access to CustomData of Visitor scope defined on Device A.
// So, "your data" will be available for targeting and tracking the visitor.

Verwenden von Custom Data für die Sitzungszusammenführung

Cross-Device-Experimente ermöglichen die Kombination des Verlaufs eines Besuchers über alle seine Geräte hinweg (Verlaufsabstimmung). Die Verlaufsabstimmung ermöglicht das Zusammenführen verschiedener Besuchersitzungen in eine. Um den Besuchsverlauf abzugleichen, verwenden Sie CustomData, um einen eindeutigen Bezeichner für den Besucher bereitzustellen. Weitere Informationen finden Sie in der speziellen Dokumentation. Nachdem die Cross-Device-Abstimmung aktiviert wurde, ruft der Aufruf von GetRemoteVisitorData() mit dem Parameter userId alle bekannten Daten für einen bestimmten Benutzer ab. Sitzungen mit demselben Bezeichner werden in einem Experiment immer dieselbe variation anzeigen. In der Visitor-Ansicht der Ergebnisseiten Ihres Experiments erscheinen diese Sitzungen als ein einziger Besucher. Die SDK-Konfiguration stellt sicher, dass zugehörige Sitzungen immer dieselbe variation des Experiments sehen. Es gibt jedoch einige Einschränkungen hinsichtlich der Cross-Device-variation-Zuweisung. Diese Einschränkungen sind hier aufgeführt. Folgen Sie der Anleitung Cross-Device-Verlaufsabstimmung aktivieren, um Ihre Custom Data auf der Kameleoon-Plattform einzurichten. Anschließend können Sie das SDK normal verwenden. Die folgenden Methoden können im Kontext 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 Bezeichner verwenden, auf den Visitor-Geltungsbereich gesetzt werden müssen, müssen Sie die Cross-Device-Custom-Data-Synchronisierung verwenden, um den Bezeichner 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 Custom Data's index
// configured as a unique identifier in Kameleoon.
const MappingIndex = 91
const 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.
anonymousVariation, err := kameleoonClient.GetVariation(anonymousVisitorCode, FeatureKey)

// 2. After the visitor is authenticated

// Assume `userId` is the authenticated visitor's visitor code.
kameleoonClient.AddData(anonymousVisitorCode, types.NewCustomData(MappingIndex, userId))
err := kameleoonClient.FlushVisitorInstantly(anonymousVisitorCode)

// Indicate that `userId` is a unique identifier.
kameleoonClient.AddData(userId, types.NewUniqueIdentifier(true))

// 3. After the visitor has been authenticated

// Retrieve the variation for the `userId`, which will match the anonymous visitor code's variation.
userVariation, err := kameleoonClient.GetVariation(userId, FeatureKey)
isSameVariation := userVariation.Key == anonymousVariation.Key // true

// The `userId` and `anonymousVisitorCode` are now linked and tracked as a single visitor.
err := kameleoonClient.TrackConversionRevenue(userId, 123, 10.0)

// Additionally, the linked visitors will share all fetched remote visitor data.
_, err := kameleoonClient.GetRemoteVisitorData(userId, true)
In diesem Beispiel verfügt die Anwendung über eine Anmeldeseite. Da die Benutzer-ID zum Zeitpunkt der Anmeldung unbekannt ist, wird ein anonymer Besucherbezeichner verwendet, der von der Methode GetVisitorCode() generiert wird. Nachdem sich der Benutzer angemeldet hat, wird der anonyme Besucher mit der Benutzer-ID verknüpft und als eindeutiger Bezeichner für den Besucher verwendet.

Verwenden eines benutzerdefinierten Bucketing-Schlüssels

Standardmäßig verwendet Kameleoon eine eindeutige, anonyme Besucher-ID (visitorCode), um Benutzer feature flag variations zuzuweisen. Diese ID wird in der Regel auf dem Gerät des Benutzers generiert und gespeichert (in einem Browser-Cookie für client- und serverseitige SDKs - im persistenten 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 Ihren eigenen benutzerdefinierten Bezeichner 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 bei Ihren feature flag-Zuweisungen aufrechtzuerhalten, 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 einen Bezeichner wie eine accountId verwenden. Benutzerdefinierte Bucketing-Schlüssel sind entscheidend für A/B tests von Funktionen, die ein ganzes Team oder Unternehmen betreffen.
Durch die Implementierung eines benutzerdefinierten Bucketing-Schlüssels sorgen Sie für eine größere Konsistenz und Genauigkeit Ihrer Experimente, was zu zuverlässigeren Ergebnissen und einer besseren Benutzererfahrung führt.

Technische Details

Wenn Sie einen benutzerdefinierten Bucketing-Schlüssel für einen feature flag konfigurieren, stellen Sie Kameleoon einen bestimmten Bezeichner aus den Daten Ihrer Anwendung zur Verfügung:
client.AddData(visitorCode, types.NewCustomData(index, "newVisitorCode"))
  • Bereitstellung des benutzerdefinierten Schlüssels: Sie stellen Ihren benutzerdefinierten Bezeichner dem Kameleoon SDK über die Methode AddData() zur Verfügung. In dieser Methode übergeben Sie Ihren gewählten benutzerdefinierten Bucketing-Schlüssel als CustomData-Objekt. Hier bezieht sich newVisitorCode auf den Bezeichner, den 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 für den feature flag während des Erstellungs- oder Bearbeitungsprozesses des flag definiert und konfiguriert werden. Ohne diese entsprechende Konfiguration wendet das SDK-Bucketing Ihren benutzerdefinierten Schlüssel nicht an. Detaillierte Anweisungen zur Einrichtung 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 Ihren benutzerdefinierten Bezeichner gebunden ist, was konsistente Zuweisungen in verschiedenen Kontexten gewährleistet, in denen dieser Bezeichner vorhanden ist.
  • Datentracking und Analysen: Es ist wichtig zu beachten, dass, während der newVisitorCode (Ihr benutzerdefinierter Schlüssel) für Bucketing-Entscheidungen verwendet wird, alle nachfolgenden Daten (z. B. Tracking-Ereignisse und Konvertierungen) gesendet und mit dem ursprünglichen visitorCode verknüpft werden. Diese Trennung stellt sicher, dass Ihre Analysen die einzelnen Benutzerreisen und -interaktionen im breiteren Kontext Ihres Experiments genau widerspiegeln, selbst wenn das Bucketing auf einer höheren Ebene (z. B. einem Konto) oder über mehrere Geräte/Sitzungen hinweg durchgeführt wird. Ihre ursprünglichen Besucherdaten bleiben für eine umfassende Berichterstattung intakt.

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. sollte bei Verwendung einer userId 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 bewertet wird.

Targeting-Bedingungen

Die Kameleoon SDKs unterstützen eine Vielzahl vordefinierter Targeting-Bedingungen, die Sie verwenden können, um Benutzer in Ihren Kampagnen anzusprechen. Eine Liste der von diesem SDK unterstützten Bedingungen finden Sie unter Besuchsverlauf verwenden, um Benutzer anzusprechen. Sie können auch Ihre eigenen externen Daten verwenden, um Benutzer anzusprechen.

Protokollierung

Das SDK generiert Protokolle, um verschiedene interne Prozesse und Probleme widerzuspiegeln.

Protokollierungsstufen

Das SDK unterstützt die Konfiguration der Begrenzung der Protokollierung durch eine Protokollierungsstufe.
import (
	"development.kameleoon.net/sdk/go-sdk/v3/logging"
)

// The `NONE` log level does not allow logging.
logging.SetLogLevel(logging.NONE)

// The `ERROR` log level only allows logging issues that may affect the SDK's primary behavior.
logging.SetLogLevel(logging.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.
logging.SetLogLevel(logging.WARNING)

//The `INFO` log level allows logging general information on the SDK's internal processes.
// It extends the `WARNING` log level.
logging.SetLogLevel(logging.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.
logging.SetLogLevel(logging.DEBUG)

Benutzerdefinierte Verarbeitung von Protokollen

Das SDK schreibt seine Protokolle standardmäßig in die Konsolenausgabe. Dieses Verhalten kann überschrieben werden.
Die Begrenzung der Protokollierung durch eine Protokollierungsstufe wird unabhängig von der Protokollverarbeitungslogik durchgeführt.
import (
    "development.kameleoon.net/sdk/go-sdk/v3/logging"
    "github.com/sirupsen/logrus"
)

type CustomLogger struct {
}

func NewCustomLogger() logging.LoggerWithLevel {
    return &CustomLogger{}
}

func (dl CustomLogger) Log(level logging.LogLevel, message string) {
    switch level {
    case logging.NONE:
    case logging.ERROR:
        logrus.Error(message)
    case logging.WARNING:
        logrus.Warn(message)
    case logging.INFO:
        logrus.Info(message)
    case logging.DEBUG:
        logrus.Debug(message)
    }
}


// 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.
logging.SetLogLevel(logging.DEBUG) // Optional; defaults to `logging.WARNING`.
logging.SetLogger(NewCustomLogger())

Referenz

Dies ist eine vollständige Referenzdokumentation des Go SDK.

Initialisierung

Create()

Rufen Sie diese Methode vor allen anderen auf, um das SDK zu initialisieren. Diese Methode befindet sich in KameleoonClientFactory. Dies erstellt eine Instanz von KameleoonClient, um alle Interaktionen zwischen dem SDK und Ihrer App zu verwalten.
const siteCode = "sitecode"
config := &kameleoon.KameleoonClientConfig{
	// ...
}

client, err := KameleoonClientFactory.Create(siteCode, config)
Argumente
NameTypBeschreibung
siteCode (erforderlich)stringDies ist ein eindeutiger Schlüssel des Kameleoon-Projekts, das Sie mit dem SDK verwenden.
cfg (erforderlich)*KameleoonClientConfigStellt entweder den Pfad zur SDK-Konfigurationsdatei oder das Konfigurationsobjekt dar. Wenn Sie das Konfigurationsobjekt bereitstellen, muss es die korrekten Konfigurationsschlüssel enthalten.
Rückgabewert
TypBeschreibung
KameleoonClientEine Instanz des KameleoonClient, der zur Verwaltung Ihrer Experimente und feature flags verwendet wird.
errorEin Fehler ist beim Aufruf von Create aufgetreten. Der Fehler kann errs.SiteCodeIsEmpty oder errs.ConfigCredentialsInvalid sein.

CreateFromFile()

Rufen Sie diese Methode vor allen anderen auf, um das SDK zu initialisieren. Diese Methode befindet sich in KameleoonClientFactory. Dies erstellt eine Instanz von KameleoonClient, um alle Interaktionen zwischen dem SDK und Ihrer App zu verwalten.
const siteCode = "sitecode"
client, err := KameleoonClientFactory.CreateFromFile(siteCode, "/etc/kameleoon/client-go.yaml")
Argumente
NameTypBeschreibung
siteCode (erforderlich)stringEin Kameleoon siteCode.
cfgPath (erforderlich)stringEin Pfad zur Konfigurationsdatei. Die Datei wird nur geladen, wenn KameleoonClientFactory keine KameleoonClient-Instanz mit dem angegebenen siteCode speichert.
Rückgabewert
TypBeschreibung
KameleoonClientEine Instanz des KameleoonClient, der zur Verwaltung Ihrer Experimente und feature flags verwendet wird.
errorEin Fehler ist innerhalb von Create aufgetreten. Der Fehler kann errs.SiteCodeIsEmpty oder errs.ConfigCredentialsInvalid sein.

Forget()

Die Methode Forget entfernt eine KameleoonClient-Instanz mit dem angegebenen siteCode aus der KameleoonClientFactory und gibt die von der KameleoonClient-Instanz verwendeten Ressourcen frei. Die KameleoonClient-Instanz darf nach dem Aufruf der Methode Forget nicht mehr verwendet werden.
const siteCode = "sitecode"
KameleoonClientFactory.Forget(siteCode)
Argumente
NameTypBeschreibung
siteCodestringDer siteCode der KameleoonClient-Instanz, die aus der KameleoonClientFactory entfernt werden soll. Dieses Feld ist obligatorisch.

WaitInit()

Die Initialisierung des Kameleoon-Clients erfolgt nicht sofort, da sie eine Serveranfrage an unser CDN (Content Delivery Network) erfordert, um die aktuelle Konfiguration für alle aktiven Experimente und feature flags abzurufen. Die Methode WaitInit des kameleoon.KameleoonClient ermöglicht es Ihnen, zu warten, bis die KameleoonClient-Instanz einsatzbereit ist.
err := client.WaitInit()
if err != nil {
	// Client wasn't initialized properly
	fmt.Println(err)
} else {
	// The SDK has been initialized; you can fetch a feature flag / experiment configuration here.
}
Rückgabewert
TypBeschreibung
errorEin Fehler ist während des Initialisierungsprozesses aufgetreten.

Feature flags und variations

IsFeatureActive() / IsFeatureActiveWithTracking()

  • 📨 Sendet Tracking-Daten an Kameleoon (abhängig vom Parameter track)
Verwenden Sie diese Methode, wenn Sie die Konfiguration eines einfachen feature flag abrufen möchten, der nur einen AN- / AUS-Zustand hat, im Gegensatz zu komplexeren feature flags mit mehreren variations oder Targeting-Optionen. Wenn Ihr feature flag variations und Variablen hat, sollten Sie die Methode GetVariation verwenden. Sie nimmt einen visitorCode und einen featureKey als obligatorische Argumente entgegen, um zu überprüfen, ob der feature flag für einen bestimmten Benutzer aktiv ist. Wenn der Benutzer zuvor nicht mit Ihrem feature flag verknüpft wurde, gibt das SDK einen zufälligen booleschen Wert zurück (true, wenn der Benutzer diese Funktion haben soll, oder false, wenn nicht). Wenn der Benutzer jedoch bereits mit diesem feature flag registriert ist, erkennt das SDK den vorherigen Wert des feature flag.
Es ist wichtig, eine ordnungsgemäße Fehlerbehandlung in Ihrem Code einzurichten, um potenzielle Ausnahmen abzufangen, wie im Code-Beispiel gezeigt.
Wenn Sie einen visitorCode angeben, verwendet die Methode IsFeatureActive diesen als eindeutigen Besucherbezeichner, 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 geflushten Daten mit dem Besucher, der dem angegebenen Bezeichner zugeordnet ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode eines Besuchers zugreifen können, aber eine interne ID verwenden können, die über das Zusammenführen von Sitzungen mit diesem Besucher verknüpft ist.
Kameleoon verwendet Tracking, um Sitzungen und Besucher zu zählen, wenn Sie bestimmte Methoden aufrufen, wie z. B. IsFeatureActive(), GetVariation() oder GetVariations().Verwenden Sie den Standardwert true für den Parameter GetVariationOptParams.Track, wenn Sie Besucher einer variation aussetzen und sie zählen müssen. Setzen Sie den Parameter GetVariationOptParams.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 GetVariationsOptParams.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 Konfigurationsoption für das Tracking-Intervall auf bis zu fünf Sekunden konfigurieren. Kameleoon gruppiert Tracking-Ereignisse in eine einzige Sitzung, solange das Intervall zwischen Ereignissen weniger als 30 Minuten beträgt. Wenn mehr als 30 Minuten zwischen Tracking-Ereignissen verstreichen, zählt Kameleoon die Ereignisse als separate Sitzungen. Ein Besuch erscheint 30 Minuten nach dem letzten aufgezeichneten Ereignis in der Sitzung in Ihren Berichten.
const featureKey = "new_checkout"

// Check if a Feature Flag is active (ON / OFF)
hasNewCheckout, err := client.IsFeatureActive(visitorCode, featureKey)
// disabling tracking
hasNewCheckout, err := client.IsFeatureActiveWithTracking(visitorCode, featureKey, false)

if err != nil {
	switch err.(type) {
	case *errs.VisitorCodeInvalid:
		// The provided visitor code is not valid. Trigger the old checkout for this visitor.
		hasNewCheckout = false
	case *errs.FeatureConfigNotFound:
		// The Feature Key is not yet in the configuration file that has been fetched by the SDK. Trigger the old checkout for this visitor.
		hasNewCheckout = false
	default:
		// Handle unexpected errors
		panic(err)
	}
}
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 Standardstatus Then, for everyone else serve. Wenn Sie Off für diesen Standardstatus auswählen, gibt die Methode immer false zurück, auch wenn der Master-feature flag On ist.
Argumente
NameTypBeschreibung
visitorCodestringDie eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
featureKeystringDer Schlüssel des feature, das Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch.
isUniqueIdentifier (Veraltet)boolEin Parameter, um anzugeben, ob der visitorCode ein eindeutiger Bezeichner ist. Wenn nicht angegeben, ist der Standardwert false. Dieses Feld ist optional.
trackboolEin Parameter der Methode IsFeatureActiveWithTracking, um das Tracking der Feature-Bewertung zu aktivieren oder zu deaktivieren. IsFeatureActive(visitorCode, featureKey) entspricht IsFeatureActiveWithTracking(visitorCode, featureKey, true).
Rückgabewert
TypBeschreibung
boolWert des feature flag, der für einen bestimmten visitorCode registriert ist.
Ausgelöste Ausnahmen
TypBeschreibung
errs.FeatureConfigNotFoundDieser Fehler weist darauf hin, dass der angeforderte Feature-Schlüssel in der internen Konfiguration des SDK nicht gefunden werden konnte. Dies tritt typischerweise auf, wenn der feature flag noch nicht vom SDK abgerufen wurde, was passieren kann, wenn das SDK im Polling-Modus ist.
errs.VisitorCodeInvalidDieser Fehler wird zurückgegeben, wenn der bereitgestellte visitor code ungültig ist, d. h. wenn er leer ist oder seine Länge 255 Zeichen überschreitet.

GetVariation()

  • 📨 Sendet Tracking-Daten an Kameleoon (abhängig vom Parameter GetVariationOptParams.Track)
Ruft die Variation ab, die einem bestimmten Besucher für einen bestimmten feature flag zugewiesen ist. Diese Methode nimmt einen visitorCode und einen featureKey als obligatorische Argumente entgegen. Das Argument GetVariationOptParams.Track ist optional und standardmäßig auf true gesetzt. Sie gibt die zugewiesene Variation für den Besucher zurück. Wenn der Besucher keinen feature flag-Regeln zugeordnet ist, gibt die Methode die Standard-Variation für den angegebenen feature flag zurück. Stellen Sie sicher, dass in Ihrem Code eine ordnungsgemäße Fehlerbehandlung implementiert ist, um potenzielle Ausnahmen zu verwalten.
Die Standard-variation bezieht sich auf die variation, die einem Besucher zugewiesen wird, wenn er mit keiner vordefinierten Auslieferungsregel für einen feature flag übereinstimmt. Mit anderen Worten, es ist die Fallback-variation, die auf alle Benutzer angewendet wird, die nicht von spezifischen Regeln angesprochen werden. Sie wird als variation im Abschnitt “Then, for everyone else…” in einer Verwaltungsoberfläche dargestellt.
const featureKey = "new_checkout"

variation, err := client.GetVariation(visitorCode, featureKey)
// disabling tracking
variation, err := client.GetVariation(visitorCode, featureKey, NewGetVariationOptParams().Track(false))

if err != nil {
	// handle error
}

// Fetch a variable value for the assigned variation
title := variation.Variables["title"].Value

switch (variation.Key) {
	case "on":
		// Main variation key is selected for visitorCode
	case "alternative_variation":
		// Alternative variation key
	default:
		// Default variation key
}
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
featureKey (erforderlich)stringSchlüssel des feature, das Sie einem Besucher aussetzen möchten.
GetVariationOptParams.Track (optional)boolEin optionaler Parameter, um das Tracking der Feature-Bewertung zu aktivieren oder zu deaktivieren.true
Rückgabewert
TypBeschreibung
VariationEine zugewiesene Variation für einen bestimmten Besucher für einen bestimmten feature flag bei Erfolg, andernfalls ein Fehler.
Ausgelöste Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidAusnahme, die anzeigt, dass der bereitgestellte visitor code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen.
errs.FeatureNotFoundAusnahme, die anzeigt, dass der angeforderte Feature-Schlüssel nicht in der internen Konfiguration des SDK gefunden wurde. Dies bedeutet normalerweise, dass der feature flag in der Kameleoon-App nicht aktiviert ist (aber der Code, der die Funktion implementiert, bereits in der Anwendung bereitgestellt ist).
errs.FeatureEnvironmentDisabledAusnahme, die anzeigt, dass der 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 GetVariationsOptParams.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 jeden flag zurück, der dem angegebenen Besucher zugeordnet ist. Sie nimmt visitorCode als obligatorisches Argument entgegen, während GetVariationsOptParams.OnlyActive und GetVariationsOptParams.Track optional sind.
  • Wenn GetVariationsOptParams.OnlyActive auf true gesetzt ist, gibt die Methode GetVariations() feature flag-variations zurück, sofern der Benutzer nicht mit der off-variation gebucketet ist.
  • Der Parameter GetVariationsOptParams.Track steuert, ob die Methode die variation-Zuweisungen verfolgt oder nicht. Standardmäßig ist er auf true gesetzt. Wenn er auf false gesetzt ist, wird das Tracking deaktiviert.
Die zurückgegebene Map enthält die feature flag-Schlüssel als Schlüssel und ihre entsprechenden Variation als Werte. Wenn keine variation für einen feature flag zugewiesen ist, gibt die Methode die Standard-Variation für diesen flag zurück. Eine ordnungsgemäße Fehlerbehandlung sollte implementiert werden, um potenzielle Ausnahmen zu verwalten.
Die Standard-variation bezieht sich auf die variation, die einem Besucher zugewiesen wird, wenn er mit keiner vordefinierten Auslieferungsregel für einen feature flag übereinstimmt. Mit anderen Worten, es ist die Fallback-variation, die auf alle Benutzer angewendet wird, die nicht von spezifischen Regeln angesprochen werden. Sie wird als variation im Abschnitt “Then, for everyone else…” in einer Verwaltungsoberfläche dargestellt.
variations, err := client.GetVariations(visitorCode)
// all active variations
variations, err := client.GetVariations(visitorCode, NewGetVariationsOptParams().OnlyActive(true))
// disable tracking
variations, err := client.GetVariations(visitorCode, NewGetVariationsOptParams().Track(false))

if err != nil {
	// handle error
}
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
GetVariationsOptParams.OnlyActive (optional)boolEin optionaler Parameter, der angibt, ob variations für aktive (true) oder alle (false) feature flags zurückgegeben werden sollen.false
GetVariationsOptParams.Track (optional)boolEin optionaler Parameter, um das Tracking der Feature-Bewertung zu aktivieren oder zu deaktivieren.true
Rückgabewert
TypBeschreibung
map[string]VariationMap, die die zugewiesenen Variation-Objekte der feature flags mit den Schlüsseln der entsprechenden features bei Erfolg enthält, andernfalls einen Fehler.
Ausgelöste Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidAusnahme, die anzeigt, dass der bereitgestellte visitor code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen.
Argumente
NameTypBeschreibung
visitorCodestringEindeutige Kennung des Benutzers. Dieses Feld ist erforderlich.
OnlyActiveboolEin optionaler Parameter, der angibt, ob variations für aktive (true) oder alle (false) feature flags zurückgegeben werden sollen (Standardwert: false).
TrackboolEin optionaler Parameter, um das Tracking der Feature-Bewertung zu aktivieren oder zu deaktivieren (Standardwert: true).
Rückgabewert
TypBeschreibung
map[string]VariationMap, die die zugewiesenen Variations der feature flags mit den Schlüsseln 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.

SetForcedVariation()

Mit dieser Methode können Sie einem Benutzer programmatisch eine bestimmte Variation zuweisen und so den standardmäßigen Bewertungsprozess umgehen. Dies ist besonders nützlich für kontrollierte Experimente, bei denen die übliche Bewertungslogik nicht erforderlich ist oder übersprungen werden muss. Es kann auch in Szenarien wie Debugging oder benutzerdefinierten Tests hilfreich sein. Wenn eine erzwungene variation festgelegt wird, überschreibt sie die Echtzeit-Bewertungslogik von Kameleoon. Prozesse wie Segmentierung, Targeting-Bedingungen und algorithmische Berechnungen werden übersprungen. Um Segmentierung und Targeting-Bedingungen während eines Experiments zu erhalten, setzen Sie stattdessen SetForcedVariationOptParams.ForceTargeting=false.
Simulierte variations haben in der Ausführungsreihenfolge immer Vorrang. Wenn eine simulierte variation-Berechnung ausgelöst wird, wird sie vollständig verarbeitet und zuerst abgeschlossen.
Eine erzwungene variation wird genauso behandelt wie eine ausgewertete variation. Sie wird in den 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 ordnungsgemäße Ausnahmebehandlung ist unerlässlich, um sicherzustellen, dass Ihre Anwendung stabil und widerstandsfähig bleibt.
Es ist wichtig, erzwungene variations von simulierten variations zu unterscheiden:
  • Erzwungene variations: Sind spezifisch für ein einzelnes Experiment.
  • Simulierte variations: Beeinflussen das Gesamtergebnis des feature flag.
const experimentId = 9516

// Forcing the variation "on" in the experiment 9516 for the visitor.
err := client.SetForcedVariation(visitorCode, experimentId, "on")

// Forcing the variation "on" while preserving segmentation and targeting conditions during the experiment.
err := client.SetForcedVariation(
    visitorCode, experimentId, "on", NewSetForcedVariationOptParams().ForceTargeting(false),
)

// Resetting the forced variation in the experiment 9516 for the visitor.
err := client.SetForcedVariation(visitorCode, experimentId, "")

if err != nil {
    // Handling the error
}
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
experimentId (erforderlich)intExperiment Id, die während des Bewertungsprozesses angesprochen und ausgewählt wird.
variationKey (erforderlich)stringVariation Key, der einer Variation entspricht, die als Rückgabewert für das Experiment erzwungen werden soll. Wenn der Wert "" ist, wird die erzwungene variation zurückgesetzt.
SetForcedVariationOptParams.ForceTargeting (optional)boolGibt an, ob das Targeting für das Experiment erzwungen und übersprungen werden soll (true) oder wie im standardmäßigen Bewertungsprozess angewendet werden soll (false).true
Ausgelöste Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidAusnahme, die anzeigt, dass der bereitgestellte visitor code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen.
errs.FeatureExperimentNotFoundAusnahme, die anzeigt, dass die angeforderte experiment id nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das der Regel entsprechende Experiment auf der Seite von Kameleoon noch nicht aktiviert wurde.
errs.FeatureVariationNotFoundAusnahme, die anzeigt, dass der angeforderte variation key(id) nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das der variation entsprechende Experiment auf der Seite von Kameleoon noch nicht aktiviert wurde.

EvaluateAudiences()

  • 📨 Sendet Tracking-Daten an Kameleoon
Diese Methode bewertet Besucher anhand aller verfügbaren Audiences Explorer-Segmente und verfolgt diejenigen, die übereinstimmen. EvaluateAudiences() sollte aufgerufen werden, nachdem alle relevanten Besucherdaten festgelegt oder aktualisiert wurden, und kurz bevor eine Feature-variation abgerufen oder ein feature flag überprüft wird. Dieser Ansatz stellt sicher, dass der Besucher anhand der aktuellsten verfügbaren Daten bewertet wird, was eine genaue Zielgruppenzuweisung basierend auf allen Kriterien ermöglicht. Nach dem Aufrufen dieser Methode können Sie eine detaillierte Analyse der Segmentleistung im Audiences Explorer durchführen.
if err := client.EvaluateAudiences(visitorCode); err != nil {
    // Handling the error
}
Argumente
NameTypBeschreibung
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
Ausgelöste Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidAusnahme, die anzeigt, dass der bereitgestellte visitor code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen.

GetDataFile()

Um alle feature flags zu bewerten, verwenden Sie GetVariations(). Diese Methode ist effizienter als das Aufrufen von DataFile und das Iterieren durch flags mit GetVariation().
Gibt die aktuelle SDK-Konfiguration als DataFile-Objekt zurück.
dataFile := client.GetDataFile()
Rückgabewert
TypBeschreibung
DataFileDas DataFile, das die SDK-Konfiguration enthält

Besucherdaten

GetVisitorCode()

Diese Methode hieß früher ObtainVisitorCode, die in SDK-Version 3.0.0 entfernt wurde.
Um die Konsistenz der Benutzeridentifikation sicherzustellen, insbesondere bei Verwendung von Kameleoon im Hybridmodus, sollten Sie die Methode GetVisitorCode() aufrufen, um den Kameleoon-visitorCode für den aktuellen Besucher zu erhalten. So funktioniert es:
  1. Kameleoon prüft, ob mit der aktuellen HTTP-Anfrage ein kameleoonVisitorCode-Cookie verknüpft ist. Wenn gefunden, verwendet Kameleoon diesen Code als Besucherkennung.
  2. Wenn kein Cookie gefunden wird, generiert die Methode entweder zufällig einen neuen Bezeichner oder verwendet das Argument defaultVisitorCode, wenn es übergeben wird. Die Verwendung Ihrer Bezeichner als visitor codes ermöglicht es Ihnen, Kameleoon-Besucher mit Ihren eigenen Benutzern abzugleichen, ohne zusätzliche Suchvorgänge.
  3. Das serverseitige kameleoonVisitorCode-Cookie wird dann mit dem Bezeichnerwert über den HTTP-Header gesetzt, und die Methode gibt den Bezeichnerwert zurück.
Weitere Informationen finden Sie in diesem Artikel.
Wenn Sie sich entscheiden, Ihre eigene User ID anstelle des von Kameleoon generierten visitorCode anzugeben, liegt es in Ihrer Verantwortung sicherzustellen, dass die User ID eindeutig ist. Das SDK prüft die Eindeutigkeit nicht. Es ist wichtig zu beachten, dass die von Ihnen angegebene User ID 255 Zeichen nicht überschreiten darf, da überschüssige Zeichen dazu führen, dass eine Ausnahme ausgelöst wird.
Die Methode GetVisitorCode() ermöglicht es Ihnen, simulierte variations für einen Besucher festzulegen. Wenn Cookies (aus einer Anfrage oder einem Dokument) den Schlüssel kameleoonSimulationFFData enthalten, wird der standardmäßige Bewertungsprozess 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): Bei Verwendung von Kameleoon Web Experimentation oder des SDK im Hybridmodus wird das Cookie automatisch erstellt, wenn die Anzeige einer Variante mit dem Simulation Panel simuliert wird.
  • Manuell: Setzen Sie das Cookie kameleoonSimulationFFData manuell.
Es ist wichtig, simulierte variations von erzwungenen variations zu unterscheiden:
  • Simulierte variations: Beeinflussen das Gesamtergebnis des feature flag.
  • Erzwungene variations: Sind spezifisch für ein einzelnes Experiment.
⚙️ Manuelle EinrichtungStellen Sie sicher, dass das Cookie kameleoonSimulationFFData dem folgenden Format entspricht:
  • kameleoonSimulationFFData={"featureKey":{"expId":10,"varId":20}}: Simuliert die variation mit varId von Experiment 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 eine ordnungsgemäße Funktionalität zu gewährleisten, muss der Cookie-Wert als URI-Komponente mit einer Methode wie encodeURIComponent kodiert werden.
visitorCode, err := client.GetVisitorCode(req, resp)

visitorCode, err := client.GetVisitorCode(req, resp, "defaultVisitorCode")
Argumente
NameTypBeschreibung
request*fasthttp.RequestDas aktuelle fasthttp.Request-Objekt sollte als erster Parameter übergeben werden. Dieses Feld ist obligatorisch.
response*fasthttp.ResponseDas aktuelle fasthttp.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
(string, error)Ein Paar, bestehend aus einem visitorCode, der diesem bestimmten Benutzer zugeordnet wird, und einem Fehler. Es sollte mit den meisten Methoden des SDK verwendet werden.
Ausgelöste Ausnahmen
FehlermeldungBeschreibung
errs.VisitorCodeInvalidDieser Fehler wird zurückgegeben, wenn der bereitgestellte visitor code ungültig ist, d. h. wenn er leer ist oder seine Länge 255 Zeichen überschreitet.

AddData()

Die Methode AddData() fügt Targeting-Daten zum Speicher hinzu, sodass andere Methoden die Daten verwenden können, um zu entscheiden, ob der aktuelle Besucher angesprochen werden soll oder nicht. Die Methode AddData() gibt keinen Wert zurück und interagiert nicht selbstständig mit den Backend-Servern von Kameleoon. Stattdessen werden alle deklarierten Daten für die zukünftige Übertragung mit der Methode Flush*() gespeichert. Dieser Ansatz reduziert die Anzahl der Serveraufrufe, da die Daten in der Regel in einem einzigen Serveraufruf gruppiert werden, der durch Flush*() ausgelöst wird. Die Methode TrackConversion() sendet auch alle zuvor zugeordneten Daten, genau wie Flush*(). Das Gleiche gilt für die Methoden GetVariation() und GetVariations(), wenn eine Experimentierungsregel ausgelöst wird.
Jeder Besucher kann nur eine Instanz zugeordneter Daten für die meisten Datentypen haben. CustomData ist jedoch eine Ausnahme. Besucher können eine Instanz zugeordneter CustomData pro Index haben.
import (
	"github.com/Kameleoon/client-go/v3/types"
)
// Add a single data item (tracked by default)
client.AddData(visitorCode, types.NewBrowser(types.BrowserTypeChrome))

// Add multiple data items (tracked by default)
client.AddData(visitorCode,
    types.NewPageViewWithTitle("https://url.com", "title", 3),
    types.UserAgent("UserAgent"),
)

// Add multiple data items stored locally for targeting only (not sent to the Kameleoon Data API)
client.AddDataWithOptParams(
    visitorCode,
    NewAddDataOptParams().Track(false),
    types.NewPageViewWithTitle("https://url.com", "title", 3),
    types.UserAgent("UserAgent")
)
Argumente
NameTypBeschreibungStandardwert
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
track (optional)boolGibt an, ob die hinzugefügten Daten für das Tracking berechtigt 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
allData (erforderlich)...types.DataSammlung von Kameleoon-Datentypen.
Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidAusnahme, die anzeigt, dass der bereitgestellte visitor code nicht gültig ist. Er ist entweder leer oder länger als 255 Zeichen.

FlushAll() / FlushVisitor() / FlushVisitorInstantly()

  • 📨 Sendet Tracking-Daten an Kameleoon
Die Methoden FlushAll()/FlushVisitor()/FlushVisitorInstantly() sammeln die mit dem Besucher verknüpften Kameleoon-Daten. Sie senden dann eine Tracking-Anfrage zusammen mit allen Daten, die mit der Methode AddData hinzugefügt wurden und die noch nicht mit einer dieser Methoden gesendet wurden. Flush*() ist nicht blockierend, da der Serveraufruf 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, Daten nach jedem Aufruf von AddData() an den Server zu senden. Daher müssen Sie nur einmal am Ende Flush() aufrufen. Die Methode FlushVisitor()/FlushVisitorInstantly() verwendet visitorCode 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 geflushten Daten mit dem Besucher, der dem angegebenen Bezeichner zugeordnet ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode eines Besuchers zugreifen können, aber eine interne ID verwenden können, die über das Zusammenführen von Sitzungen mit diesem Besucher verknüpft ist.
import (
	"github.com/Kameleoon/client-go/v3/types"
)

visitorCode, err := client.GetVisitorCode(req, resp)

client.AddData(visitorCode, types.NewBrowser(types.BrowserTypeChrome))
client.AddData(visitorCode, types.NewConversionWithRevenue(32, 10, false))

client.FlushVisitor(visitorCode) // Interval tracking (most performant tracking method)
client.FlushAll() // Interval tracking for all visitors' unsent data

client.FlushVisitorInstantly(visitorCode) // Instant tracking
client.FlushAll(true) // Instant tracking for all visitors' unsent data

// if you operate with a unique ID
client.AddData(types.NewUniqueIdentifier(true))
client.FlushVisitor(visitorCode)
Argumente
NameTypBeschreibung
visitorCodestringDie eindeutige Kennung des Benutzers. Dieses Feld ist für FlushVisitor()/FlushVisitorInstantly() obligatorisch.
isUniqueIdentifier (Veraltet)boolEin Parameter der Methode FlushVisitor, um anzugeben, ob der visitorCode ein eindeutiger Bezeichner ist. Wenn nicht angegeben, ist der Standardwert false. Dieses Feld ist optional.
Ausgelöste Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidDiese Ausnahme wird ausgelöst, wenn der bereitgestellte visitor code ungültig ist, d. h. wenn er leer ist oder seine Länge 255 Zeichen überschreitet.

GetRemoteData()

Die Methode GetRemoteData() ruft externe Daten ab, die auf dem Remote-Server von Kameleoon für den angegebenen siteCode (angegeben im Konstruktor KameleoonClient) gemäß einem als Argument übergebenen Schlüssel gespeichert sind. Dieser Schlüssel ist typischerweise der Kameleoon Visitor Code oder Ihre User ID. Sie können diese Methode verwenden, um Benutzereinstellungen, historische Daten oder andere für die Logik Ihrer Anwendung relevante Daten abzurufen. Durch die Speicherung dieser Daten auf unseren hoch skalierbaren Servern mit unserer Data API können Sie große Datenmengen effizient verwalten und für alle Ihre Besucher oder Benutzer abrufen. Der Rückgabewert der Methode ist ein JSON-Objekt, das mit der Funktion json.Unmarshal() dekodiert werden kann. Sie können diese Daten verwenden, um erweiterte Targeting-Segmente für feature flags und Experimente zu erstellen oder Experiment- und Personalisierungsberichte basierend auf einem beliebigen Wert zu filtern, der in den abgerufenen Daten gespeichert ist.
type Test1 struct {
	Value string `json:"some field to insert or update"`
}

remoteData, err := s.client.GetRemoteData("USER_ID") // uses default timeout
var test1 Test1
err = json.Unmarshal(remoteData, &test1)

remoteData, err := s.client.GetRemoteData("USER_ID", 1000)
Beachten Sie, dass dieser Mechanismus asynchron ist, da ein Serveraufruf erforderlich ist.
Wir bieten integrierte Integrationen mit Mixpanel, Segment und GA4, um externe Kohorten abzurufen und sie in feature experiments zu verwenden. Der in diesen Integrationen verwendete Schlüssel ist entweder unser Visitor code oder Ihre User ID. Sie können sich auf den unten angegebenen Beispielcode beziehen, um Mixpanel-Kohorten abzurufen und zu verwenden:
//Retrieve and use Mixpanel Cohorts
type Cohort struct {
	Id        string `json:"mixpanel_cohort_id"`
	Name      string `json:"mixpanel_cohort_name"`
	ProjectId string `json:"mixpanel_cohort_project_id"`
}

type MixPanelCohorts struct {
	Cohorts []Cohort `json:"mixpanel_cohorts"`
}

remoteData, err := s.client.GetRemoteData("USER_ID")
var mixPanel MixPanelCohorts
if err = json.Unmarshal(remoteData, &mixPanel); err == nil {
	cohorts := make([]string, len(mixPanel.Cohorts))
	for _, cohort := range mixPanel.Cohorts {
		cohorts = append(cohorts, cohort.Id)
	}
	client.AddData(visitorCode, types.NewCustomData(customDataIndex, cohorts...))
}
Argumente
NameTypBeschreibung
keystringDer Schlüssel, mit dem die Daten, die Sie abrufen möchten, verknüpft sind. Dieses Feld ist obligatorisch. Dieser Schlüssel ist typischerweise der Kameleoon Visitor Code oder Ihre eigene User ID.
timeoutintDer Timeout-Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten, in Millisekunden. Dieses Feld ist optional; wenn nicht angegeben, verwendet die Methode den Standard-Timeout-Wert, der bei der Initialisierung des SDK bereitgestellt wurde.
Rückgabewert
TypBeschreibung
[]byteDies gibt die Informationen zurück, die mit dem Abrufen von Daten für einen bestimmten Schlüssel verknüpft sind. Das Ergebnis muss mit der Funktion json.Unmarshal() dekodiert werden.
Ausgelöste Ausnahmen
TypBeschreibung
errorFehler, der anzeigt, dass die Anfrage abgelaufen ist.

GetRemoteVisitorData()

GetRemoteVisitorData() ist eine asynchrone Methode zum Abrufen von Kameleoon-Besuchsdaten für den VisitorCode aus der Kameleoon Data API. Die Methode fügt die Daten dem Speicher hinzu, damit andere Methoden sie bei Targeting-Entscheidungen verwenden können. Die mit dieser Methode erhaltenen Daten spielen eine wichtige Rolle, wenn Sie:
  • Daten verwenden möchten, die von anderen Geräten gesammelt wurden.
  • auf den Verlauf eines Benutzers zugreifen möchten, wie z. B. zuvor besuchte Seiten bei vergangenen Besuchen.
  • Daten verwenden möchten, die nur clientseitig zugänglich sind, wie Datalayer-Variablen und Ziele, die nur im Frontend konvertieren.
Lesen Sie diesen Artikel, um die möglichen Anwendungsfälle besser zu verstehen.
Standardmäßig ruft GetRemoteVisitorData() automatisch die zuletzt gespeicherten Custom Data mit Scope=Visitor ab und verknüpft sie mit dem Besucher, ohne dass die Methode AddData() aufgerufen werden muss. Dies ist besonders nützlich für das Synchronisieren von Custom Data zwischen mehreren Geräten.
Der Parameter IsUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode eines Besuchers zugreifen können, aber eine interne ID verwenden können, die über das Zusammenführen von Sitzungen mit diesem Besucher verknüpft ist.
visitorCode := "visitorCode"
var visitorData []types.Data
var err error

// Visitor data will be fetched and automatically added for `visitorCode`
visitorData, err = client.GetRemoteVisitorData(visitorCode, true) // default timeout will be used
visitorData, err = client.GetRemoteVisitorData(visitorCode, true, time.Second) // 1000 milliseconds timeout

// If you only want to fetch data and add it yourself manually, set `addData` to `false`.
visitorData, err = client.GetRemoteVisitorData(visitorCode, false) // default timeout will be used
visitorData, err = client.GetRemoteVisitorData(visitorCode, false, time.Second) // 1000 milliseconds timeout

// If you operate with a unique ID
client.AddData(types.NewUniqueIdentifier(true))
visitorData, err = client.GetRemoteVisitorData(visitorCode, true)

// If you want to fetch a custom list of data types
var visitorData = client.GetRemoteVisitorDataWithFilter(
    visitorCode,
    true,
    types.RemoteVisitorDataFilter{PreviousVisitAmount: 10, CustomData: true, Conversion: true, Experiments: true},
    // default timeout will be used
)
// or
var visitorData = client.GetRemoteVisitorDataWithFilter(
    visitorCode,
    true,
    types.RemoteVisitorDataFilter{PreviousVisitAmount: 10, CustomData: true, Conversion: true, Experiments: true},
    time.Second, // 1000 milliseconds timeout
)
Argumente von GetRemoteVisitorData
NameTypBeschreibung
visitorCodestringDer visitor code, für den Sie die zugewiesenen Daten abrufen möchten. Dieses Feld ist obligatorisch.
addDataboolEin boolescher Wert, der angibt, ob die Methode automatisch abgerufene Daten für einen Besucher hinzufügen soll. Dieses Feld ist obligatorisch.
timeouttime.DurationDer Timeout-Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten, in Millisekunden. Dieses Feld ist optional; wenn nicht angegeben, verwendet die Methode den Standard-Timeout-Wert, der bei der Initialisierung des SDK bereitgestellt wurde.
Argumente von GetRemoteVisitorDataWithFilter
NameTypBeschreibung
visitorCodestringDer visitor code, für den Sie die zugewiesenen Daten abrufen möchten. Dieses Feld ist obligatorisch.
addDataboolEin boolescher Wert, der angibt, ob die Methode automatisch abgerufene Daten für einen Besucher hinzufügen soll. Dieses Feld ist obligatorisch.
filtertypes.RemoteVisitorDataFilterFilter zur Angabe, welche Daten aus den Besuchen abgerufen werden sollen. Dieses Feld ist obligatorisch.
timeouttime.DurationDer Timeout-Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten, in Millisekunden. Dieses Feld ist optional; wenn nicht angegeben, verwendet die Methode den Standard-Timeout-Wert, der bei der Initialisierung des SDK bereitgestellt wurde.
Argumente von GetRemoteVisitorDataWithOptParams
Die Methode GetRemoteVisitorDataWithOptParams ist veraltet. Verwenden Sie stattdessen GetRemoteVisitorDataWithFilter und UniqueIdentifier.
NameTypBeschreibung
visitorCodestringDer visitor code, für den Sie die zugewiesenen Daten abrufen möchten. Dieses Feld ist obligatorisch.
addDataboolEin boolescher Wert, der angibt, ob die Methode automatisch abgerufene Daten für einen Besucher hinzufügen soll. Dieses Feld ist obligatorisch.
filtertypes.RemoteVisitorDataFilterFilter zur Angabe, welche Daten aus den Besuchen abgerufen werden sollen. Dieses Feld ist obligatorisch.
paramskameleoon.RemoteVisitorDataOptParamsOptionale Parameter.
Hier ist die Liste der Felder von kameleoon.RemoteVisitorDataOptParams:
NameTypBeschreibung
IsUniqueIdentifier (optional) (Veraltet)boolEin Parameter, um anzugeben, ob der visitorCode ein eindeutiger Bezeichner ist. Wenn nicht angegeben, ist der Standardwert false.
Timeout (optional)time.DurationDer Timeout-Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten, in Millisekunden. Dieses Feld ist optional; wenn nicht angegeben, verwendet die Methode den Standard-Timeout-Wert, der bei der Initialisierung des SDK bereitgestellt wurde.
Der Standardwert von kameleoon.RemoteVisitorDataOptParams, der types.RemoteVisitorDataFilter{PreviousVisitAmount: 1, CurrentVisit: true, CustomData: true} ist, kann mit der Funktion types.DefaultRemoteVisitorDataFilter() abgerufen werden.
Rückgabewert
TypBeschreibung
[]types.DataEine Slice von Daten, die dem angegebenen Besucher zugewiesen sind.
errorEin aufgetretener Fehler.
Verwenden von Parametern in GetRemoteVisitorData()
Die Methode GetRemoteVisitorData() bietet Flexibilität, indem sie Ihnen ermöglicht, verschiedene Parameter beim Abrufen von Daten zu Besuchern zu definieren. Egal, ob Sie auf Basis von Zielen, Experimenten oder variations zielen, derselbe Ansatz gilt für alle Datentypen. Angenommen, Sie möchten Daten zu Besuchern abrufen, die ein Ziel “Order transaction” erreicht haben. Sie können Parameter innerhalb der Methode GetRemoteVisitorData() angeben, um Ihr Targeting zu verfeinern. Wenn Sie beispielsweise nur Benutzer ansprechen möchten, die das Ziel in ihren letzten fünf Besuchen 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 Besucherverhalten abzurufen.
Hier ist die Liste der verfügbaren types.RemoteVisitorDataFilter-Optionen:
NameTypBeschreibungStandard
PreviousVisitAmount (optional)intAnzahl der vorherigen Besuche, aus 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 Browserdaten abgerufen.false
OperatingSystem (optional)boolWenn true, werden Betriebssystemdaten abgerufen.false
Conversions (optional)boolWenn true, werden Konvertierungsdaten abgerufen.false
Experiments (optional)boolWenn true, werden Experimentdaten abgerufen.false
Kcs (optional)boolWenn true, wird der Kameleoon Conversion Score (KCS) abgerufen. Erfordert das AI Predictive Targeting-Add-onfalse
VisitorCode (optional)boolWenn true, ruft Kameleoon den visitorCode aus dem letzten Besuch ab und verwendet ihn für den aktuellen Besuch. Dies ist erforderlich, wenn Sie sicherstellen möchten, dass der durch seinen visitorCode identifizierte Besucher bei Cross-Device-Experimenten immer die gleiche variation über Besuche hinweg erhält.true
Personalization (optional)boolWenn true, werden Personalisierungsdaten abgerufen. Dies ist für die Personalisierungsbedingung erforderlich.false
cbs (optional)boolWenn true, werden Contextual Bandit-Score-Daten abgerufen.false

GetVisitorWarehouseAudience()

Ruft alle dem Besucher zugeordneten Zielgruppendaten in Ihrem Data Warehouse unter Verwendung des angegebenen VisitorCode und WarehouseKey ab. Der WarehouseKey ist typischerweise Ihre interne Benutzer-ID. Der Parameter CustomDataIndex entspricht den Kameleoon Custom Data, die Kameleoon zum Ansprechen Ihrer Besucher verwendet. Sie können in der Warehouse-Targeting-Dokumentation weitere Details nachlesen. Die Methode gibt ein CustomData-Objekt zurück, das bestätigt, dass die Daten dem Besucher hinzugefügt wurden und für Targeting-Zwecke verfügbar sind.
customData, err = client.GetVisitorWarehouseAudience(VisitorWarehouseAudienceParams{
    VisitorCode:     "visitorCode",
    CustomDataIndex: 10,
    WarehouseKey:    "warehouseKey", // optional
    Timeout:         5 * time.Second, // optional
})

customData, err = c.GetVisitorWarehouseAudienceWithOptParams(
    "visitorCode", 10, VisitorWarehouseAudienceOptParams{WarehouseKey: "warehouseKey", Timeout: 5 * time.Second})
Argumente von GetVisitorWarehouseAudience
NameTypBeschreibung
VisitorCodestringEine eindeutige Besucheridentifikationszeichenfolge, darf 255 Zeichen nicht überschreiten.
CustomDataIndexintEine ganze Zahl, die den Index der Custom Data darstellt, die Sie zum Ansprechen 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.
Timeouttime.DurationDer Timeout-Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten, in Millisekunden. Dieses Feld ist optional; wenn nicht angegeben, verwendet die Methode den Standard-Timeout-Wert, der bei der Initialisierung des SDK bereitgestellt wurde. Dieses Feld ist optional.
Argumente von GetVisitorWarehouseAudienceWithOptParams
NameTypBeschreibung
visitorCodestringEine eindeutige Besucheridentifikationszeichenfolge, darf 255 Zeichen nicht überschreiten.
customDataIndexintEine ganze Zahl, die den Index der Custom Data darstellt, die Sie zum Ansprechen Ihrer BigQuery-Audiences verwenden möchten.
paramskameleoon.VisitorWarehouseAudienceOptParamsOptionale Parameter.
Hier ist die Liste der Felder von kameleoon.VisitorWarehouseAudienceOptParams:
NameTypBeschreibung
WarehouseKeystringEin eindeutiger Schlüssel zur Identifizierung der Warehouse-Daten (in der Regel Ihre interne Benutzer-ID). Dieses Feld ist optional.
Timeouttime.DurationDer Timeout-Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten, in Millisekunden. Dieses Feld ist optional; wenn nicht angegeben, verwendet die Methode den Standard-Timeout-Wert, der bei der [Initialisierung des SDK] bereitgestellt wurde. Dieses Feld ist optional.
Für die Methode GetVisitorWarehouseAudience werden die Parameter als params der Struktur VisitorWarehouseAudienceParams an die Funktion übergeben, um einige davon optional zu machen (WarehouseKey und Timeout).Für die Methode GetVisitorWarehouseAudienceWithOptParams werden nur optionale Parameter als params der Struktur VisitorWarehouseAudienceOptParams an die Funktion übergeben.
Rückgabewert
TypBeschreibung
*types.CustomDataEine CustomData-Instanz, die bestätigt, dass die Daten dem Besucher hinzugefügt wurden.
errorEin aufgetretener Fehler.

SetLegalConsent()

Sie müssen diese Methode verwenden, um anzugeben, ob der Besucher die rechtliche Zustimmung zur Verwendung personenbezogener Daten erteilt hat. Wenn Sie den Parameter legalConsent auf false setzen, werden die Datentypen, die Sie in Tracking-Anfragen einbeziehen können, eingeschränkt. 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 Richtlinie zur Verwaltung der Einwilligung.
visitorCode, err := kameleoonClient.GetVisitorCode(req, resp)

err := kameleoonClient.SetLegalConsent(visitorCode, true, resp)
Argumente
NameTypBeschreibung
visitorCodestringDie eindeutige Kennung des Benutzers. Dieses Feld ist erforderlich.
consentboolEin boolescher Wert, der den Status der rechtlichen Einwilligung darstellt. true zeigt an, dass der Besucher die rechtliche Einwilligung gegeben hat, false zeigt an, dass der Besucher nie eine rechtliche Einwilligung gegeben oder diese zurückgezogen hat. Dieses Feld ist erforderlich.
response*fasthttp.ResponseDie HTTP-Antwort, bei der die Werte in den Cookies basierend auf dem Status der rechtlichen Einwilligung angepasst werden. Dieses Feld ist optional.
Ausgelöste Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidDieser Fehler wird zurückgegeben, wenn der bereitgestellte visitor code ungültig ist, d. h. wenn er leer ist oder seine Länge 255 Zeichen überschreitet.
Verhalten beim Widerruf der Einwilligung
Wenn Sie SetLegalConsent() mit consent=false aufrufen, löscht das SDK das Cookie kameleoonVisitorCode nicht. Stattdessen wird die Verlängerung des Ablaufdatums des Cookies eingestellt, sodass das Cookie bis zu seinem natürlichen Ablauf bestehen bleibt. Wenn Ihre Compliance-Anforderungen die sofortige Entfernung der Cookie-Datei bei 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 Konvertierung für ein bestimmtes Ziel und einen Benutzer zu verfolgen. Diese Methode erfordert visitorCode und goalId. Darüber hinaus akzeptiert diese Methode auch die optionalen Argumente TrackConversionOptParams.Revenue, TrackConversionOptParams.Negative und TrackConversionOptParams.Metadata. Der visitorCode ist normalerweise identisch mit demjenigen, der beim Auslösen des Experiments verwendet wurde. Die Methode TrackConversion() gibt keinen Wert zurück. Diese Methode ist nicht blockierend, da der Serveraufruf asynchron erfolgt.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann auch in anderen Edge-Case-Szenarien 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 die Funktionen zur Sitzungszusammenführung verbunden ist.
import (
	"github.com/Kameleoon/client-go/v3/types"
)

const goalID = 83023

client.TrackConversion(visitorCode, goalID)

client.TrackConversionRevenue(visitorCode, goalID, 10.0)

// Add metadata
client.TrackConversionWithOptParams(visitorCode, goalID, TrackConversionOptParams{
    Metadata: []*types.CustomData{
        types.NewCustomData(3, "metadata1", "md2"),
        types.NewCustomData(5, "md3")
    },
})
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutige Kennung des Besuchers.
goalId (erforderlich)intID des Ziels.
TrackConversionOptParams.Revenue (optional)float64Umsatz der Konvertierung.0
TrackConversionOptParams.Negative (optional)boolDefiniert, ob der Umsatz positiv oder negativ ist.false
TrackConversionOptParams.Metadata (optional)[]*CustomDataErmöglicht Ihnen, bestimmte Werte für Custom Data festzulegen, die als Metadaten für das Ziel in der Kameleoon-App 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”).nil
isUniqueIdentifier (veraltet)boolEin optionaler Parameter, um anzugeben, ob der visitorCode ein eindeutiger Bezeichner ist.false
TrackConversionOptParams.Metadata-Werte sind über Rohdatenexporte und die Ergebnisseite zugänglich.Wenn der Parameter TrackConversionOptParams.Metadata bereitgestellt wird, verwendet Kameleoon diese angegebenen Werte für die aktuelle Konvertierung 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 Konvertierung und innerhalb desselben Besuchs.Kameleoon berücksichtigt nur die Metadaten-Werte, die explizit als Parameter an die Methode TrackConversion() übergeben werden.Im folgenden Beispiel verknüpft Kameleoon die Konvertierung nur mit dem explizit als Parameter angegebenen Custom Data-Wert (hier: Index 5 mit dem Wert ‘Amex Credit Card’).
kameleoonClient.AddData(visitorCode, types.NewCustomData(5, "Credit Card"), types.NewCustomData(9, "Express Delivery"));
kameleoonClient.TrackConversionWithOptParams(visitorCode, 10, TrackConversionOptParams{
    Metadata: []*types.CustomData{
        types.NewCustomData(9, "Amex Credit Card"),
    },
})
Ausnahmen
TypBeschreibung
errs.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-Warteschlangenbefehle 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 Analyseintegration. Weitere Informationen zur Implementierung dieser Methode finden Sie unter Hybrid-Experimente.
engineTrackingCode := kameleoonClient.GetEngineTrackingCode(visitorCode)
  • Um diese Funktion zu nutzen, implementieren Sie sowohl das Go SDK als auch Kameleoon Engine.js. Da Engine.js in diesem Ablauf nur für das Tracking verwendet wird, können Sie das asynchrone Tag vor dem schließenden </body>-Tag installieren.
  • Wenn Sie Experimente nur 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 variations automatisch, wenn Sie getVisitorCode aufrufen, sofern Sie die entsprechenden Experimentzuweisungen zu window.kameleoonQueue hinzufügen.
  • Sie können den zurückgegebenen Tracking-Code direkt in ein 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 sind 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, der in die Seite eingefügt werden soll.

Ereignisse

OnUpdateConfiguration()

kameleoonClient.OnUpdateConfiguration(
	// configuration was updated
)
Die Methode OnUpdateConfiguration ermöglicht es Ihnen, das Ereignis zu behandeln, wenn die Konfiguration Daten aktualisiert hat. Sie nimmt einen Eingabeparameter, handler, entgegen. Der Handler, der aufgerufen wird, wenn die Konfiguration mit einem Echtzeit-Konfigurationsereignis aktualisiert wird.
Argumente
NameTypBeschreibung
handlerfunc()Der Handler, der aufgerufen wird, wenn die Konfiguration mit einem Echtzeit-Konfigurationsereignis aktualisiert wird.

Datentypen

Browser

Der hier gespeicherte Browser-Datensatz kann verwendet werden, um Experiment- und Personalisierungsberichte nach einem beliebigen damit verbundenen Wert zu filtern.
NameTypBeschreibung
browserType (erforderlich)BrowserTypeListe der Browser: BrowserTypeChrome, BrowserTypeIE, BrowserTypeFirefox, BrowserTypeSafari, BrowserTypeOpera, BrowserTypeOther.
version (optional)float32Version des Browsers, Gleitkommazahl, die die Haupt- und Nebenversion des Browsers darstellt
client.AddData(visitorCode, types.NewBrowser(types.BrowserTypeChrome))

client.AddData(visitorCode, types.NewBrowser(types.BrowserTypeSafari, 16.0))

Conversion

Der hier gespeicherte Conversion-Datensatz kann verwendet werden, um Experiment- und Personalisierungsberichte nach einem beliebigen damit verbundenen Ziel zu filtern.
  • Jeder Besucher kann mehrere Conversion-Objekte haben.
  • Sie finden die goalId in der Kameleoon-App.
NameTypBeschreibungStandard
goalId (erforderlich)intID des Ziels.
ConversionOptParams.Revenue (optional)float64Umsatz der Konvertierung0
ConversionOptParams.Negative (optional)boolDefiniert, ob der Umsatz positiv oder negativ ist.false
ConversionOptParams.Metadata (optional)[]*types.CustomDataMetadaten der Konvertierung.nil
client.AddData(visitorCode, types.NewConversion(32, true))

client.AddData(visitorCode, types.NewConversionWithRevenue(33, 10.0, false))

client.AddData(
    visitorCode,
    types.NewConversionWithOptParams(34, types.ConversionOptParams{
        Revenue: 5.0,
        Metadata: []*types.CustomData{
            types.NewCustomData(3, "metadata1", "md2"),
            types.NewCustomData(5, "md3"),
        },
    }),
)
client.AddData(visitorCode, types.NewConversion(32, false))

client.AddData(visitorCode, types.NewConversionWithRevenue(32, 10, false))
Cookie enthält Informationen über das auf dem Gerät des Besuchers gespeicherte Cookie.
NameTypBeschreibung
cookiesmap[string]stringEine Map von Zeichenkettenobjekten, 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 := types.NewCookie(map[string]string{
  "k1": "v1",
  "k2": "v2",
})
client.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)float64Die Breitengradkoordinate, die den Standort des Besuchers darstellt. Die Koordinatenzahl stellt Dezimalgrad dar.
longitude (optional)float64Die Längengradkoordinate, 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.
client.AddData(visitorCode, types.NewGeolocation("France", "Île-de-France", "Paris"))

client.AddData(visitorCode, types.NewGeolocationWithCoords(48.856667, 2.352222, "France", "Île-de-France", "Paris"))

CustomData

CustomData ermöglicht es, jede Art von Daten einfach mit jedem Besucher zu verknüpfen. Sie können dann als Targeting-Bedingung in Segmenten oder als Filter/Aufschlüsselung in Experimentberichten verwendet werden. Weitere Informationen zu Custom Data finden Sie in diesem 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)...stringDie Werte der zu speichernden Custom Data.
overwrite (optional)boolFlag zur expliziten Steuerung, wie die Werte gespeichert werden und wie sie in Berichten erscheinen. Mehr anzeigentrue
client.AddData(visitorCode, types.NewCustomData(1, "value"))

// With several values
client.AddData(visitorCode, types.NewCustomData(1, "value1", "value2"))

// To set the 'overwrite' flag to false
client.AddData(
    visitorCode,
    types.NewCustomDataWithOptParams(1, NewCustomDataOptParams().Overwrite(false), "value"),
)

// To use a name instead of the index
client.AddData(visitorCode, types.NewNamedCustomData("my-custom-data", "value"))

// To use a name instead of the index
// and set the 'overwrite' flag to false
client.AddData(
    visitorCode,
    types.NewNamedCustomDataWithOptParams("my-custom-data", NewCustomDataOptParams().Overwrite(false), "value"),
)
  • 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 Custom Data-Index 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 SDK-Instanzkonfiguration nicht aktuell ist oder der Name nicht registriert ist, führt dazu, dass die Daten ignoriert werden.

Device

Sie können Gerätedaten verwenden, um Experiment- oder Personalisierungsberichte nach einem beliebigen zugeordneten Wert zu filtern.
NewDevice
NameTypBeschreibung
deviceTypeDeviceTypeListe der Geräte: Phone, Tablet, Desktop. Dieses Feld ist obligatorisch.
client.AddData(visitorCode, types.NewDevice(types.DeviceTypeDesktop))

OperatingSystem

OperatingSystem enthält Informationen über das Betriebssystem auf dem Gerät des Besuchers.
NewOperatingSystem
NameTypBeschreibung
typetypes.OperatingSystemTypeListe der Betriebssysteme: Windows, Mac, iOS, Linux, Android und WindowsPhone. Dieses Feld ist erforderlich.
Jeder Besucher kann nur ein OperatingSystem haben. Das Hinzufügen eines zweiten OperatingSystem überschreibt das erste.
client.AddData(visitorCode, types.NewOperatingSystem(types.OperatingSystemTypeWindows))

PageView

Sie können Pageview-Daten verwenden, um Experiment- oder Personalisierungsberichte nach einem beliebigen zugeordneten Wert zu filtern.
Der Index oder die ID des Referrers befindet sich in Ihrem Kameleoon-Konto. Es ist wichtig zu beachten, dass dieser Index bei 0 beginnt. Das bedeutet, dass dem ersten Akquisitionskanal, den Sie für eine bestimmte Site erstellen, 0 als ID zugewiesen wird, nicht 1.
NewPageView
NameTypBeschreibung
urlstringDie URL der angezeigten Seite. Dieses Feld ist obligatorisch.
referrers…intDie Referrer der angezeigten Seiten. Dieses Feld ist optional.
NewPageViewWithTitle
NameTypBeschreibung
urlstringDie URL der angezeigten Seite. Dieses Feld ist obligatorisch.
titlestringDer Titel der angezeigten Seite. Dieses Feld ist obligatorisch.
referrers…intDie Referrer der angezeigten Seiten. Dieses Feld ist optional.
client.AddData(visitorCode, types.NewPageView("https://url.com", 3))

client.AddData(visitorCode, types.NewPageViewWithTitle("https://url.com", "title", 3))

UserAgent

Serverseitige Experimente werden wahrscheinlicher 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 Konvertierungsmetriken verfälschen könnte. Weitere Details finden Sie in unserem Hilfeartikel zum Filtern von Bots. Wenn Sie interne Bots verwenden, empfehlen wir, den Wert curl/8.0 des userAgent zu übergeben, um sie aus unseren Analysen auszuschließen.
NewUserAgent
NameTypBeschreibung
valuestringDer User-Agent-Wert, der mit Tracking-Anfragen gesendet wird. Dieses Feld ist obligatorisch.
client.AddData(visitorCode, types.NewUserAgent("visitor_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 einen UniqueIdentifier für einen Besucher hinzufügen, verknüpft das SDK die geflushten Daten mit dem Besucher, der dem angegebenen Bezeichner zugeordnet ist. Der isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode eines Besuchers zugreifen können, aber eine interne ID verwenden können, die über das Zusammenführen von Sitzungen mit diesem Besucher verknüpft ist.
NewUniqueIdentifier
NameTypBeschreibung
valueboolParameter zur Angabe, ob der visitor_code ein eindeutiger Bezeichner ist. Dieses Feld ist obligatorisch.
client.AddData(visitorCode, types.NewUniqueIdentifier(true))

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.
NewApplicationVersion
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, types.NewApplicationVersion("10")) // major

client.AddData(visitorCode, types.NewApplicationVersion("10.20")) // major.minor

client.AddData(visitorCode, types.NewApplicationVersion("10.20.30")) // major.minor.patch

Rückgabetypen

DataFile

Das DataFile enthält die Konfigurationsdetails des SDK. Es kann mit zusätzlichen Informationen erweitert werden, falls von Kunden gewünscht. Wenn Sie weitere Details benötigen, wenden Sie sich bitte an Ihren Customer Success Manager.
NameTypBeschreibung
FeatureFlagsmap[string]FeatureFlagEine Map von FeatureFlag-Objekten, mit feature flag-Schlüsseln als Schlüssel.
DateModifiedint64Der Zeitstempel (in Millisekunden), der angibt, wann das 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.
featureFlags := dataFile.FeatureFlags

// Retrieves the last modification timestamp of the DataFile.
// The value is an int64 representing milliseconds since the Unix epoch.
dateModified := dataFile.DateModified

FeatureFlag

Der FeatureFlag repräsentiert eine Reihe von Eigenschaften, die einen feature flag selbst definieren – zum Beispiel seine Variations, Rules, Umgebungsstatus und andere zugehörige Details. Er kann mit zusätzlichen Informationen erweitert werden, falls von Kunden gewünscht. Wenn Sie weitere Details benötigen, wenden Sie sich bitte an Ihren Customer Success Manager.
NameTypBeschreibung
IsEnvironmentEnabledboolGibt an, ob der feature flag in der aktuellen Umgebung aktiviert ist.
DefaultVariationKeystringDer Schlüssel der Standard-variation, die dem feature flag zugeordnet ist.
Variationsmap[string]VariationEine Map von Variation-Objekten, mit variation-Schlüsseln als Schlüssel.
Rules[]RuleEine Liste von Rule-Objekten
// Check whether the feature flag is enabled in the current environment
isEnvironmentEnabled := featureFlag.IsEnvironmentEnabled

// Retrieve the key of the default variation
defaultVariationKey = featureFlag.DefaultVariationKey

// Retrieve the default variation object
defaultVariation := featureFlag.DefaultVariation()

// Retrieve all variations of the feature flag as a map (key = variation key, value = Variation object)
variations := featureFlag.Variations

// Retrieve all targeting rules associated with the feature flag
rules := featureFlag.Rules

Rule

Die Rule repräsentiert eine Reihe von Eigenschaften, die eine Regel selbst definieren – zum Beispiel ihre Variations. Sie kann mit zusätzlichen Informationen erweitert werden, falls von Kunden gewünscht. Wenn Sie weitere Details benötigen, wenden Sie sich bitte an Ihren Customer Success Manager.
NameTypBeschreibung
Variationsmap[string]VariationEine Map von Variation-Objekten, mit variation-Schlüsseln als Schlüssel.
// Retrieve all variations of the rule as a map (key = variation key, value = Variation object)
variations := rule.Variations

Variation

Variation enthält Informationen über die dem Besucher zugewiesene variation (oder die Standard-variation, wenn keine spezifische Zuweisung existiert).
NameTypBeschreibung
NamestringDer Name der variation.
KeystringDer eindeutige Schlüssel zur Identifizierung der variation.
VariationID*intDie ID der zugewiesenen variation (oder nil, wenn es sich um die Standard-variation handelt).
ExperimentID*intDie ID des mit der variation verknüpften Experiments (oder nil, wenn Standard).
Variablesmap[string]VariableEine Map, die die Variablen der zugewiesenen variation enthält, mit Variablennamen als Schlüssel. Dies kann eine leere Sammlung sein, wenn keine Variablen zugeordnet sind.
  • Das Variation-Objekt liefert Details zur zugewiesenen variation und ihrem zugehörigen Experiment, während das Variable-Objekt spezifische Details zu jeder Variable innerhalb einer variation enthält.
  • Stellen Sie sicher, dass Ihr Code den Fall behandelt, in dem VariationID oder ExperimentID nil sein kann, was eine Standard-variation anzeigt.
  • Die Variables-Map kann leer sein, wenn keine Variablen mit der variation verknüpft sind.
// Retrieving the variation name
var variationName string = variation.Name

// Retrieving the variation key
var variationKey string = variation.Key

// Retrieving the variation id
var variationID *int = variation.VariationID

// Retrieving the experiment id
var experimentID *int = variation.ExperimentID

// Retrieving the variables map
var variables map[string]Variable = variation.Variables

Variable

Variable enthält Informationen über eine Variable, die der zugewiesenen variation zugeordnet ist.
NameTypBeschreibung
KeystringDer eindeutige Schlüssel zur Identifizierung der Variable.
TypestringDer Typ der Variable. Mögliche Werte: BOOLEAN, NUMBER, STRING, JSON, JS, CSS.
Valueinterface{}Der Wert der Variable, der einer der folgenden Typen sein kann: bool, int, float, string, map, array.
// Retrieving the variables map
var variables map[string]Variable = variation.Variables

// Variable type can be retrieved for further processing
var variableType string = variables["isDiscount"].Type

// Retrieving the variable value by key
var isDiscount bool = variables["isDiscount"].Value.(bool)

// Variable value can be of different types
var title string = variables["title"].Value.(string)

Veraltete Methoden

Diese Methoden sind veraltet und werden in SDK-Version 4.0.0 entfernt.

GetFeatureVariationKey()

  • 📨 Sendet Tracking-Daten an Kameleoon
Verwenden Sie stattdessen GetVariation().
Diese Methode ruft die Konfiguration eines feature experiment mit mehreren Feature-variations ab. Sie können sie verwenden, um einen variation-Schlüssel für einen bestimmten Benutzer abzurufen, indem Sie visitorCode und featureKey als obligatorische Argumente angeben. Wenn der Benutzer noch nie mit dem feature flag verknüpft wurde, gibt das SDK einen variation-Schlüssel zufällig zurück, basierend auf den feature flag-Regeln. Wenn der Benutzer bereits mit dem feature flag registriert ist, erkennt das SDK den vorherigen Wert des variation key. Wenn der Benutzer keiner der Regeln entspricht, wird der in den feature flag-Auslieferungsregeln von Kameleoon definierte Standardwert zurückgegeben. Es ist wichtig zu beachten, dass der Standardwert möglicherweise kein variation-Schlüssel ist, sondern ein boolescher Wert oder ein anderer Datentyp, abhängig von der feature flag-Konfiguration.
Vergessen Sie nicht, potenzielle Ausnahmen mit ordnungsgemäßer Fehlerbehandlung in Ihrem Code zu behandeln. Beispielcode finden Sie als Anleitung.
Wenn Sie einen visitorCode angeben, verwendet die Methode GetFeatureVariationKey diesen als eindeutigen Besucherbezeichner, 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 geflushten Daten mit dem Besucher, der dem angegebenen Bezeichner zugeordnet ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode eines Besuchers zugreifen können, aber eine interne ID verwenden können, die über das Zusammenführen von Sitzungen mit diesem Besucher verknüpft ist.
// Feature Experiment with variations
const variationKey = ""

if variationKey, err := s.client.GetFeatureVariationKey(visitorCode, featureKey); err == nil {
	switch variationKey {
	case "variation 1":
		// The visitor has been bucketed with variation 1 key.
	case "variation 2":
		// The visitor has been bucketed with variation 2 key.
	default:
		//The visitor has been bucketed with the default variation or is part of the unallocated traffic sample.
	}
} else {
	// An error occurred; the feature flag key has not been found in the current configuration fetched by the SDK.
}
Argumente
NameTypBeschreibung
visitorCodestringDie eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
featureKeystringDer Schlüssel des feature, das Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch.
isUniqueIdentifier (Veraltet)boolEin Parameter, um anzugeben, ob der visitorCode ein eindeutiger Bezeichner ist. Wenn nicht angegeben, ist der Standardwert false. Dieses Feld ist optional.
Rückgabewert
TypBeschreibung
stringvariation-Schlüssel des feature flag, der für einen bestimmten visitorCode registriert ist.
Ausgelöste Ausnahmen
TypBeschreibung
errs.FeatureConfigNotFoundDieser Fehler weist darauf hin, dass der angeforderte Feature-Schlüssel in der internen Konfiguration des SDK nicht gefunden werden konnte. Dies tritt typischerweise auf, wenn der feature flag noch nicht vom SDK abgerufen wurde, was passieren kann, wenn das SDK im Polling-Modus ist.
errs.VisitorCodeInvalidDieser Fehler wird zurückgegeben, wenn der bereitgestellte visitor code ungültig ist, d. h. wenn er leer ist oder seine Länge 255 Zeichen überschreitet.
errs.FeatureEnvironmentDisabledDieser Fehler weist darauf hin, dass der feature flag für die aktuelle Umgebung deaktiviert ist.

GetActiveFeatureListForVisitor()

Verwenden Sie stattdessen GetActiveFeatures().
Die Methode GetActiveFeatureListForVisitor() nimmt einen visitorCode-Parameter entgegen. Wenn Sie diese Methode mit einem bestimmten visitorCode aufrufen, gibt die Methode eine Liste von feature flag-Schlüsseln zurück, die für diesen visitorCode verfügbar sind. Vergessen Sie nicht, potenzielle Ausnahmen mit ordnungsgemäßer Fehlerbehandlung in Ihrem Code zu behandeln. Sehen Sie sich zum Beispiel den folgenden Code an:
arrayFeatureFlagKeys, err := client.GetActiveFeatureListForVisitor(visitorCode)
Argumente
NameTypBeschreibung
visitorCodestringDie eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
Rückgabewert
TypBeschreibung
[]stringListe der feature flag-Schlüssel, die für einen bestimmten visitorCode aktiv sind.
Ausgelöste Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidDieser Fehler wird zurückgegeben, wenn der bereitgestellte visitor code ungültig ist, d. h. wenn er leer ist oder seine Länge 255 Zeichen überschreitet.

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. Vergessen Sie nicht, potenzielle Ausnahmen mit ordnungsgemäßer Fehlerbehandlung in Ihrem Code zu behandeln. Sehen Sie sich zum Beispiel den folgenden Code an:
activeFeatures, err := client.GetActiveFeatures(visitorCode)
Argumente
NameTypBeschreibung
visitorCodestringDie eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
Rückgabewert
TypBeschreibung
map[string]types.VariationMap, die die zugewiesenen variations der aktiven features unter Verwendung der aktiven Feature-IDs als Schlüssel enthält.
Ausgelöste Ausnahmen
TypBeschreibung
errs.VisitorCodeInvalidDieser Fehler wird zurückgegeben, wenn der bereitgestellte visitor code ungültig ist, d. h. wenn er leer ist oder seine Länge 255 Zeichen überschreitet.

GetFeatureVariable()

  • 📨 Sendet Tracking-Daten an Kameleoon
Verwenden Sie stattdessen GetVariation().
Um eine Feature-Variable eines mit einem Benutzer verknüpften variation-Schlüssels abzurufen, rufen Sie die Methode GetFeatureVariable() unseres SDK auf. Diese Methode nimmt einen visitorCode, featureKey und variableKey als obligatorische Argumente entgegen, um eine Variable des variation-Schlüssels für einen bestimmten Benutzer abzurufen. Wenn der Benutzer noch nie mit dem feature flag verknüpft wurde, gibt das SDK einen Variablenwert des variation-Schlüssels zufällig zurück, basierend auf den feature flag-Regeln. Wenn der Benutzer bereits mit dem feature flag registriert ist, erkennt das SDK den vorherigen Wert des variation key und gibt den Wert der Variable zurück. Wenn der Benutzer keiner der Regeln entspricht, wird der Standardwert zurückgegeben. Vergessen Sie nicht, potenzielle Ausnahmen mit ordnungsgemäßer Fehlerbehandlung in Ihrem Code zu behandeln. Beispielcode finden Sie als Anleitung.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen UniqueIdentifier.Der isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode eines Besuchers zugreifen können, aber eine interne ID verwenden können, die über das Zusammenführen von Sitzungen mit diesem Besucher verknüpft ist.
visitorCode, err := client.GetVisitorCode(req, resp)
featureKey := "featureKey"
variableKey = "variableKey"

if variableValue, err := s.client.GetFeatureVariable(visitorCode, featureKey, variableKey); err == nil {
	// your custom code depending of variableValue
} else {
	// An error occurred; the feature flag has not been found in the current configuration fetched by the SDK.
}
Argumente
NameTypBeschreibung
visitorCodestringDie eindeutige Kennung des Benutzers. Dieses Feld ist obligatorisch.
featureKeystringDer Schlüssel des feature, das Sie einem Benutzer aussetzen möchten. Dieses Feld ist obligatorisch.
variableKeystringDer Name der Variable, für die Sie einen Wert abrufen möchten. Dieses Feld ist obligatorisch.
isUniqueIdentifier (Veraltet)boolEin Parameter, um anzugeben, ob der visitorCode ein eindeutiger Bezeichner ist. Wenn nicht angegeben, ist der Standardwert false. Dieses Feld ist optional.
Rückgabewert
TypBeschreibung
interfaceDer Wert einer Variable, die einer bestimmten variation des feature flag zugeordnet ist und für einen bestimmten visitorCode registriert wurde. Mögliche Typen: bool, float64, string, map[string]interface
Ausgelöste Ausnahmen
TypBeschreibung
errs.FeatureConfigNotFoundDieser Fehler weist darauf hin, dass der angeforderte Feature-Schlüssel in der internen Konfiguration des SDK nicht gefunden werden konnte. Dies tritt typischerweise auf, wenn der feature flag noch nicht vom SDK abgerufen wurde, was passieren kann, wenn das SDK im Polling-Modus ist.
errs.VisitorCodeInvalidDieser Fehler wird zurückgegeben, wenn der bereitgestellte visitor code ungültig ist, d. h. wenn er leer ist oder seine Länge 255 Zeichen überschreitet.
errs.FeatureVariationNotFoundDieser Fehler weist darauf hin, dass die angeforderte variation-ID in der internen Konfiguration des SDK nicht gefunden werden konnte. Dies tritt typischerweise auf, wenn der feature flag noch nicht vom SDK abgerufen wurde, was passieren kann, wenn das SDK im Polling-Modus ist.
errs.FeatureVariableNotFoundDieser Fehler weist darauf hin, dass der angeforderte Variablenschlüssel nicht gefunden wurde. Überprüfen Sie, ob der in der Kameleoon-Plattform definierte Schlüssel der Variable mit dem in Ihrem Code übereinstimmt.
errs.FeatureEnvironmentDisabledDieser Fehler weist darauf hin, dass der feature flag für die aktuelle Umgebung deaktiviert ist.

GetFeatureVariationVariables()

Verwenden Sie stattdessen GetVariation().
Um alle einem feature flag zugeordneten Variablen abzurufen, müssen Sie die Methode GetFeatureVariationVariables aufrufen. Diese Methode erfordert zwei obligatorische Argumente: featureKey und variationKey. Die Methode gibt die Daten mit dem in der Kameleoon-Plattform definierten Objekttyp zurück. Vergessen Sie nicht, potenzielle Ausnahmen mit ordnungsgemäßer Fehlerbehandlung in Ihrem Code zu behandeln. Sehen Sie sich den Beispielcode als Anleitung an.
featureKey := "test_feature_variables"
variationKey := "on"

if allVariables, err := s.client.GetFeatureVariationVariables(featureKey, variationKey); err == nil {
	// your custom code
} else {
	// An error occurred; the feature flag or variation doesn't exist in the client configuration
}
Argumente
NameTypBeschreibung
featureKeystringDer Schlüssel des feature flag, den Sie erhalten möchten. Dieses Feld ist obligatorisch.
variationKeystringDer Schlüssel der variation, die Sie erhalten möchten. Dieses Feld ist obligatorisch.
Rückgabewert
TypBeschreibung
map[string]interfaceDaten, die diesem feature flag und dieser variation zugeordnet sind. Mögliche Werte: string, bool, float64 oder map[string]interface (abhängig vom in der Kameleoon-Plattform definierten Typ).
Ausgelöste Ausnahmen
TypBeschreibung
errs.FeatureConfigNotFoundDieser Fehler weist darauf hin, dass der angeforderte Feature-Schlüssel in der internen Konfiguration des SDK nicht gefunden werden konnte. Dies tritt typischerweise auf, wenn der feature flag noch nicht vom SDK abgerufen wurde, was passieren kann, wenn das SDK im Polling-Modus ist.
errs.FeatureVariationNotFoundDieser Fehler weist darauf hin, dass der angeforderte variation-Schlüssel in der internen Konfiguration des SDK nicht gefunden werden konnte. Dies tritt typischerweise auf, wenn der feature flag noch nicht vom SDK abgerufen wurde, was passieren kann, wenn das SDK im Polling-Modus ist.
errs.FeatureEnvironmentDisabledDieser Fehler weist darauf hin, dass der feature flag für die aktuelle Umgebung deaktiviert ist.

GetFeatureList()

Gibt eine Liste der derzeit für das SDK verfügbaren feature flag-Schlüssel zurück.
arrayFeatureKeys := client.GetFeatureList()
Rückgabewert
TypBeschreibung
[]stringListe der feature flag-Schlüssel