원하는 패키지 매니저로 프로젝트에 SDK를 추가하세요.
npm install @tracio/reactyarn add @tracio/reactpnpm add @tracio/react최소한의 설정으로 시작하고 실행하세요.
// app/layout.tsximport { TracioProvider } from '@tracio/react'export default function Layout({ children }) { return ( <TracioProvider publicKey={process.env.NEXT_PUBLIC_TRACIO_KEY!}> {children} </TracioProvider> )}오류 처리, 로딩 상태, 고급 구성을 갖춘 프로덕션 준비 패턴.
// app/api/webhook/tracio/route.ts — identification events land here in real timeimport crypto from 'crypto'function verify(raw: Buffer, header: string, secret: string) { const p = Object.fromEntries(header.split(',').map((kv) => kv.split('='))) const signed = Buffer.concat([Buffer.from(`${p.t}.`), raw]) const expected = crypto.createHmac('sha256', secret).update(signed).digest('hex') const a = Buffer.from(p.v1, 'hex') const b = Buffer.from(expected, 'hex') return a.length === b.length && crypto.timingSafeEqual(a, b)}export async function POST(req: Request) { const raw = Buffer.from(await req.arrayBuffer()) const sig = req.headers.get('x-tracio-signature') ?? '' if (!verify(raw, sig, process.env.TRACIO_WEBHOOK_SECRET!)) { return new Response('Invalid signature', { status: 401 }) } const event = JSON.parse(raw.toString()) if (event.bot.result === 'bot') { await blockVisitor(event.visitorId) } return new Response('OK')}SDK를 초기화하고 구성하기 위한 모든 옵션.
publicKeystring대시보드에서 발급받은 공개 키 — 브라우저에 실어 보내도 안전합니다endpointstring프록시 라우팅 배포를 위한 사용자 지정 엔드포인트 URL — 명시적 URL이 region보다 우선합니다regionstring데이터 리전: us 또는 eutimeoutMsnumbergetResult() 호출 전체에 대한 타임아웃(밀리초)linkedIdstring로그인한 사용자의 내부 계정 ID — 같은 디바이스를 공유하는 방문을 연결할 수 있습니다tagstring식별 요청에 붙이는 자유 형식 라벨 (예: checkout 또는 login)debugboolean스크립트 수명 주기와 네트워크 활동을 브라우저 콘솔에 기록합니다scriptUrlstring에이전트 스크립트 URL 전체 재정의 — 셀프 호스팅 또는 Subresource Integrity용전체 API 레퍼런스, 웹훅 구성, 고급 가이드로 더 깊이 알아보세요.