Перейти к основному содержимому

Подключение сплиттера

Интеграция со сплиттером — это финальный этап реализации эксперимента на стороне вашего приложения.

К этому моменту вы уже должны:

  1. Выполните настройку подключения данных согласно инструкции.
  2. Подготовьте необходимые метрики в вашем Git-репозитории.
  3. Оформите создание эксперимента через пользовательский интерфейс платформы.

Зачем нужен сплиттер

Сплиттер — это высоконагруженный сервис, который решает две ключевые задачи на стороне вашего приложения:

  1. Реализует разделение аудитории на группы, чтобы система определяла, какой вариант интерфейса увидит пользователь.
  2. Реализует фиксацию участия (Exposure), чтобы система записывала момент взаимодействия пользователя с экспериментальным блоком.

Пользовательский сценарий

Процесс взаимодействия вашего приложения со сплиттером состоит из трех этапов:

  1. Выполните запрос конфигурации через метод getFeaturesByTag при открытии страницы или при старте приложения.
  2. Организуйте показ фичи на основе полученного флага эксперимента.
  3. Обеспечьте подтверждение показа через вызов exposeManyV2 в момент рендеринга блока.

Для настройки взаимодействия вам нужно сделать:

  1. Получите ключи Host и Token у администратора вашей инсталляции Trisigma.
  2. Внедрите запрос для получения флагов по необходимым тегам (например, product_page).
  3. Настройте отправку экспоужера для фиксации участия в конкретном эксперименте.

Тестирование интеграции

У 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"
}
}
]
}'
Правила отправки Exposure

Вы можете отправлять как по 1 событию, так и пачками до 2000 событий в одном запросе. Это позволяет оптимизировать количество сетевых вызовов, если на странице много экспериментов.

После начала успешного взаимодействия со Сплиттером переходите к следующему этапу - запуску эксперимента.