يرشدك هذا الدليل خطوة بخطوة إلى دمج TRACIO في تطبيقك. ستقوم بتثبيت SDK الخاص بالعميل، وتهيئته باستخدام مفتاحك العام، وقراءة أول نتيجة لتحديد هوية الزائر.
ثبّت TRACIO SDK باستخدام مدير الحزم المفضّل لديك:
npm install @tracio/sdkأو باستخدام pnpm:
pnpm add @tracio/sdkأو باستخدام yarn:
yarn add @tracio/sdkإذا كنت لا تستخدم أداة تجميع (bundler)، أدرج وسم سكربت الحافة (edge) في صفحتك. تتم تهيئته تلقائيًا باستخدام المفتاح العام في معامِل الاستعلام k:
<script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>استورد Tracio واستدعِ Tracio.init() باستخدام مفتاحك العام. يعيد هذا TracioInstance على الفور — بينما يُحمَّل الوكيل (agent) الأساسي في الخلفية.
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 | يسجّل تشخيصات مفصّلة في وحدة التحكم (console). |
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: [], },}استخدم استدعاءات دورة الحياة (lifecycle callbacks) للتفاعل عندما يصبح الوكيل جاهزًا أو عند فشل شيء ما، واستخدم 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()}