Схема sigmaUserData
sigmaUserData {
{
userId?: string | number // например, clientId из счетчика google analytics
profileId?: string | number // например, ID пользователя при регистрации
deviceId?: string | number // например, ID устройства с которого зашел пользователь
ip?: string // ip для определения гео локации (geo)
email?: string // email
appVersion?: string | number // версия приложения, только для платформ Android и ios
geo?: object { // гео локация
country?: string
code?: string
state?: string
city?: string
};
browser?: object { // название и версия браузера, только для платформы web
name?: string
version?: string | number
};
os?: object { // название и версия операционной системы, только для платформы web
name?: string
version?: string | number
};
custom?: object {
[key: string]: string | number | boolean // поле с произвольным ключ: значение
};
deviceCategory?: string // устройство с которого зашел пользователь (web, android, tablet) только для платформы web
url?: string // весь URL https://www.ya.ru/cart/?param=1
pathname?: string // строка пути (относительно хоста) /cart
query?: string // часть адреса после символа ? ?param=1
domain?: string // домен (hostname) www.ya.ru
},
getAllUserExperiments?: boolean // получить все эксперименты (формат: <название>.<вариант> разделитель: |)
cacheTTL?: number // указывает через какой промежуток времени обновить данные. Измеряется в секундах. Меньше 10 поставить нельз я
platform?: string // фильтр по платформе. Настраивается в админ-панели при создании фича флага или эксперимента. Доступные платформы 'web', 'android', 'ios'
ua?: string // user-agent. Если передать, SDK автоматически подставит значения в browser, os. Приоритет у browser и os выше. Если не передать, SDK сама попробует определить user-agent (например вызвать API на клиенте)
includeForceUser?: [ // добавить пользова теля в принудительный список эксперимента / экспериментов. Если указан второй параметр — индекс группы, пользователь будет добавлен в принудительный список группы.
{
experimentId: string,
groupIndex?: number,
},
]
}
Эксперименты и фича-флаги с гео-локацией
Есть два способа работы с экспериментами и ФФ, в которых есть условия на гео:
- Передавать гео-данные пользователя в объект sigmaUserData.
Данные можно получить сторонним сервисом (но в таком случае, необходимо, чтобы наименование было идентично тому, что будет указано в условиях эксперимента/фф). Пример, передать гео-данные:
curl
--location 'https://api.expf.ru/api/v1/user/estimate/all' \
--header 'token: <TOKEN>' \
--header 'Content-Type: application/json'
--data '{
"sigmaUserData": {
"userId": "1",
"geo": "geo"
}
}'
- Передавать ip пользователя в объект sigmaUserData.
SDK сдел ает запрос по ip, результат запишет в кэш. Пример, передать ip:
curl
--location 'https://api.expf.ru/api/v1/user/estimate/all' \
--header 'token: <TOKEN>' \
--header 'Content-Type: application/json'
--data '{
"sigmaUserData": {
"userId": "1",
"ip": "5.140.69.184"
}
}'
Разбор URL в sigmaUserData
Если в значение sigmaUserData.url передать полный URL-адрес, estimate попытается разбить его на составляющие и автоматически заполнит поля: sigmaUserData.domain, sigmaUserData.pathname, sigmaUserData.query. При этом, если явно передать, например, sigmaUserData.pathname — приоритет будет у переданного значения sigmaUserData.pathname, и оно не перезапишется.
Если переданный URL-адрес не является валидным, estimate его проигнорирует.
Пример валидного URL-адреса: http://example.org
, https://example.org/url?a=b&b=c
curl
--location 'https://api.expf.ru/api/v1/user/estimate/all' \
--header 'token: <TOKEN>' \
--header 'Content-Type: application/json'
--data '{
"sigmaUserData": {
"userId": "1",
"url": "https://example.org/url?a=b&b=c"
}
}'