Kif nistgħu ngħinuk?

Għidilna fil-qosor x'ġara — inwieġbuk bl-email.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Mur fil-paġna ewlenija

Detalles técnicos

Protocolo, códigos de error, accesibilidad y el estado que respalda cada promesa.

Esta página está dirigida a quienes quieren conocer los detalles. Todo lo que aparece aquí se ha medido o leído en el código fuente; nada se ha estimado.

Cómo se carga el widget

En dos etapas. Primero, un pequeño cargador que dibuja el botón y no hace nada más. El chat solo se obtiene cuando se activa uno de cinco disparadores: el navegador está inactivo (como muy tarde después de tres segundos), un ratón o dedo sobre el botón, un comando de la página, una señal de frustración de MousePlayer o un aviso push, por ejemplo de su service worker.

Hay un motivo: la mayoría de los visitantes nunca abre el chat. Para ellos no debería retrasar la carga de la página; los disparadores aplicables se establecen en la etiqueta de script.

Como comparación, también medida y con los tres comprimidos con brotli: el cargador de Crisp pesa 2876 B y el de Intercom, 3161 B. Con 3069 B estamos entre ambos, no varios órdenes de magnitud por debajo. Quien afirme lo contrario no lo ha medido.

No interfiere con su sitio

El widget se aloja en un shadow DOM cerrado. Sus estilos no pueden alcanzarlo y los del widget no pueden alcanzar su página, ni siquiera si establece * { box-sizing: border-box } o utiliza un framework CSS que redefine todo.

Funciona con una política de seguridad de contenido estricta sin un solo mensaje en la consola: sin eval, sin fuente web y sin píxel de seguimiento. Establece sus estilos mediante hojas de estilo construibles, que no están cubiertas por style-src. Por tanto, el botón, la ventana del chat, los recorridos del producto y la consola de agentes en su sitio no necesitan unsafe-inline: medido con style-src 'self' e incluso con style-src 'none', cero infracciones y estilos completos. Medido en Chromium actual; los navegadores antiguos sin hojas de estilo construibles (como Safari anterior a 16.4) recurren a un elemento <style>, que una política estricta bloquea.

Cero solicitudes a otros servidores. Todo procede de reactive.chat o, con un dominio propio, de su propia dirección; las imágenes, como el logotipo y los avatares, proceden de las direcciones que usted indique.

El protocolo

La conexión utiliza WebSocket; cuando una red no deja pasar WebSocket, utiliza solicitudes HTTPS normales (Server-Sent Events o sondeo largo). El protocolo tiene versiones y define 31 códigos de error, 26 para el widget y el resto para el panel de agentes y la búsqueda del sitio web, cada uno con una respuesta prescrita del cliente (reintentar de inmediato, tras una espera, tras reconectar o no reintentar), algunos también con un código de cierre. Un error que no esté en la lista se trata como un error temporal del servidor: reintento tras una espera y, después de cinco intentos, el mensaje se considera no entregado y se puede reenviar, sin bucle infinito.

Reconexión con espera creciente. Si se interrumpe la conexión, los mensajes pasan a un búfer y se envían en cuanto se restablece. Cada mensaje lleva un ID; el servidor reconoce las repeticiones y no las almacena dos veces.

Accesibilidad

Desarrollado conforme a WCAG 2.2 AA:

El contraste se calcula

Usted indica un color. La superficie toma exactamente ese color. El texto sobre ella se ajusta hasta alcanzar una relación de 4,5:1, el requisito de WCAG para texto normal.

Medido con 178 colores, dos temas y tres combinaciones, es decir, 1068 puntos de datos: ninguno por debajo de 4,5:1, con un peor valor de 4,50:1.

Esa es la diferencia respecto a otros proveedores: en ellos se puede configurar un widget hasta que nadie pueda leerlo.

Datos personales

La ocultación se realiza en dos lugares: en el navegador del visitante antes de que salga nada del dispositivo y, de nuevo, en el servidor antes de almacenar nada. Se reconocen números de tarjeta (con comprobación de Luhn), IBAN, direcciones de correo, números de teléfono, números fiscales y de documentos de identidad. Los números de pedido y de cliente se mantienen.

En dos lugares porque uno solo no basta: la del navegador se puede desactivar y la del servidor solo ve lo que llega.

Reglas

Cuándo interviene el widget se define en una lista declarativa de reglas, no en una condición del código. Se incluyen seis reglas predeterminadas (permanencia en una página, clics de rabia, error de JavaScript, formulario atascado, intención de compra y abandono del proceso de pago); los clics de rabia, los formularios atascados y la intención de compra solo se detectan junto con MousePlayer. Puede añadir las suyas en su cuenta. En el plan Free se aplica un aviso activo por proyecto.

La diferencia es práctica: cambiar una regla significa cambiar un ajuste en su cuenta, no realizar un despliegue.

Integraciones

Los webhooks y Slack están terminados. Hay conexiones preparadas para más de 30 servicios adicionales; la mayoría se ha probado con servicios simulados, pero nunca ha funcionado con el servicio real, y la página de integraciones de su cuenta lo indica.

La API de servidor (REST y MCP) lee conversaciones, mensajes, proyectos, visitantes, eventos y reglas, escribe mensajes y eventos y registra webhooks. La lista de visitantes y MCP pueden desactivarse por proyecto.

Cada integración pasa por una cola con mecanismo de corte: si un tercero se bloquea, se omite durante un tiempo tras fallos repetidos. Nunca se retrasa un mensaje de chat por ello: es la regla más importante de esta capa.

Qué no está terminado

Para que nadie lo descubra durante la integración:

Más información en la documentación

Cómo se coordinan el widget, el servidor y la conexión: Arquitectura y funcionamiento. Conexión, alternativa HTTP y reconexión: Transporte. Todos los capítulos: documentación.

Aġġornat l-aħħar: