Hvordan kan vi hjælpe?

Fortæl os kort, hvad det drejer sig om – vi vender tilbage på e-mail.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Til startsiden

Smart Answer: AI-antwoord in uw websitezoekfunctie

Smart Answer insluiten: suche.js, het blok in de markup, de openbare HTTP-interface voor door de server gerenderde zoekpagina’s, de SSE-antwoordstream, CSS-variabelen en overdracht naar de chat.

Smart Answer toont boven of onder de resultaten van uw websitezoekfunctie een kort antwoord op de vraag van de bezoeker — gestreamd, met bronnen uit uw kennisbank en een veld voor de volgende vraag. Smart Answer is een afzonderlijke dienst; deze gebruikt dezelfde kennisbank als uw chatassistent. Inschakelen en vormgeven doet u in uw account onder Project → Smart Answer voor zoeken op de website.

Insluiten met suche.js

Als de chatloader al op de pagina staat, volstaat één regel:

<script src="https://cdn.reactive.chat/suche.js" async></script>

Zonder de chatwidget geeft u de sitesleutel mee:

<script src="https://cdn.reactive.chat/suche.js" data-site-key="SITE_KEY" async></script>

Het script koppelt zich aan de zoekvelden van uw pagina (welke dat zijn, bepaalt u in uw account met een CSS-selector), wacht op verzenden of een typpauze en toont het antwoord in een blok op de ingestelde plek (vóór, na of binnen een doelelement). Standaard beantwoordt het alleen invoer die op een vraag lijkt.

Attributen op de scripttag:

Het script plaatst geen cookies en slaat alleen gegevens in sessionStorage op. Voor de CSP heeft het script-src https://cdn.reactive.chat en connect-src https://ws.reactive.chat nodig (Beveiliging en CSP).

Overdracht naar de chat

Als de bezoeker een vervolgvraag in het blok stelt, gaat het gesprek — afhankelijk van de instelling Vervolgvraag — verder in de chatwidget (ReactiveChat('continueConversation', id, text) of ReactiveChat('startConversation', text)) of wordt de vraag in hetzelfde blok beantwoord. Zonder chatwidget op de pagina blijft de vervolgvraag altijd in het blok.

Vormgeving

Het blok (.rc-ai) heeft eigen CSS en is beschermd tegen resets van uw pagina. U kunt het via variabelen met de laagste specificiteit aanpassen:

.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;
}

Afzonderlijke onderdelen wijzigt u met .rc-ai .rc-ai__teil { … } in het veld Eigen CSS in uw account, bijvoorbeeld .rc-ai .rc-ai__hinweis { display: none; }. De beschermlaag beschermt niet tegen regels van uw pagina met #id of !important.

HTTP-interface

Voor door de server gerenderde zoekpagina’s of eigen interfaces is er een openbare interface zonder authenticatie en zonder cookies op https://ws.reactive.chat/api/suche/SITE_KEY.

Gemeenschappelijk voor alle endpoints:

GET /api/suche/SITE_KEY?locale=de — configuratie, CSS en leeg sjabloon van het blok (Cache-Control: public, max-age=60):

POST /api/suche/SITE_KEY — kant-en-klare HTML van het blok voor een vraag, body maximaal 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"}'

POST /api/suche/SITE_KEY/antwort — het antwoord zelf als Server-Sent Events-stream, body maximaal 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":"…"}]}

Antwoord 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…"}}

Na fertig of fehler eindigt de stream. Fouten vóór het starten komen ook als stream met precies één fehler (HTTP 404, 429, 400, 413, 503 of 200). Zonder tekst na 45 seconden of zonder einde na 90 seconden volgt fehler zeit. Als u de verbinding sluit, wordt het antwoord afgebroken. Een proxy onderweg moet de stream zonder buffering doorgeven.

// 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]));
  }
}

Volgende: Privacyintegratie

Senest opdateret: