Подключение сплиттера
Интеграция со сплиттером — это финальный этап реализации эксперимента на стороне вашего приложения.
К этому моменту вы уже должны:
- Выполните настройку подключения данных согласно инструкции.
- Подготовьте необходимые метрики в вашем Git-репозитории.
- Оформите создание эксперим ента через пользовательский интерфейс платформы.
Зачем нужен сплиттер
Сплиттер — это высоконагруженный сервис, который решает две ключевые задачи на стороне вашего приложения:
- Реализует разделение аудитории на группы, чтобы система определяла, какой вариант интерфейса увидит пользователь.
- Реализует фиксацию участия (Exposure), чтобы система записывала момент взаимодействия пользователя с экспериментальным блоком.
Пользовательский сценарий
Процесс взаимодействия вашего приложения со сплиттером состоит из трех этапов:
- Выполните запрос конфигурации через метод
getFeaturesByTagпри открытии страницы или при старте приложения. - Организуйте показ фичи на основе полученного флага э ксперимента.
- Обеспечьте подтверждение показа через вызов
exposeManyV2в момент рендеринга блока.
Для настройки взаимодействия вам нужно сделать:
- Получите ключи Host и Token у администратора вашей инсталляции Trisigma.
- Внедрите запрос для получения флагов по необходимым тегам (например,
product_page). - Настройте отправку экспоужера для фиксации участия в конкретном эксперименте.
Тестирование интеграции
У Trisigma нет отдельного тестового контура в привычном понимании. Вместо этого у Сплиттера есть тестовая ручка, которая принимает и возвращает те же значения, что и основная.
Главное отличие: тестовая ручка не записывает события в базу данных и никогда не влияет на итоговый отчет.
Это позволяет безопасно проверять корректность работы вашего кода на стейджинге или в локальной среде, не «засоряя» аналитику реального эксперимента тестовыми заходами.
Кейс с датой доставки
Ниже описан пример реализации конкретного бизнес-кейса: «Точная дата доставки», описанного во вступления. В вашем продукте логика флагов и названия тегов будут зависеть от ваших задач.
Получение фичей
Подробности доступны в разделе API Сплиттера.
Теги - это идентификаторы мест в приложении (например, product_page, cart, checkout), которые позволяют группировать эк сперименты. Вы можете один раз настроить получение фич для тега, и новые эксперименты будут автоматически попадать в приложение без изменения кода. Подробнее читайте в статье Тэг эксперимента.
Если теги еще не заведены, используйте один дефолтный тег для получения всех доступных экспериментов.
Хост и токен вы должны запросить у вашего менеджера трисигма, или в чате поддержки.
Метод getFeaturesByTag
Запрос
curl -X POST "https://<YOUR_HOST>/getFeaturesByTag/" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"tag": "product_page",
"participant": {
"userId": 12345,
"visitorId": "abc-789"
}
}'
Вы можете передавать userId и visitorId одновременно. Система автоматически выберет нужный идентификатор в зависимости от того, какой из них указан в настройках конкретного эксперимента на платформе.
В ответе приходит список лейблов: control или test. Конкретно в этом кейсе вам пришел лейбл test.
// introduction/quickstart/04-connect-splitter.md
{
"result": {
"features": [
{
"experimentLabel": "delivery_date_test",
"label": "test"
}
]
}
}
2. Применение логики в коде
Полученный лейбл используется для переключения контента в компоненте.
Ниже пример как это ветвление может быть реализовано в коде с учетом отказоустойчивости:
// 1. Устанавливаем дефолтное состояние (Control)
let deliveryText = 'Срок доставки: 1–2 дня';
try {
const response = await fetch('https://<YOUR_HOST>/getFeaturesByTag/', { /* ... */ });
if (response.ok) {
const data = await response.json();
const experiment = data.result.features.find(
f => f.experimentLabel === 'delivery_date_test'
);
// 2. Меняем текст только если получили подтвержденный лейбл 'test'
if (experiment && experiment.label === 'test') {
deliveryText = 'Доставка: завтра (бесплатно)';
}
}
} catch (error) {
// В случае ош ибки сети или 500 от сервиса — пользователь увидит дефолт
console.warn('Splitter unavailable, using fallback:', error);
}
// 3. Отрисовка блока
renderDeliveryBlock(deliveryText);
Сплиттер не должен быть «точкой отказа» для вашего интерфейса. Ваше приложение обязано иметь стандартное состояние для каждого элемента, участвующего в эксперименте. Если сервис недоступен или запрос завершился ошибкой, пользователь должен увидеть обычную версию сайта.
3. Подтверждение показа (Exposure)
В момент рендеринга блока доставки необходимо отправить подтверждение. Это связывает пользователя с выбранным вариантом в базе данных Trisigma.
curl -X POST "https://<YOUR_HOST>/exposeManyV2/" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"exposures": [
{
"experimentLabel": "delivery_date_test",
"participant": {
"userId": 12345,
"visitorId": "abc-789"
}
}
]
}'
Вы можете отправлять как по 1 событию, так и пачками до 2000 событий в одном запросе. Это позволяет оптимизировать количество сетевых вызовов, если на странице много экспериментов.
После начала успешного взаимодействия со Сплиттером переходите к следующему этапу - запуску эксперимента.