Это руководство проведёт вас через интеграцию TRACIO в ваше приложение. Вы установите клиентский SDK, инициализируете его вашим публичным ключом и прочитаете первый результат идентификации посетителя.
Установите TRACIO SDK с помощью предпочитаемого менеджера пакетов:
npm install @tracio/sdkИли через pnpm:
pnpm add @tracio/sdkИли через yarn:
yarn add @tracio/sdkЕсли вы не используете бандлер, добавьте на страницу тег edge-скрипта. Он автоматически инициализируется публичным ключом из query-параметра k:
<script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>Импортируйте Tracio и вызовите Tracio.init() с вашим публичным ключом. Это сразу возвращает TracioInstance — базовый агент загружается в фоне.
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...",})Ваш публичный ключ можно безопасно поставлять в клиентском коде. Найти его можно в вашей панели управления в разделе API Keys.
Tracio.init() принимает объект TracioConfig:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
publicKey | string | обязательно | Ваш публичный ключ. Скопируйте его из панели управления. |
region | "us" | "eu" | нет | Опциональный регион данных. Если не задан, SDK использует общий эндпоинт https://edge.tracio.ai (без неявного размещения данных в США). Задайте явно, чтобы закрепить us или eu. |
endpoint | string | авто | Пользовательский API-эндпоинт (для эндпоинта, проксируемого через ваш домен). |
scriptUrl | string | авто | Пользовательский URL для скрипта агента (для эндпоинта, проксируемого через ваш домен). |
linkedId | string | нет | Идентификатор, связывающий этого посетителя с сущностью в вашей системе. |
tag | string | нет | Произвольная метка, прикрепляемая к запросу для последующей фильтрации. |
debug | boolean | false | Выводит подробную диагностику в консоль. |
timeoutMs | number | 15000 | Сколько ждать результат до истечения таймаута. |
Вызовите tracio.getVisitorId(), чтобы получить стабильный идентификатор посетителя. Это асинхронная операция.
const visitorId = await tracio.getVisitorId()
console.log(visitorId) // "X7fh2Hg9LkMn3pQr"Вызовите tracio.getResult(), чтобы получить полный результат идентификации, включая обнаружение ботов.
const result = await tracio.getResult()
console.log(result.visitorId) // "X7fh2Hg9LkMn3pQr"
if (result.bot.detected) { console.warn("bot, confidence:", result.bot.confidence)}Результат имеет вид:
{ visitorId: "X7fh2Hg9LkMn3pQr", bot: { detected: false, confidence: 2, // 0-100 reasons: [], },}Используйте колбэки жизненного цикла, чтобы реагировать, когда агент готов или что-то не удалось, и destroy(), чтобы разобрать экземпляр:
const tracio = Tracio.init({ publicKey: "5ca175fc..." })
tracio.onReady((result) => { console.log("ready:", result.visitorId)})
tracio.onError((error) => { console.error("tracio error:", error.code, error.message)})
// later, when you no longer need ittracio.destroy()См. Обработку ошибок для полного списка кодов ошибок и хелперов повторных попыток.
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc..." })
async function handleLogin(email: string, password: string) { const visitorId = await tracio.getVisitorId()
const response = await fetch("/api/login", { method: "POST", body: JSON.stringify({ email, password, visitorId }), })
return response.json()}import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...", tag: "payment",})
async function processPayment(paymentData: PaymentData) { const result = await tracio.getResult()
if (result.bot.detected) { throw new Error("Automated client detected") }
const response = await fetch("/api/payment", { method: "POST", body: JSON.stringify({ ...paymentData, visitorId: result.visitorId }), })
return response.json()}