SDK Віджета Chatim дозволяє вбудовувати та програмно керувати віджетом чату Chatim на вашому веб-сайті.
Додайте наступний код на ваш веб-сайт, безпосередньо перед закриваючим тегом </body>:
<script>
window.chatim = window.chatim || {};
window.chatim.cmd = window.chatim.cmd || [];
window.chatim.settings = { projectId: "YOUR_PROJECT_ID" };
</script>
<script src="https://widget.chatim.app/widget.js" async></script>Замініть YOUR_PROJECT_ID на фактичний ID вашого проєкту з панелі керування Chatim.
Налаштуйте віджет, встановивши властивості на window.chatim.settings:
window.chatim.settings = {
projectId: "YOUR_PROJECT_ID", // Required
params: { // Optional: Custom parameters
userId: "user-123",
utm_source: "google",
utm_campaign: "summer_sale"
}
};window.chatim.widget.open();window.chatim.widget.close();window.chatim.widget.setConfig(config);Динамічно оновлює конфігурацію віджета під час виконання.
const config = window.chatim.widget.getConfig();Повертає поточний об'єкт конфігурації або null, якщо віджет ще не ініціалізований.
window.chatim.widget.setParams({
lastPage: "/checkout",
cartValue: 99.99,
isPremium: true
});Оновлює користувацькі параметри після ініціалізації віджета. Параметри об'єднуються з існуючими значеннями (не замінюються).
window.chatim.widget.restartChat();Очищає всі збережені дані та історію чату, закриває віджет і повторно ініціалізує з новою сесією. Корисно, коли користувач виходить із системи або ви хочете скинути розмову.
| Властивість | Тип | Обов'язково | Опис |
|---|---|---|---|
projectId | String | Так | ID вашого проєкту Chatim |
params | Object | Ні | Користувацькі параметри (пари ключ-значення) |
| Метод | Повертає | Опис |
|---|---|---|
open() | void | Відкриває віджет чату |
close() | void | Закриває віджет чату |
setConfig(config) | void | Оновлює конфігурацію віджета |
getConfig() | Object | null | Повертає поточну конфігурацію |
setParams(params) | void | Оновлює користувацькі параметри (об'єднані) |
restartChat() | void | Очищає історію чату та перезапускає сесію |
Користувацькі параметри дозволяють надсилати додаткові дані про ваших відвідувачів до Chatim. Ці дані зберігаються з сесіями чату і відображаються в панелі Відвідувачів адміністративної панелі.
window.chatim.settings = {
projectId: "YOUR_PROJECT_ID",
params: {
userId: "user-123",
email: "[email protected]",
utm_source: "google",
planType: "premium",
isPremium: true
}
};// Update params when user logs in
window.chatim.widget.setParams({
userId: user.id,
email: user.email,
planType: user.subscription
});
// Track page-specific data
window.chatim.widget.setParams({
lastPage: window.location.pathname,
productViewed: "SKU-12345"
});| Тип | Приклад | Примітки |
|---|---|---|
| String | "user-123" | Максимум 500 символів |
| Number | 99.99 | Цілі та десяткові числа |
| Boolean | true | Значення true/false |
| Null | null | Явно встановити порожнє |
Не підтримується: Об'єкти, масиви, функції, undefined
projectId, demo, __proto__, constructor, prototype| Обмеження | Значення |
|---|---|
| Максимум параметрів | 20 |
| Максимальна довжина імені | 50 символів |
| Максимальна довжина значення | 500 символів |
Користувацькі параметри відображаються в панелі керування Chatim у розділі Відвідувачі — натисніть на відвідувача, щоб побачити розділ Користувацьких параметрів.
Віджет може автоматично захоплювати URL параметри зі сторінок відвідувачів без жодних змін коду. Налаштуйте це в Налаштуваннях віджета > URL параметри.
window.chatim.settings.params (перевизначає URL параметри)window.chatim.widget.setParams() (найвищий пріоритет)SDK включає чергу команд, яка дозволяє викликати методи віджета до повного завантаження віджета. Команди автоматично виконуються, коли віджет готовий.
window.chatim.cmd.push(function() {
window.chatim.widget.close();
});
window.chatim.cmd.push(() => {
window.chatim.widget.open();
console.log('Widget opened!');
});<script>
window.chatim = window.chatim || {};
window.chatim.cmd = window.chatim.cmd || [];
window.chatim.settings = { projectId: "YOUR_PROJECT_ID" };
// Queue a function to run when widget is ready
window.chatim.cmd.push(() => {
console.log('Widget is ready!');
window.chatim.widget.close();
});
</script>
<script src="https://widget.chatim.app/widget.js" async></script><button onclick="window.chatim.widget.open()">
Chat with us
</button>window.addEventListener('scroll', function() {
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
window.chatim.widget.open();
}
});function onUserLogout() {
window.chatim.widget.restartChat();
}setTimeout(function() {
window.chatim.widget.open();
}, 5000);import { useEffect } from 'react';
function App() {
useEffect(() => {
window.chatim = window.chatim || {};
window.chatim.cmd = window.chatim.cmd || [];
window.chatim.settings = {
projectId: 'YOUR_PROJECT_ID',
params: { userId: getCurrentUserId() }
};
const script = document.createElement('script');
script.src = 'https://widget.chatim.app/widget.js';
script.async = true;
document.body.appendChild(script);
return () => document.body.removeChild(script);
}, []);
return <button onClick={() => window.chatim.widget.open()}>Open Chat</button>;
}'use client';
import { useEffect } from 'react';
import Script from 'next/script';
export default function ChatWidget() {
useEffect(() => {
window.chatim = window.chatim || {};
window.chatim.cmd = window.chatim.cmd || [];
window.chatim.settings = { projectId: 'YOUR_PROJECT_ID' };
}, []);
return (
<Script
src="https://widget.chatim.app/widget.js"
strategy="lazyOnload"
/>
);
}export default {
mounted() {
window.chatim = window.chatim || {};
window.chatim.cmd = window.chatim.cmd || [];
window.chatim.settings = { projectId: 'YOUR_PROJECT_ID' };
const script = document.createElement('script');
script.src = 'https://widget.chatim.app/widget.js';
script.async = true;
document.body.appendChild(script);
},
methods: {
openChat() {
window.chatim.widget.open();
}
}
}// On page load
window.chatim.settings = {
projectId: "YOUR_PROJECT_ID",
params: {
userId: getUserId(),
userType: isLoggedIn() ? "registered" : "guest",
utm_source: getUrlParam("utm_source")
}
};
// On product view
function trackProductView(product) {
window.chatim.widget.setParams({
lastProductViewed: product.name,
lastProductPrice: product.price
});
}
// On add to cart
function trackAddToCart(cart) {
window.chatim.widget.setParams({
cartValue: cart.total,
cartItems: cart.items.length
});
}Для зворотної сумісності ці застарілі API все ще підтримуються:
// Legacy settings (still works)
window.chatimSettings = { projectId: "YOUR_PROJECT_ID" };
// Legacy widget methods (still works)
window.chatimWidget.open();
window.chatimWidget.close();Ми рекомендуємо використовувати новий простір імен window.chatim для всіх нових реалізацій.
projectIdwindow.chatim та window.chatim.cmd ініціалізовані перед викликом методівgetConfig() повертає null до повної ініціалізації віджета. Використовуйте підхід опитування:
const checkWidget = setInterval(() => {
const config = window.chatim.widget.getConfig();
if (config) {
clearInterval(checkWidget);
console.log('Widget config:', config);
}
}, 100);Якщо вам потрібна допомога з інтеграцією SDK, зверніться до [email protected].
Почати