Smart Answer: respuesta de IA en la búsqueda de su sitio web
Cómo insertar Smart Answer: script suche.js, recuadro en el marcado, interfaz HTTP pública para páginas de búsqueda renderizadas en el servidor, flujo de respuestas mediante Server-Sent Events, estilos con variables CSS y transferencia al chat.
Smart Answer muestra una respuesta breve a la pregunta del visitante por encima o por debajo de los resultados de búsqueda de su sitio web, transmitida progresivamente, con fuentes de su base de conocimiento y un campo para la siguiente pregunta. Smart Answer es un servicio independiente; utiliza la misma base de conocimiento que su asistente de chat. Puede activarlo y configurar su aspecto en Proyecto → Smart Answer para la búsqueda en el sitio de su cuenta.
Inserción con suche.js
Si el cargador del chat ya está en la página, basta una línea:
<script src="https://cdn.reactive.chat/suche.js" async></script>
Sin el widget de chat, indique la clave del sitio:
<script src="https://cdn.reactive.chat/suche.js" data-site-key="SITE_KEY" async></script>
El script se vincula a los campos de búsqueda de su página (usted define cuáles en su cuenta mediante un selector CSS), espera al envío o a una pausa al escribir y muestra la respuesta en un recuadro en el lugar configurado (antes, después o dentro de un elemento de destino). De forma predeterminada, solo responde a entradas que parecen preguntas.
Atributos de la etiqueta de script:
- data-site-key (opcional) – en su defecto, se obtiene del cargador del chat (
data-rc-site-key). - data-ws-url (opcional) – dirección del chat; en su defecto, se deduce como para el chat.
- data-api (opcional) – dirección base de la interfaz, predeterminada
https://ws.reactive.chato su dominio propio. - data-locale (opcional) – idioma; en su defecto,
<html lang>y después el navegador.
El script no establece cookies y solo almacena datos en sessionStorage. Para la CSP necesita script-src https://cdn.reactive.chat y connect-src https://ws.reactive.chat (Seguridad y CSP).
Transferencia al chat
Si el visitante hace una pregunta de seguimiento en el recuadro, según el ajuste Pregunta de seguimiento, la conversación continúa en el widget de chat (ReactiveChat('continueConversation', id, text) o ReactiveChat('startConversation', text)) o se responde en el mismo recuadro. Sin widget de chat en la página, la pregunta de seguimiento siempre permanece en el recuadro.
Estilos
El recuadro (.rc-ai) incluye su propio CSS y está protegido frente a los restablecimientos de estilos de su página. Puede ajustarlo mediante variables con la especificidad más baja:
.rc-ai {
--rc-ai-akzent: #0a7cff;
--rc-ai-hg: var(--karte, #fff);
--rc-ai-text: #1d1d1f;
--rc-ai-rand: #e3e3e8;
--rc-ai-radius: 10px;
--rc-ai-schrift: inherit;
--rc-ai-abstand: 20px;
--rc-ai-schriftgroesse: 16px;
--rc-ai-zeilenhoehe: 1.6;
}
Puede cambiar partes concretas con .rc-ai .rc-ai__teil { … } en el campo CSS personalizado de su cuenta, por ejemplo .rc-ai .rc-ai__hinweis { display: none; }. La capa protectora no protege frente a reglas de su página con #id o !important.
Interfaz HTTP
Para páginas de búsqueda renderizadas en el servidor o interfaces propias, hay una interfaz pública sin autenticación ni cookies en https://ws.reactive.chat/api/suche/SITE_KEY.
Común a todos los endpoints:
- CORS solo para orígenes de los dominios de su proyecto (subdominios incluidos); las llamadas desde su servidor sin
Originsiempre funcionan. - Limitación: 60 solicitudes por minuto y dirección de visitante entre todos los endpoints → 429 con
Retry-AfteryX-RateLimit-*. Si llama desde su servidor, cuenta la dirección de este; por ello, para muchos visitantes utilicesuche.jsen el navegador o el dominio propio con una clave de proxy. - Las preguntas y respuestas no se escriben en registros de acceso.
GET /api/suche/SITE_KEY?locale=de – configuración, CSS y plantilla vacía del recuadro (Cache-Control: public, max-age=60):
{"v":1,"aktiv":false}– desactivado, bloqueado o desconocido (404 para una clave desconocida).{"v":1,"aktiv":true,"sprache":"de","konfig":{…},"css":"…","vorlage":"<div class=\"rc-ai\" …>","skript":"https://cdn.reactive.chat/suche.js"}
POST /api/suche/SITE_KEY – HTML completo del recuadro para una pregunta, cuerpo de hasta 4 KB:
curl -s -X POST "https://ws.reactive.chat/api/suche/SITE_KEY" \
-H "Content-Type: application/json" \
-d '{"q":"How long does shipping take?","locale":"en"}'
{"v":1,"aktiv":true,"frage":false,"html":""}– la entrada no es una pregunta.{"v":1,"aktiv":true,"frage":true,"html":"…","css":"<style id=\"rc-ai-css\">…</style>","skript":"…","einbettung":"…"}– inserteeinbettungen su página de búsqueda;suche.jsrellena después el recuadro con la respuesta.- 400
{"v":1,"error":"bad_request","field":"q"}– faltaq, está vacío o supera los 300 caracteres. - 413
payload_too_large, 405 para cualquier otro método.
POST /api/suche/SITE_KEY/antwort – la propia respuesta como flujo de Server-Sent Events, cuerpo de hasta 8 KB:
{"q":"How long does shipping take?","locale":"en",
"visitor_id":"v_…",
"ctx":{"url":"https://shop.example/search","title":"Search"},
"folge":false,
"vorher":[{"q":"…","a":"…"}]}
- q (cadena, obligatorio, 1–300 caracteres)
- locale (cadena, opcional)
- visitor_id (cadena, opcional,
[A-Za-z0-9_-]{1,80}) – ID del visitante del chat, para que la transferencia al chat corresponda. - ctx (objeto, opcional) –
url,path,referrer,title; se eliminan la consulta y el ancla. - folge (
true, opcional) – pregunta de seguimiento; omite el filtro de preguntas. - vorher (lista, opcional) – hasta 3 pares anteriores (
q≤ 300,a≤ 1500 caracteres).
Respuesta text/event-stream:
event: status
data: {"stufe":"denkt"}
event: text
data: {"text":"Shipping usually takes"}
event: fertig
data: {"text":"Shipping usually takes 2–3 working days.","quellen":[{"titel":"Shipping","url":"https://shop.example/shipping"}],"fortsetzung":{"art":"faden","id":"01J…"}}
- status –
{stufe}:denkt,sucht,schreibt,wartet. El primer evento siempre esdenkt. - text –
{text}: todo el texto visible hasta ese momento (no una diferencia), como máximo cada 150 ms. - fertig –
{text, quellen, fortsetzung};fortsetzunges{art:"faden", id}(guardado como conversación),{art:"neu"}onull. - fehler –
{code, text?}concode:aus,gesperrt,drossel,motor,zeit,einwilligung,ungueltig. Sifehlerllega después detext, conserve el texto.
Después de fertig o fehler, el flujo termina. Los errores anteriores al inicio también llegan como flujo con un único fehler (HTTP 404, 429, 400, 413, 503 o 200). Sin texto al cabo de 45 segundos o sin final al cabo de 90 segundos, se produce fehler zeit. Si cierra la conexión, se interrumpe la respuesta. Un proxy intermedio debe reenviar el flujo sin almacenamiento en búfer.
// read the stream in the browser (EventSource cannot POST)
const r = await fetch('https://ws.reactive.chat/api/suche/SITE_KEY/antwort', {
method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ q: frage, locale: 'en' }), credentials: 'omit'
});
const leser = r.body.getReader(); const dec = new TextDecoder(); let puffer = '';
for (;;) {
const { value, done } = await leser.read(); if (done) break;
puffer += dec.decode(value, { stream: true });
let i; while ((i = puffer.indexOf('\n\n')) >= 0) {
const block = puffer.slice(0, i); puffer = puffer.slice(i + 2);
const ev = /^event: (.*)$/m.exec(block), da = /^data: (.*)$/m.exec(block);
if (ev && da) zeige(ev[1], JSON.parse(da[1]));
}
}
Siguiente: Integración de privacidad
সর্বশেষ হালনাগাদ: