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].
Начать