SDK (Software Development Kit)
Используйте официальные SDK для удобной интеграции Metriox в ваше приложение.
Доступные SDK
JavaScript/TypeScript
Для Node.js, Deno и браузера.
Установка
npm install @metriox/sdk
# или
yarn add @metriox/sdk
# или
pnpm add @metriox/sdk
Использование
import { MetrioxClient } from "@metriox/sdk";
const client = new MetrioxClient({
apiKey: "YOUR_API_KEY",
botId: "your_bot_id", // опционально
});
// Отправка события
await client.track({
event_name: "button_click",
platform_user_id: "123456789",
props: {
button_name: "checkout",
price: 299,
currency: "RUB",
},
});
API
track(event)
Отправить одно событие.
await client.track({
event_name: "purchase_completed",
platform_user_id: "123456789",
session_id: "session-id-123",
props: {
amount: 299,
currency: "RUB",
},
});
trackBatch(events)
Отправить несколько событий.
await client.trackBatch([
{
event_name: "page_view",
platform_user_id: "123456789",
props: { page: "/home" },
},
{
event_name: "button_click",
platform_user_id: "123456789",
props: { button: "checkout" },
},
]);
setUserId(userId)
Установить ID пользователя для всех последующих событий.
client.setUserId("123456789");
await client.track({
event_name: "page_view",
// platform_user_id не требуется, будет взято из setUserId
props: { page: "/products" },
});
flush()
Отправить все оставшиеся события.
await client.flush();
Примеры
React:
import { useEffect } from "react";
import { MetrioxClient } from "@metriox/sdk";
const client = new MetrioxClient({
apiKey: "YOUR_API_KEY",
});
export function Button() {
const handleClick = async () => {
await client.track({
event_name: "button_click",
platform_user_id: "user-id",
props: { button_name: "subscribe" },
});
};
return <button onClick={handleClick}>Subscribe</button>;
}
Next.js:
import { MetrioxClient } from "@metriox/sdk";
const client = new MetrioxClient({
apiKey: process.env.NEXT_PUBLIC_METRIOX_API_KEY,
});
export default async function Home() {
await client.track({
event_name: "page_view",
platform_user_id: "user-id",
props: { page: "home" },
});
return <div>Hello World</div>;
}
C#/.NET
Для приложений на C# и .NET.
Установка
dotnet add package Metriox.Sdk
или через NuGet Package Manager:
Install-Package Metriox.Sdk
Использование
using Metriox;
var client = new MetrioxClient(
apiKey: "YOUR_API_KEY",
botId: "your_bot_id" // опционально
);
// Отправка события
await client.TrackAsync(new Event
{
EventName = "button_click",
PlatformUserId = "123456789",
Props = new Dictionary<string, object>
{
{ "button_name", "checkout" },
{ "price", 299 },
{ "currency", "RUB" }
}
});
API
TrackAsync(event)
Отправить одно событие.
await client.TrackAsync(new Event
{
EventName = "purchase_completed",
PlatformUserId = "123456789",
SessionId = "session-id-123",
Props = new Dictionary<string, object>
{
{ "amount", 299 },
{ "currency", "RUB" }
}
});
TrackBatchAsync(events)
Отправить несколько событий.
var events = new List<Event>
{
new Event
{
EventName = "page_view",
PlatformUserId = "123456789",
Props = new Dictionary<string, object> { { "page", "/home" } }
},
new Event
{
EventName = "button_click",
PlatformUserId = "123456789",
Props = new Dictionary<string, object> { { "button", "checkout" } }
}
};
await client.TrackBatchAsync(events);
SetUserId(userId)
Установить ID пользователя.
client.SetUserId("123456789");
await client.TrackAsync(new Event
{
EventName = "page_view",
Props = new Dictionary<string, object> { { "page", "/products" } }
});
FlushAsync()
Отправить все оставшиеся события.
await client.FlushAsync();
Примеры
ASP.NET Core:
using Metriox;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class CheckoutController : ControllerBase
{
private readonly MetrioxClient _metrioxClient;
public CheckoutController(MetrioxClient metrioxClient)
{
_metrioxClient = metrioxClient;
}
[HttpPost("complete")]
public async Task<IActionResult> CompleteCheckout(int amount)
{
await _metrioxClient.TrackAsync(new Event
{
EventName = "purchase_completed",
PlatformUserId = "user-id",
Props = new Dictionary<string, object>
{
{ "amount", amount },
{ "currency", "RUB" }
}
});
return Ok();
}
}
Dependency Injection (Startup):
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(new MetrioxClient(
apiKey: Configuration["Metriox:ApiKey"]
));
services.AddControllers();
}
Лучшие практики
Конфигурация
Никогда не hardcodируйте API ключ. Используйте переменные окружения:
JavaScript:
const client = new MetrioxClient({
apiKey: process.env.METRIOX_API_KEY,
});
C#:
var apiKey = Configuration["Metriox:ApiKey"];
var client = new MetrioxClient(apiKey);
Отправка при завершении
Всегда вызывайте flush() перед завершением приложения:
process.on("exit", async () => {
await client.flush();
});
Обработка ошибок
try {
await client.track(event);
} catch (error) {
console.error("Failed to track event:", error);
// Логируйте ошибку или отправьте в систему мониторинга
}
Что дальше?
- REST API — для более гибкого контроля
- События — как структурировать события
- Типы данных — какие типы использовать