SDK Documentation

NotiBoost cung cấp SDK cho các ngôn ngữ phổ biến để tích hợp dễ dàng hơn.

Cài đặt

Cài đặt SDK cho ngôn ngữ của bạn:

Node.js

📦 GitHub Repository

npm install @notiboost/sdk

SDK cho Node.js applications.

const { NotiBoost } = require('@notiboost/sdk');

const client = new NotiBoost({
  apiKey: 'YOUR_API_KEY'
});

// Send an event
await client.events.ingest({
  event_name: 'order_created',
  event_id: 'evt_001',
  occurred_at: new Date().toISOString(),
  user_id: 'u_123',
  properties: {
    order_id: 'A001',
    amount: 350000
  }
});

PHP

📦 GitHub Repository

composer require notiboost/php-sdk

SDK cho PHP applications (PHP 7.4+).

<?php
require 'vendor/autoload.php';

use NotiBoost\NotiBoostClient;

$client = new NotiBoostClient([
    'api_key' => 'YOUR_API_KEY'
]);

// Send an event
$client->events->ingest([
    'event_name' => 'order_created',
    'event_id' => 'evt_001',
    'occurred_at' => date('c'),
    'user_id' => 'u_123',
    'properties' => [
        'order_id' => 'A001',
        'amount' => 350000
    ]
]);

Python

📦 GitHub Repository

pip install notiboost

SDK cho Python applications (Python 3.7+).

from notiboost import NotiBoostClient
from datetime import datetime

client = NotiBoostClient(
    api_key='YOUR_API_KEY'
)

# Send an event
client.events.ingest({
    'event_name': 'order_created',
    'event_id': 'evt_001',
    'occurred_at': datetime.now().isoformat(),
    'user_id': 'u_123',
    'properties': {
        'order_id': 'A001',
        'amount': 350000
    }
})

Go

📦 GitHub Repository

go get github.com/notiboost-com/go-sdk

SDK cho Go applications.

package main

import (
    "time"
    "github.com/notiboost-com/go-sdk"
)

func main() {
    client := notiboost.NewClient(¬iboost.Config{
        APIKey: "YOUR_API_KEY",
    })

    // Send an event
    event := ¬iboost.Event{
        EventName:  "order_created",
        EventID:    "evt_001",
        OccurredAt: time.Now(),
        UserID:     "u_123",
        Properties: map[string]interface{}{
            "order_id": "A001",
            "amount":   350000,
        },
    }
    
    client.Events.Ingest(event)
}

Tính năng SDK

Tất cả SDKs hỗ trợ:

  • Event ingestion
  • User management
  • Audience management
  • Flow management
  • Error handling và retry logic

Quản lý Users

Ví dụ quản lý users với SDK:

Node.js Example

// Create user
await client.users.create({
  user_id: 'u_123',
  name: 'Nguyễn Văn A',
  email: 'user@example.com',
  phone: '+84901234567'
});

// Get user
const user = await client.users.get('u_123');

// Update user
await client.users.update('u_123', {
  name: 'Nguyễn Văn B'
});

PHP Example

// Create user
$client->users->create([
    'user_id' => 'u_123',
    'name' => 'Nguyễn Văn A',
    'email' => 'user@example.com',
    'phone' => '+84901234567'
]);

// Get user
$user = $client->users->get('u_123');

// Update user
$client->users->update('u_123', [
    'name' => 'Nguyễn Văn B'
]);

Quản lý Audiences

Ví dụ quản lý audiences với SDK:

Node.js Example

// Create audience
await client.audiences.create({
  name: 'VIP Customers',
  filter: {
    'properties.order_count': { gte: 10 }
  }
});

// List audiences
const audiences = await client.audiences.list();

// Get audience users
const users = await client.audiences.getUsers('aud_123');

Gửi Events

Ví dụ gửi events với SDK:

Node.js Example

// Ingest event
const result = await client.events.ingest({
  event_name: 'order_created',
  event_id: 'evt_001',
  occurred_at: new Date().toISOString(),
  user_id: 'u_123',
  properties: {
    order_id: 'A001',
    amount: 350000
  }
});

console.log('Trace ID:', result.trace_id);

Xử lý Lỗi

SDKs tự động xử lý errors và retries.

Node.js Error Handling

try {
  await client.events.ingest(event);
} catch (error) {
  if (error.statusCode === 429) {
    // Rate limit exceeded
    console.log('Rate limit exceeded, retrying...');
  } else if (error.statusCode === 401) {
    // Invalid API key
    console.error('Invalid API key');
  }
}

Ruby

📦 GitHub Repository

gem install notiboost

SDK cho Ruby applications (Ruby 2.7+).

require 'notiboost'

client = NotiBoost::Client.new(
  api_key: 'YOUR_API_KEY'
)

# Send an event
client.events.ingest(
  event_name: 'order_created',
  event_id: 'evt_001',
  occurred_at: Time.now.iso8601,
  user_id: 'u_123',
  properties: {
    order_id: 'A001',
    amount: 350000
  }
)

Java

📦 GitHub Repository

<dependency>
  <groupId>com.notiboost</groupId>
  <artifactId>notiboost-sdk</artifactId>
  <version>1.0.0</version>
</dependency>

SDK cho Java applications (Java 8+).

import com.notiboost.NotiBoostClient;
import com.notiboost.models.Event;

NotiBoostClient client = new NotiBoostClient.Builder()
    .apiKey("YOUR_API_KEY")
    .build();

// Send an event
Event event = Event.builder()
    .eventName("order_created")
    .eventId("evt_001")
    .occurredAt(new Date())
    .userId("u_123")
    .properties(Map.of(
        "order_id", "A001",
        "amount", 350000
    ))
    .build();

client.events().ingest(event);

C# / .NET

📦 GitHub Repository

dotnet add package NotiBoost.Sdk

SDK cho C# và .NET applications (.NET 6.0+).

using NotiBoost.Sdk;

var client = new NotiBoostClient(new NotiBoostConfig
{
    ApiKey = "YOUR_API_KEY"
});

// Send an event
var @event = new Event
{
    EventName = "order_created",
    EventId = "evt_001",
    OccurredAt = DateTime.UtcNow,
    UserId = "u_123",
    Properties = new Dictionary<string, object>
    {
        { "order_id", "A001" },
        { "amount", 350000 }
    }
};

await client.Events.IngestAsync(@event);

JavaScript / TypeScript (Browser)

📦 GitHub Repository

npm install @notiboost/browser-sdk

SDK cho ứng dụng JavaScript và TypeScript trên trình duyệt.

import { NotiBoost } from '@notiboost/browser-sdk';

const client = new NotiBoost({
  apiKey: 'YOUR_API_KEY'
});

// Send an event
await client.events.ingest({
  event_name: 'order_created',
  event_id: 'evt_001',
  occurred_at: new Date().toISOString(),
  user_id: 'u_123',
  properties: {
    order_id: 'A001',
    amount: 350000
  }
});

React

📦 GitHub Repository

npm install @notiboost/react-sdk

SDK cho ứng dụng React với hooks và components.

import { NotiBoostProvider, useNotiBoost } from '@notiboost/react-sdk';

function App() {
  return (
    <NotiBoostProvider apiKey="YOUR_API_KEY">
      <YourComponent />
    </NotiBoostProvider>
  );
}

function YourComponent() {
  const { client } = useNotiBoost();
  
  const handleEvent = async () => {
    await client.events.ingest({
      event_name: 'order_created',
      event_id: 'evt_001',
      occurred_at: new Date().toISOString(),
      user_id: 'u_123',
      properties: {
        order_id: 'A001',
        amount: 350000
      }
    });
  };
  
  return <button onClick={handleEvent}>Send Event</button>;
}

Best Practices

  • Sử dụng singleton pattern cho client instance
  • Cache API key và không hardcode trong code
  • Sử dụng async/await cho non-blocking calls
  • Monitor errors và retry logic