El SDK del Widget Chatim le permite incrustar y controlar programaticamente el widget de chat Chatim en su sitio web.
Agregue el siguiente codigo a su sitio web, justo antes de la etiqueta de cierre </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>Reemplace YOUR_PROJECT_ID con el ID real de su proyecto del panel de Chatim.
Configure el widget estableciendo propiedades en 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);Actualiza la configuracion del widget dinamicamente en tiempo de ejecucion.
const config = window.chatim.widget.getConfig();Devuelve el objeto de configuracion actual, o null si el widget aun no esta inicializado.
window.chatim.widget.setParams({
lastPage: "/checkout",
cartValue: 99.99,
isPremium: true
});Actualiza los parametros personalizados despues de que el widget se ha inicializado. Los parametros se fusionan con los valores existentes (no se reemplazan).
window.chatim.widget.restartChat();Borra todos los datos e historial de chat almacenados, cierra el widget y reinicializa con una sesion nueva. Util cuando un usuario cierra sesion o desea restablecer la conversacion.
| Propiedad | Tipo | Requerido | Descripcion |
|---|---|---|---|
projectId | String | Si | El ID de su proyecto Chatim |
params | Object | No | Parametros personalizados (pares clave-valor) |
| Metodo | Retorna | Descripcion |
|---|---|---|
open() | void | Abre el widget de chat |
close() | void | Cierra el widget de chat |
setConfig(config) | void | Actualiza la configuracion del widget |
getConfig() | Object | null | Devuelve la configuracion actual |
setParams(params) | void | Actualiza parametros personalizados (fusionados) |
restartChat() | void | Borra el historial de chat y reinicia la sesion |
Los parametros personalizados le permiten enviar datos adicionales sobre sus visitantes a Chatim. Estos datos se almacenan con las sesiones de chat y se muestran en el panel de Visitantes del tablero de administracion.
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"
});| Tipo | Ejemplo | Notas |
|---|---|---|
| String | "user-123" | Maximo 500 caracteres |
| Number | 99.99 | Enteros y decimales |
| Boolean | true | Valores verdadero/falso |
| Null | null | Establecer vacio explicitamente |
No soportado: Objetos, arrays, funciones, undefined
projectId, demo, __proto__, constructor, prototype| Limite | Valor |
|---|---|
| Maximo de parametros | 20 |
| Longitud maxima del nombre | 50 caracteres |
| Longitud maxima del valor | 500 caracteres |
Los parametros personalizados aparecen en el panel de Chatim en Visitantes — haga clic en un visitante para ver su seccion de Parametros personalizados.
El widget puede capturar automaticamente parametros de URL de las paginas de visitantes sin ningun cambio en el codigo. Configure esto en Configuracion del Widget > Parametros URL.
window.chatim.settings.params (sobreescribe parametros URL)window.chatim.widget.setParams() (prioridad mas alta)El SDK incluye una cola de comandos que le permite llamar metodos del widget antes de que el widget se haya cargado completamente. Los comandos se ejecutan automaticamente una vez que el widget esta listo.
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
});
}Para compatibilidad con versiones anteriores, estas APIs heredadas aun son compatibles:
// Legacy settings (still works)
window.chatimSettings = { projectId: "YOUR_PROJECT_ID" };
// Legacy widget methods (still works)
window.chatimWidget.open();
window.chatimWidget.close();Recomendamos usar el nuevo espacio de nombres window.chatim para todas las nuevas implementaciones.
projectId sea correctowindow.chatim y window.chatim.cmd esten inicializados antes de llamar metodosgetConfig() devuelve null antes de que el widget este completamente inicializado. Use un enfoque de sondeo:
const checkWidget = setInterval(() => {
const config = window.chatim.widget.getConfig();
if (config) {
clearInterval(checkWidget);
console.log('Widget config:', config);
}
}, 100);Si necesita ayuda con la integracion del SDK, contacte a [email protected].
Comenzar