Framework
React
React uygulamanıza OnsraChat entegrasyonu yapın.
useEffect ile Yükleme
tsx
// src/components/OnsraChat.tsx
import { useEffect } from 'react';
interface OnsraChatProps {
widgetId: string;
visitor?: {
name?: string;
email?: string;
userId?: string;
};
}
export function OnsraChat({ widgetId, visitor }: OnsraChatProps) {
useEffect(() => {
// Settings'i ayarla
(window as any).OnsraSettings = {
widgetId,
...(visitor && { visitor }),
};
// Script'i yükle
const script = document.createElement('script');
script.src = 'https://widget.onsrachat.com/loader.js';
script.async = true;
document.body.appendChild(script);
return () => {
// Temizlik
document.body.removeChild(script);
(window as any).OnsraChat?.destroy?.();
};
}, [widgetId]);
return null;
}Kullanım
tsx
// App.tsx
import { OnsraChat } from './components/OnsraChat';
import { useAuth } from './hooks/useAuth';
export default function App() {
const { user } = useAuth();
return (
<>
{/* Uygulamanızın geri kalanı */}
<OnsraChat
widgetId="YOUR_WIDGET_ID"
visitor={user ? {
name: user.name,
email: user.email,
userId: user.id,
} : undefined}
/>
</>
);
}useOnsraChat Hook
tsx
// src/hooks/useOnsraChat.ts
import { useCallback } from 'react';
export function useOnsraChat() {
const open = useCallback(() => {
(window as any).OnsraChat?.open();
}, []);
const close = useCallback(() => {
(window as any).OnsraChat?.close();
}, []);
const identify = useCallback((user: { name: string; email: string; userId: string }) => {
(window as any).OnsraChat?.identify(user);
}, []);
const track = useCallback((event: string, data?: Record<string, unknown>) => {
(window as any).OnsraChat?.track(event, data);
}, []);
return { open, close, identify, track };
}
// Kullanım:
// const { open, track } = useOnsraChat();
// <button onClick={open}>Destek Al</button>TypeScript Tipleri
typescript
// src/types/onsrachat.d.ts
interface OnsraChatAPI {
open(): void;
close(): void;
toggle(): void;
identify(user: { name?: string; email?: string; userId?: string }): void;
track(event: string, data?: Record<string, unknown>): void;
destroy(): void;
}
declare global {
interface Window {
OnsraChat: OnsraChatAPI;
OnsraSettings: {
widgetId: string;
primaryColor?: string;
position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
welcomeMessage?: string;
visitor?: {
name?: string;
email?: string;
userId?: string;
};
};
}
}