40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
const UMAMI_CONFIG = {
|
|
websiteId: "56549e9d-61df-470d-a1b1-cbf12cfafe9d",
|
|
endpoint: "https://umami.oiov.dev/api/send",
|
|
};
|
|
|
|
export async function trackUmamiEvent(
|
|
req: Request,
|
|
eventName: string,
|
|
eventData: any,
|
|
) {
|
|
try {
|
|
const ua = req.headers.get("user-agent") || "";
|
|
// console.log("Umami tracking event:", eventName, eventData);
|
|
|
|
await fetch(UMAMI_CONFIG.endpoint, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
"User-Agent": ua,
|
|
},
|
|
body: JSON.stringify({
|
|
type: "event",
|
|
payload: {
|
|
name: eventName,
|
|
website: UMAMI_CONFIG.websiteId,
|
|
url: new URL(req.url).pathname,
|
|
data: eventData,
|
|
referrer: `${eventData.referer}?tracker=umami`,
|
|
hostname: new URL(req.url).hostname,
|
|
language: eventData.language,
|
|
screen: "1000x1000",
|
|
},
|
|
}),
|
|
}).catch((err) => console.error("Umami tracking error:", err));
|
|
} catch (error) {
|
|
// 只记录错误,不影响主流程
|
|
console.error("Failed to track Umami event:", error);
|
|
}
|
|
}
|