Instalar el chat en tu web
1. Copia el fragmento
En Canales → Web tienes el fragmento con la dirección de tu organización ya puesta. Pégalo antes de cerrar el `</body>` de tu sitio.
Se carga de forma asíncrona: no bloquea la página ni entra en tu paquete de JavaScript.
<script>
window.mesaDeAyuda = {
token: async () => (await fetch('/api/soporte/token')).text(),
}
</script>
<script src="https://TU-ORGANIZACION.ejemplo.com/widget/embed.js" async></script>2. Autoriza tu dominio
En la misma pantalla, añade los orígenes desde los que se puede abrir el chat. Sin esa lista el widget no arranca: es lo que impide que otro monte tu chat en su página.
Pon el origen completo, con protocolo, uno por línea. Los subdominios no se heredan.
- https://tusitio.com
- https://www.tusitio.com
- https://tienda.tusitio.com
3. Identifica a quien ya ha entrado (opcional, pero importante)
Sin token, quien escribe es una visita anónima: puede preguntar, pero el agente no puede consultar sus pedidos ni ejecutar ninguna acción sobre su cuenta. Es deliberado.
Para que sí pueda, tu servidor firma un token corto con el secreto del canal web y el widget lo pide cuando lo necesita. La identidad sale de tu sesión, no de lo que escriba nadie en el chat.
import { SignJWT } from 'jose'
// En TU servidor, con la clave del canal web. Nunca en el navegador.
const token = await new SignJWT({ sub: usuario.id, email: usuario.email, name: usuario.nombre })
.setProtectedHeader({ alg: 'HS256' })
.setIssuedAt()
.setExpirationTime('15m')
.sign(new TextEncoder().encode(process.env.MESA_WIDGET_SECRET))4. Compruébalo
Abre tu sitio, escribe algo y míralo llegar a la bandeja. Si no aparece, casi siempre es el origen: la consola del navegador lo dice con todas las letras.