Как сплитовать на основе userId, profileId, deviceId?
Описание
Sigma предоставляет возможность проведения экспериментов на сайте и в приложении, в которых могут участвовать как анонимные, так и авторизованные пользователи.
Для этого логично использовать какой-либо анонимный идентификатор (например, GA ClientId) на анонимных и id личного кабинета для авторизованных.
Для использования данной опции необходимо указать соответствующий идентификатор пользователя. Передача данных предварительно настраивается с помощью методов SDK или API. Затем в интерфейсе выбирается нужный тип идентификатора с помощью специального поля.
Рекомендуется внимательно ознакомиться с документацией перед началом работы с данной опцией.
Объект userData
Сплитование (разделение пользователей по вариантам эксперимента) осуществляется
с помощью трех типов id пользователя в объекте userData:
| Тип идентификатора | Описание | 
|---|---|
| userId | Анонимный идентификатор пользователя. Например, ClientID в Google Analytics и Yandex.Metrica или Fingerprint в NodeJs  | 
| profileId | Идентификатор авторизованного пользователя. Например, ID личного кабинета  | 
| deviceId | Идентификатор устройства пользователя. Полезно для проведения экспериментов в приложениях  | 
Объект userData может быть представлен следующим образом:
const userData = {
    userId: <YOUR_USER_ID>,
    profileId: <YOUR_PROFILE_ID>,
    deviceId: <YOUR_DEVICE_ID>
}
Этот объект необходимо передать в метод init экземпляра класса Sigma вместе с токеном
вашего проекта:
const token = <YOUR_TOKEN>;
const sigma = new Sigma();
    
sigma.init({ token, userData });
Выбор типа идентификатора в интерфейсе
Как только вы передали данные в init(), у вас появляется возможность выбрать идентификатор, который будет использоваться для назначения экспериментов пользователю.
Порядок действий
- Создайте эксперимент и выберите его тип: Параметр, Фича флаг, Переадресация
 - Перейдите во вкладку "Настройки"
 - В поле "Тип идентификатора" выберите нужный тип
 - Создайте группы, завершите настройку остальных параметров, согласно вашей цели
 - Сохраните изменения и опубликуйте конфиг
 
Поведение Sigma
| Метод | Описание поведения | 
|---|---|
| SDK: getParamValue | Если в userData передан соответствующий тип идентификатора, то пользователю вернется значение по эксперименту. В противном случае будет возвращен null  | 
| SDK: getFeatureValue | |
| SDK: checkFlag | |
| SDK: getAllUserExperiments | Будет учтен тип идентификатора пользователя по соответствующему эксперименту в конкатенированном списке | 
| API: estimate/all | Поведение такое же как в описанных выше методах | 
Пример №1: Для эксперимента выбран тип profileId, в userData передается только userId
Пользователь без profileId (или он не был передан в userData) не попадет в эксперимент. Ему будет возвращен null для методов в связке с getExperiment
Пример №2: Для эксперимента выбран тип profileId, в userData был передан profileId
Пользователь попадет в эксперимент, согласно прохождению по условиям в Слое, ЦА и т.п. (если эти условия включены в эксперименте)