@ezbot-ai/javascript-sdk
Version:
The easiest way to interact with ezbot via JS (node and browser)
55 lines • 5 kB
JavaScript
import { logError } from './utils';
function buildParams(projectId, sessionId, tracker) {
const requiredParams = {
projectId: projectId.toString(),
sessionId,
};
try {
// TODO: should allow params to fail and fallback to "unknowns"
// one by one, not as a whole
if (!tracker && !window.ezbot?.tracker) {
logError(new Error('Tracker is not available. Skipping optional params.'));
return requiredParams;
}
if (!tracker) {
tracker = window.ezbot.tracker;
}
const urlParams = new URLSearchParams(window.location.search);
const optionalParams = {
pageUrlPath: window.location.pathname,
domainSessionIdx: tracker.getDomainSessionIndex(),
utmContent: urlParams.get('utm_content') || 'unknown',
utmMedium: urlParams.get('utm_medium') || 'unknown',
utmSource: urlParams.get('utm_source') || 'unknown',
utmCampaign: urlParams.get('utm_campaign') || 'unknown',
utmTerm: urlParams.get('utm_term') || 'unknown',
referrer: document.referrer || 'unknown',
tz: Intl.DateTimeFormat().resolvedOptions().timeZone,
};
return { ...requiredParams, ...optionalParams };
}
catch (e) {
logError(e);
return requiredParams;
}
}
const buildQueryParams = (params) => {
return Object.entries(params)
.map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
.join('&');
};
async function getPredictions(projectId, sessionId, tracker) {
const basePredictionsURL = `https://api.ezbot.ai/predict`;
const params = buildParams(projectId, sessionId, tracker);
const queryParams = buildQueryParams(params);
const predictionsURL = `${basePredictionsURL}?${queryParams}`;
const response = await fetch(predictionsURL);
if (response.status !== 200) {
throw new Error(`Failed to fetch predictions: Got a ${response.status} response;
}`);
}
const responseJSON = (await response.json());
return responseJSON.predictions;
}
export { getPredictions, };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGljdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3ByZWRpY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFhbkMsU0FBUyxXQUFXLENBQ2xCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLE9BQWtDO0lBRWxDLE1BQU0sY0FBYyxHQUFHO1FBQ3JCLFNBQVMsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFO1FBQy9CLFNBQVM7S0FDVyxDQUFDO0lBQ3ZCLElBQUksQ0FBQztRQUNILCtEQUErRDtRQUMvRCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDdkMsUUFBUSxDQUNOLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQ2pFLENBQUM7WUFDRixPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlELE1BQU0sY0FBYyxHQUFHO1lBQ3JCLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDckMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFO1lBQ2pELFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLFNBQVM7WUFDckQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksU0FBUztZQUNuRCxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxTQUFTO1lBQ25ELFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLFNBQVM7WUFDdkQsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksU0FBUztZQUMvQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsSUFBSSxTQUFTO1lBQ3hDLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUTtTQUNyRCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxRQUFRLENBQUMsQ0FBVSxDQUFDLENBQUM7UUFDckIsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBdUMsRUFBVSxFQUFFO0lBQzNFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDMUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7U0FDNUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsS0FBSyxVQUFVLGNBQWMsQ0FDM0IsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsT0FBa0M7SUFFbEMsTUFBTSxrQkFBa0IsR0FBRyw4QkFBOEIsQ0FBQztJQUMxRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxNQUFNLGNBQWMsR0FBRyxHQUFHLGtCQUFrQixJQUFJLFdBQVcsRUFBRSxDQUFDO0lBRTlELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxRQUFRLENBQUMsTUFBTTtRQUNqRSxDQUFDLENBQUM7SUFDUixDQUFDO0lBQ0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBd0IsQ0FBQztJQUNwRSxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUM7QUFDbEMsQ0FBQztBQUNELE9BQU8sRUFDTCxjQUFjLEdBSWYsQ0FBQyJ9