Datos de clientes en el chat (pedidos, envíos y facturas)
Permita que el asistente de IA responda a los clientes con sesión iniciada sobre sus propios pedidos, de forma segura mediante una identidad firmada, con campos definidos con precisión, consultados en su tienda o importados.
Con los datos de clientes, el asistente de IA responde preguntas como «¿Dónde está mi paquete?», «¿Está pagada mi factura?» o «¿Qué incluía mi último pedido?», para clientes con sesión iniciada y solo sobre sus propios datos. La función está disponible en los planes de pago.
Cómo se protegen los datos
- El navegador no demuestra nada. Ningún número de pedido o factura, ninguna dirección de correo ni ningún dato mostrado en la página o escrito en el chat concede acceso. Solo una identidad firmada por su servidor determina quién puede ver cada dato.
- Un número solo es un filtro. Si un cliente indica un número de pedido, solo se busca entre los pedidos de ese cliente. Un número ajeno no devuelve nada.
- Usted decide cada campo. El asistente solo recibe los campos que habilite. Todo lo demás se descarta al llegar, aunque su tienda lo envíe.
- Sin almacenamiento de datos por nuestra parte (consulta). En el modo de consulta, reactive.chat pregunta a su tienda por cada pregunta y no guarda la respuesta. En el modo de importación, los datos se almacenan cifrados en nuestros sistemas y se eliminan como máximo al cabo de 90 días.
- Solo equipos propios. Los datos solo se envían a nuestros propios servidores de IA (o a su nodo de IA propio), nunca a un servicio de IA de terceros.
Requisito: verificación de identidad
El asistente solo utiliza datos de clientes para visitantes cuya identidad haya confirmado su servidor. Configure un secreto en Proyecto → Verificación de identidad de su cuenta. Permanece en su servidor y nunca debe incluirse en el navegador ni en el código de inserción.
Para cada cliente con sesión iniciada, su servidor calcula un hash con fecha de caducidad (como máximo 24 horas en el futuro) y lo transmite al widget:
$userId = (string) $customer->id;
$exp = time() + 3600;
$hash = hash_hmac('sha256', $userId . '.' . $exp, getenv('RC_IDENT_SECRET'));
echo "<script>ReactiveChat('identify', { userId: " . json_encode($userId)
. ", userHash: " . json_encode($hash) . ", exp: " . $exp . " });</script>";
const crypto = require('crypto');
const exp = Math.floor(Date.now() / 1000) + 3600;
const hash = crypto.createHmac('sha256', process.env.RC_IDENT_SECRET)
.update(String(user.id) + '.' + exp).digest('hex');
// in the template: ReactiveChat('identify', { userId: '<id>', userHash: '<hash>', exp: <exp> });
Un hash sin exp sigue confirmando al visitante (por ejemplo, para el historial de conversación), pero no basta para los datos de clientes. Al renovar el secreto, el anterior sigue siendo válido durante 24 horas.
Firmar también el correo (para reservas de citas e integraciones basadas en correo). Un campo email junto al hash solo se considera confirmado si forma parte de la firma: userHash = HMAC-SHA256(secret, userId + "." + exp + "." + email), con la dirección exactamente como se transmite a identify. Sin ello, el visitante sigue con sesión iniciada, pero el asistente no reserva citas para esa dirección y las integraciones no la consultan. La forma existente userId + "." + exp sigue funcionando sin cambios.
Consulta, importación o ambas
En Proyecto → Datos de clientes puede elegir de dónde obtiene los datos el asistente:
- Consultar en su tienda – reactive.chat llama a su endpoint para cada pregunta pertinente. Los datos permanecen con usted. Recomendado.
- Importación por API – su tienda envía los pedidos de un cliente a reactive.chat. Útil si su tienda no puede ofrecer un endpoint.
- Ambos – primero los datos importados; si no se encuentra nada, se realiza la consulta.
Qué datos puede recibir el asistente
Habilite cada campo de forma individual. Los valores predeterminados cubren las preguntas habituales:
bestellung.nummer– número de pedido. Predeterminado: siempre activado. Uso: obligatorio, no hay pedido sin númerobestellung.datum– fecha del pedido (YYYY-MM-DD). Predeterminado: activado. Uso: «¿Cuándo hice el pedido?»bestellung.status– estado del pedido como texto. Predeterminado: activado. Uso: «¿Ya se ha enviado mi pedido?»bestellung.summe– importe total. Predeterminado: activado. Uso: «¿Cuánto pagué?»bestellung.waehrung– moneda (ISO, por ejemplo EUR). Predeterminado: activado. Uso: solo junto con el totalpositionen.name– nombre del artículo. Predeterminado: activado. Uso: «¿Qué incluía el pedido?»positionen.menge– cantidad por artículo. Predeterminado: activado. Uso: «¿Cuántos pedí?»versand.dienst– transportista. Predeterminado: activado. Uso: «¿Quién entrega el paquete?»versand.sendungsnummer– número de seguimiento. Predeterminado: activado. Uso: «¿Dónde está mi paquete?»versand.status– estado del envío como texto. Predeterminado: activado. Uso: «¿Está en camino?»versand.ort– localidad de la dirección de entrega. Predeterminado: desactivado. Uso: «¿Adónde va mi paquete?»versand.plz– código postal de la dirección de entrega. Predeterminado: desactivado. Uso: como arribarechnung.nummer– número de factura. Predeterminado: activado. Uso: «¿Qué factura corresponde?»rechnung.status– estado del pago como texto. Predeterminado: activado. Uso: «¿Está pagada mi factura?»rechnung.faellig_am– fecha de vencimiento. Predeterminado: activado. Uso: «¿Hasta cuándo tengo para pagar?»
Un campo desactivado nunca llega al asistente: en una consulta se descarta y en una importación ni siquiera se almacena. La localidad y el código postal solo se permiten si se habilitan expresamente; la calle y el nombre siempre quedan excluidos.
Qué no se transmite nunca
Estos datos no se pueden habilitar. Si su tienda los envía, se descartan:
- calle, número y líneas adicionales de la dirección
- nombre del destinatario o cliente
- dirección de correo electrónico y número de teléfono
- IBAN, BIC, número de cuenta y datos de tarjeta
- fecha de nacimiento
- contraseñas, tokens y claves de acceso
- números fiscales y de documentos de identidad
Límites
Hasta 10 pedidos por respuesta, hasta 20 artículos por pedido, textos de hasta 200 caracteres y respuesta completa de hasta 16 kB. Los campos desconocidos se descartan sin error.
El endpoint de consulta
reactive.chat llama a su endpoint mediante POST:
POST https://shop.your-domain.com/rc-customer-data
Content-Type: application/json
X-RC-Zeit: 1791196400
X-RC-Signatur: <hex(HMAC_SHA256(endpoint secret, X-RC-Zeit + "." + body))>
{"user_id":"4711","anliegen":"bestellung","referenz":"2026-0815","sprache":"en","nonce":"..."}
user_ides el ID de cliente confirmado mediante la verificación de identidad, nunca un dato obtenido del chat.anliegenesbestellung(pedido),lieferung(entrega),rechnung(factura),retoure(devolución) otestpara el botón de prueba.referenzes un número mencionado por el cliente o está vacío. Búsquelo solo entre los pedidos de esteuser_id.
Su endpoint debe:
- verificar la firma (comparación en tiempo constante) y rechazar solicitudes cuyo
X-RC-Zeitdifiera en más de 5 minutos, - devolver solo datos del
user_idindicado, - ser accesible mediante
httpsen el puerto 443 y en una dirección pública, sin redirecciones, - responder en un plazo de 3 segundos.
Respuesta:
{
"bestellungen": [
{
"nummer": "2026-0815", "datum": "2026-09-28", "status": "shipped",
"summe": "49.90", "waehrung": "EUR",
"positionen": [ { "name": "Balance bike blue", "menge": 1 } ],
"versand": { "dienst": "DHL", "sendungsnummer": "00340434...", "status": "out for delivery" },
"rechnung": { "nummer": "R-2026-1201", "status": "paid", "faellig_am": "2026-10-12" }
}
]
}
Hay un ejemplo completo en PHP en la documentación para desarrolladores (kundendaten-referenz-endpunkt.php).
Con Probar la conexión, reactive.chat llama a su endpoint con user_id rc-test y el tipo de solicitud test y muestra el resultado. Devuelva una lista vacía o un pedido de ejemplo para esa solicitud.
Importación por API
Con una clave de API que tenga el permiso kundendaten:schreiben:
PUT https://reactive.chat/v1/kundendaten/4711?project_id=123
Authorization: Bearer <API key>
Content-Type: application/json
{"bestellungen":[ ... as above ... ]}
project_id es el número de su proyecto; si su espacio de trabajo solo tiene uno, puede omitirlo. Un PUT sustituye todos los pedidos de este ID de cliente (hasta 50). DELETE /v1/kundendaten/4711?project_id=123 los elimina. Los datos importados se almacenan cifrados en nuestros sistemas y se eliminan 90 días después de la última importación; envíe los cambios de forma continua, por ejemplo con cada cambio de estado.
Visitantes sin sesión iniciada
Si alguien sin identidad confirmada pregunta por un pedido, el asistente no consulta nada. En su lugar, muestra un aviso que puede configurar en Proyecto → Datos de clientes: un texto por idioma y, opcionalmente, un enlace para iniciar sesión. Como alternativa, transfiere la pregunta a su equipo.
Qué se almacena
- Consulta: la respuesta de su tienda se utiliza solo para esa respuesta del asistente y no se almacena, ni en la conversación ni en la base de conocimiento.
- Importación: cifrada, hasta 90 días, se elimina junto con el proyecto.
- La respuesta del asistente aparece en el historial de la conversación como cualquier mensaje. Su equipo la ve en el panel.
Solución de problemas
- El asistente pide al cliente que inicie sesión aunque ya lo haya hecho: si falta
exp, ha caducado o el hash no coincide, el visitante no se considera confirmado. Compruebe el secreto, el ordenuserId + "." + expy el reloj de su servidor. - El botón de prueba indica «dirección no permitida»: el endpoint debe ser accesible mediante
httpsen una dirección pública; se rechazan las direcciones internas y otros puertos. - Su sistema indica un error de firma: la cadena firmada es
X-RC-Zeit + "." + bodycon el secreto del endpoint: exactamente el cuerpo recibido, sin volver a codificarlo. - Falta un campo en la respuesta del asistente: ¿está habilitado en «Qué datos puede recibir el asistente»?
Más información en la documentación
En detalle: Endpoint de datos de clientes. Todos los capítulos están en la documentación.
Pēdējoreiz atjaunināts: