#
Гибридная интеграция
Гибридная интеграции сочетает возможности API и WEB интеграций, обеспечивая максимальную производительность и гибкость. Основные кампании, рендерятся через API на сервере, благодаря чему персонализированный контент включается в HTML-разметку ещё до загрузки страницы, исключая задержки и мигание. При этом вы сохраняете возможность быстро тестировать гипотезы с помощью web-кампаний.
#
Идентификация пользователей
Если Web интеграция уже завершена, то в браузере пользователя в корневом домене сайта есть куки:
_slid
— внутренний ID пользователя, выданный платформой. Устанавливается скриптом core.js_sl_session
— внутренний ID сессии, выданный платформой. Устанавливается скриптом core.js_slid_server
— копия внутреннего ID пользователя. Устанавливается сервером клиентом и имеет длительный срок жизни в отличие от_slid
. Подробнее
Если вы еще не выставляете куку _slid_server
, то завершите Web интеграцию
В рамках API интеграции вы можете самостоятельно назначать ID для конечных пользователей и сессий. Для этого их необходимо передавать в запросах в параметрах user.id
и session.custom
.
#
Передача параметров
Перед тем, как сделать API запрос, необходимо прочитать значение кук _slid_server
и _sl_session
. В параметрах API запроса необходимо передавать значения этих кук:
user.slid
:
- значение куки
_slid_server
, если оно есть - если нет
_slid_server
, то значение куки_slid
- иначе
null
session.sl
:
- значение куки
_sl_session
, если оно есть - иначе
null
<?php
// Получаем значение куки _slid_server или _slid
$user_id = $_COOKIE['_slid_server'] ?? $_COOKIE['_slid'] ?? null;
// Получаем значение куки _sl_session
$session_id = $_COOKIE['_sl_session'] ?? null;
// Формируем параметры запроса
$requestParams = [
"user" => [
"slid" => $user_id,
],
"session" => [
"sl" => $session_id,
],
];
?>
#
Обработка ответа
Если платформой был сгенерирован новый ID пользователя или сессии, то в составе ответа будут возвращены значения _slid_server
и _sl_session
.
- новый ID пользователя генерируется, если передается
user.slid: null
) - новый ID сессии генерируется, если передавется
session.sl: null
или время жизни передаваемой сессии истекло
{
"user": {
"slid": "6495a07d71568849c607a6ed"
},
"session": {
"sl": "43F9AD00-2D33-4AA3-8EE4-5638E8EB5976"
},
"cookies": [
{
"name": "_slid_server",
"value": "6495a07d71568849c607a6ed",
"maxAge": "31556926"
},
{
"name": "_slsession",
"value": "43F9AD00-2D33-4AA3-8EE4-5638E8EB5976",
"maxAge": "1800"
}
]
}
Данные значения необходимо установить в соответствующие куки _slid_server
и _sl_session
. Значения кук и время их жихни необходимо обновлять при каждом получении их в ответе. Для кук не должен быть установлен параметр HttpOnly
.
<?php
if (isset($data['cookies']) && is_array($data['cookies'])) {
foreach ($data['cookies'] as $cookie) {
if (isset($cookie['name'], $cookie['value'], $cookie['maxAge'])) {
// Устанавливаем куку
setcookie(
$cookie['name'], // Имя куки
$cookie['value'], // Значение куки
time() + (int)$cookie['maxAge'], // Время истечения срока действия
"/", // Доступность на всём сайте
$site_root_domain // .site-domain.com
);
}
}
}
?>
#
Примеры ответов
На запрос
/choose
с заполненными объектамиuser
иsession
{ "choices": [ { "id": "647858625ad90a40be0042c3", "name": "CTA change", "type": "DECISION", "variations": [ { "id": "647858625ad90a40be0042cb", "name": "Variation 2", "payload": { "type": "CUSTOM_JSON", "data": { "custom": { "payload": { "value": "0.3" } } } } } ], "groups": [], "decisionId": "647858625ad90a40be0042c3:6492d1a95c98ebc980096516:647858625ad90a40be0042c7:647858625ad90a40be0042cb" }
На запрос
/choose
с незаполненнымиuser
иsession
{ "choices": [ { "id": "647858625ad90a40be0042c3", "name": "CTA change", "type": "DECISION", "variations": [ { "id": "647858625ad90a40be0042cb", "name": "Variation 2", "payload": { "type": "CUSTOM_JSON", "data": { "custom": { "payload": { "value": "0.2" } } } } } ], "groups": [], "decisionId": "647858625ad90a40be0042c3:6492d1a95c98ebc980096516:647858625ad90a40be0042c7:647858625ad90a40be0042cb" }], "user": { "slid": "649406313e4805d9e10a7a76" }, "cookies": [ { "name": "_slid_server", "value": "649406313e4805d9e10a7a76", "maxAge": "31556926" }, { "name": "_slsession", "value": "8B578AEC-ECB7-4976-AC7C-70857B845DBE", "maxAge": "1800" } ], "session": { "sl": "8B578AEC-ECB7-4976-AC7C-70857B845DBE" } }