ה-JavaScript SDK של TRACIO (@tracio/sdk) אוסף אותות מהדפדפן ושולח אותם לענן של TRACIO לצורך זיהוי מבקרים וזיהוי בוטים. הוא קליל, אינו חוסם ותואם לכל הדפדפנים המודרניים.
npm install @tracio/sdkהחבילה כוללת בנייות ESM, CJS ו-IIFE עם טיפוסי TypeScript מלאים.
יש שתי דרכים להשתמש ב-TRACIO מ-CDN ללא bundler.
סקריפט ה-edge מבצע אתחול אוטומטי באמצעות המפתח הציבורי שבפרמטר השאילתה k. אין צורך ב-JavaScript:
<script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>אפשר גם לטעון את חבילת ה-npm שפורסמה מ-unpkg או מ-jsDelivr. היא חושפת גלובל בשם TracioSDK. קבעו גרסה מפורשת:
<script src="https://unpkg.com/@tracio/sdk@0.1.3/dist/index.min.js"></script><script> const tracio = TracioSDK.Tracio.init({ publicKey: "5ca175fc..." })</script>מאתחל את ה-SDK ומחזיר TracioInstance באופן סינכרוני. הסוכן נטען ברקע; המתודות של המופע נפתרות ברגע שהוא מוכן.
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...",})interface TracioConfig { publicKey: string // required region?: "us" | "eu" endpoint?: string scriptUrl?: string linkedId?: string tag?: string debug?: boolean timeoutMs?: number // default 15000}| אפשרות | טיפוס | ברירת מחדל | תיאור |
|---|---|---|---|
publicKey | string | חובה | המפתח הציבורי שלכם. העתיקו אותו מלוח הבקרה. |
region | "us" | "eu" | ללא | אזור נתונים אופציונלי. כשלא מוגדר, ה-SDK משתמש בנקודת הקצה הגנרית https://edge.tracio.ai (ללא מגורי נתונים מרומזים בארה"ב). הגדירו אותו במפורש כדי לקבע us או eu. |
endpoint | string | אוטומטי | נקודת קצה מותאמת אישית של ה-API (עבור נקודת קצה מתווכת כ-first-party). |
scriptUrl | string | אוטומטי | כתובת URL מותאמת אישית לסקריפט הסוכן (עבור נקודת קצה מתווכת כ-first-party). |
linkedId | string | ללא | מזהה המקשר בין המבקר הזה לישות במערכת שלכם. |
tag | string | ללא | תווית חופשית המצורפת לבקשה לצורך סינון מאוחר יותר. |
debug | boolean | false | רושם אבחון מפורט לקונסולה. |
timeoutMs | number | 15000 | כמה זמן להמתין לתוצאה לפני פקיעת הזמן. |
קריאה ל-Tracio.init() יותר מפעם אחת עם מפתח ציבורי שונה זורקת שגיאת multiple_keys.
מחזיר Promise<string> שנפתר למזהה המבקר היציב.
const visitorId = await tracio.getVisitorId()// "X7fh2Hg9LkMn3pQr"מחזיר Promise<TracioResult> עם מזהה המבקר ותוצאת זיהוי הבוט.
const result = await tracio.getResult()
console.log(result.visitorId)
if (result.bot.detected) { console.warn("bot, confidence:", result.bot.confidence)}interface TracioResult { visitorId: string bot: { detected: boolean confidence: number // 0-100 reasons?: string[] }}נקראת ברגע שהסוכן נטען והפיק תוצאה.
tracio.onReady((result) => { console.log("ready:", result.visitorId)})נקראת כאשר ה-SDK נתקל בשגיאה.
tracio.onError((error) => { console.error("tracio error:", error.code, error.message)})מפרק את המופע ומשחרר משאבים. קריאות עוקבות נדחות עם שגיאת destroyed.
tracio.destroy()ה-SDK זורק מופעי TracioError עם code מטופס. השתמשו בפונקציות העזר isTracioError ו-isRetryableError כדי להסתעף:
import { Tracio, isTracioError, isRetryableError } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc..." })
try { const result = await tracio.getResult()} catch (error) { if (isTracioError(error)) { if (isRetryableError(error)) { // load_failed / blocked / script_error / network / timeout / server — safe to retry } console.error("TRACIO error:", error.code, error.message) } else { console.error("Unexpected error:", error) }}האיחוד TracioErrorCode מכסה:
| קוד | תיאור |
|---|---|
blocked | הבקשה נחסמה (למשל על ידי חוסם פרסומות). |
destroyed | המופע נהרס לפני שהקריאה הושלמה. |
invalid_config | התצורה אינה תקינה (למשל publicKey חסר). |
load_failed | סקריפט הסוכן נכשל בטעינה. |
multiple_keys | Tracio.init() נקראה עם מפתח ציבורי סותר. |
network | בקשת רשת נכשלה. |
non_browser | ה-SDK נעשה בו שימוש מחוץ לסביבת דפדפן. |
script_error | סקריפט הסוכן העלה שגיאה בזמן ריצה. |
server | השרת החזיר שגיאה. |
timeout | הבקשה חרגה מ-timeoutMs. |
load_failed, blocked, script_error, network, timeout ו-server ניתנים לניסיון חוזר; isRetryableError(error) מחזיר true עבורם.
עבור React, Vue, Angular ו-Svelte השתמשו בחבילות ה-framework הייעודיות במקום לחווט את ה-SDK המרכזי באופן ידני:
כל אחת מהן עוטפת את @tracio/sdk וחושפת פרימיטיבים אידיומטיים (providers, plugins, hooks, composables ו-services). לקטעי קוד לכל framework ראו את סקירת ה-SDKs.
Tracio.init() חוזרת באופן סינכרוני וטוענת את הסוכן ברקע. היא אינה חוסמת את רינדור העמוד.timeoutMs (ברירת מחדל 15000ms), כך שרשת איטית לעולם לא תתקע את הקוד שלכם לזמן בלתי מוגבל.