Acest ghid te conduce prin integrarea TRACIO în aplicația ta. Vei instala SDK-ul client, îl vei inițializa cu cheia publică și vei citi primul rezultat de identificare a vizitatorului.
Instalează SDK-ul TRACIO folosind managerul de pachete preferat:
npm install @tracio/sdkSau cu pnpm:
pnpm add @tracio/sdkSau cu yarn:
yarn add @tracio/sdkDacă nu folosești un bundler, adaugă tag-ul de script edge în pagina ta. Acesta se inițializează automat cu cheia publică din parametrul de interogare k.
Alege de unde se încarcă scriptul. Unele rețele și extensii de browser blochează cererile către domenii de analiză terțe: filtre corporative, blocare la nivel de DNS, restricții regionale, extensii de confidențialitate. Servit de pe propriul subdomeniu, scriptul este o cerere first-party pe site și continuă să funcționeze în astfel de medii — consultă Domenii personalizate:
<script src="https://metrics.yoursite.com/s.js?k=PUBLIC_KEY" async></script>Sau încarcă-l de pe domeniul edge partajat, cea mai rapidă cale de a începe:
<script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>Importă Tracio și apelează Tracio.init() cu cheia ta publică. Aceasta returnează imediat o TracioInstance — agentul subiacent se încarcă în fundal.
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...",})Cheia ta publică poate fi livrată fără riscuri în codul client-side. O găsești în dashboard, la secțiunea API Keys.
Tracio.init() acceptă un obiect TracioConfig:
| Opțiune | Tip | Implicit | Descriere |
|---|---|---|---|
publicKey | string | obligatoriu | Cheia ta publică. Copiaz-o din dashboard. |
region | "us" | "eu" | niciuna | Regiune de date opțională. Când nu este setată, SDK-ul folosește endpoint-ul generic https://edge.tracio.ai (fără rezidență de date implicită în SUA). Seteaz-o explicit pe us sau eu. Ignorată când endpoint este setat. |
endpoint | string | automat | Originea propriului subdomeniu, de exemplu https://metrics.yoursite.com. Scriptul și semnalele sunt servite de pe el. Consultă Domenii personalizate. |
scriptUrl | string | automat | URL-ul complet al scriptului agentului. Înlocuiește întregul URL, inclusiv cheia publică — pentru un domeniu personalizat folosește endpoint. |
linkedId | string | niciuna | Identificator care leagă acest vizitator de o entitate din sistemul tău. Consultă Asocierea conturilor. |
tag | string | niciuna | Etichetă liberă atașată cererii pentru filtrare ulterioară. |
debug | boolean | false | Înregistrează diagnostice detaliate în consolă. |
timeoutMs | number | 15000 | Cât timp se așteaptă rezultatul înainte de expirare. |
Apelează tracio.getVisitorId() pentru a primi un identificator stabil de vizitator. Aceasta este o operațiune asincronă.
const visitorId = await tracio.getVisitorId()
console.log(visitorId) // "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y"Apelează tracio.getResult() pentru a primi rezultatul complet de identificare, inclusiv detectarea boților.
const result = await tracio.getResult()
console.log(result.visitorId) // "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y"
if (result.bot.detected) { console.warn("bot, confidence:", result.bot.confidence)}Rezultatul are forma:
{ visitorId: "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y", bot: { detected: false, confidence: 2, // 0-100 reasons: [], },}Folosește callback-urile de ciclu de viață pentru a reacționa atunci când agentul este gata sau când ceva eșuează, și destroy() pentru a demonta instanța:
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()Consultă Gestionarea erorilor pentru lista completă a codurilor de eroare și a helper-elor de reîncercare.
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()}