Le SDK du Widget Chatim vous permet d'integrer et de controler programmatiquement le widget de chat Chatim sur votre site web.
Ajoutez le code suivant a votre site web, juste avant la balise fermante </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>Remplacez YOUR_PROJECT_ID par l'identifiant reel de votre projet depuis le tableau de bord Chatim.
Configurez le widget en definissant les proprietes sur 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);Met a jour la configuration du widget dynamiquement au moment de l'execution.
const config = window.chatim.widget.getConfig();Renvoie l'objet de configuration actuel, ou null si le widget n'est pas encore initialise.
window.chatim.widget.setParams({
lastPage: "/checkout",
cartValue: 99.99,
isPremium: true
});Met a jour les parametres personnalises apres l'initialisation du widget. Les parametres sont fusionnes avec les valeurs existantes (non remplaces).
window.chatim.widget.restartChat();Efface toutes les donnees et l'historique de chat stockes, ferme le widget et reinitialise avec une nouvelle session. Utile lorsqu'un utilisateur se deconnecte ou que vous souhaitez reinitialiser la conversation.
| Propriete | Type | Requis | Description |
|---|---|---|---|
projectId | String | Oui | L'identifiant de votre projet Chatim |
params | Object | Non | Parametres personnalises (paires cle-valeur) |
| Methode | Retourne | Description |
|---|---|---|
open() | void | Ouvre le widget de chat |
close() | void | Ferme le widget de chat |
setConfig(config) | void | Met a jour la configuration du widget |
getConfig() | Object | null | Renvoie la configuration actuelle |
setParams(params) | void | Met a jour les parametres personnalises (fusionnes) |
restartChat() | void | Efface l'historique du chat et redemarre la session |
Les parametres personnalises vous permettent d'envoyer des donnees supplementaires sur vos visiteurs a Chatim. Ces donnees sont stockees avec les sessions de chat et affichees dans le panneau Visiteur du tableau de bord d'administration.
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"
});| Type | Exemple | Notes |
|---|---|---|
| String | "user-123" | Maximum 500 caracteres |
| Number | 99.99 | Entiers et decimaux |
| Boolean | true | Valeurs vrai/faux |
| Null | null | Definir explicitement comme vide |
Non pris en charge : Objets, tableaux, fonctions, undefined
projectId, demo, __proto__, constructor, prototype| Limite | Valeur |
|---|---|
| Nombre maximum de parametres | 20 |
| Longueur maximale du nom | 50 caracteres |
| Longueur maximale de la valeur | 500 caracteres |
Les parametres personnalises apparaissent dans le tableau de bord Chatim sous Visiteurs — cliquez sur un visiteur pour voir sa section Parametres personnalises.
Le widget peut capturer automatiquement les parametres URL des pages visiteurs sans aucune modification de code. Configurez cela dans Parametres du Widget > Parametres URL.
window.chatim.settings.params (remplace les parametres URL)window.chatim.widget.setParams() (priorite la plus haute)Le SDK inclut une file de commandes qui vous permet d'appeler les methodes du widget avant que le widget ne soit completement charge. Les commandes sont automatiquement executees une fois le widget pret.
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
});
}Pour la retrocompatibilite, ces APIs heritees sont toujours prises en charge :
// Legacy settings (still works)
window.chatimSettings = { projectId: "YOUR_PROJECT_ID" };
// Legacy widget methods (still works)
window.chatimWidget.open();
window.chatimWidget.close();Nous recommandons d'utiliser le nouveau namespace window.chatim pour toutes les nouvelles implementations.
projectId est correctwindow.chatim et window.chatim.cmd sont initialises avant d'appeler les methodesgetConfig() renvoie null avant que le widget ne soit completement initialise. Utilisez une approche de sondage :
const checkWidget = setInterval(() => {
const config = window.chatim.widget.getConfig();
if (config) {
clearInterval(checkWidget);
console.log('Widget config:', config);
}
}, 100);Si vous avez besoin d'aide pour l'integration du SDK, contactez [email protected].
Commencer