Hoppa till huvudinnehållet
React-SDK för chattbotar

Bygg din egen Reager chatbot UI

Anslut React-komponenter till ChattyBox med @openstaticfish/chattybox. Ditt team styr rendering och tillstånd medan hanterad infrastruktur sköter källbaserade svar, källhänvisningar och gruppering av konversationer.

Genomsöker publicerade dokumentsidorKällangivna svarBäddar in med ett skriptIngen dokumentmigrering krävsInget kreditkort krävsDitt innehåll förblir ditt
Fråga ChattyBox
x
Var ska jag börja om jag behöver ett tillförlitligt svar från den här webbplatsen?
Börja med att lägga till din offentliga webbplats-URL i ChattyBox. Tjänsten hämtar indexerat innehåll som stöd för svar och kan visa källänkar som besökare kan granska. Testa svar och reservsvar före lansering.
iKällor3^
Reagera vägledning
chattybox.ai
Analys
chattybox.ai
Hem
chattybox.ai
Ställ en fråga...
Drivs av ChattyBox
Byggd för Reagera produktteam

Lansera en chatbot med källhänvisningar utan att bygga om webbplatsens stack

ChattyBox genomsöker din befintliga webbplats, dokumentation, hjälpcenter, CMS eller kunskapsbas och bäddar sedan in en chatbot som svarar utifrån ditt eget publicerade innehåll i stället för modellens generiska minne.

Skapa anpassade meddelande-, citerings-, laddnings-, reserv- och felkomponenter.
Behåll konversations-ID:n i React-läge med besökaromfattning för uppföljningsfrågor.
Använd offentliga API-nycklar för webbläsare med valfria exakta originbegränsningar för extra härdning.
Undvik att underhålla din egen sökrobot, vektorbutik, hämtningstjänst eller genereringspipeline.
1Arbetsflödessteg

Installera JavaScript SDK i din React-applikation.

2Arbetsflödessteg

Skapa en Chattybox-klient utanför komponentrenderingssökvägen.

3Arbetsflödessteg

Skicka meddelanden från en händelsehanterare och uppdatera UI-tillståndet med svaret.

4Arbetsflödessteg

Återge källlänkar och hantera strukturerade ChattyboxError-fel.

Lansering i tre steg

Klistra in din Reagera URL, testa citerade svar och installera sedan widgeten.

Bygg en React chatbot
Reagera integration

Anpassa jordad chatt i ditt befintliga komponentsystem

Använd tillstånd, tillgänglighet, stil och designsystem som din applikation redan följer istället för att anpassa till ett fast widgetskal.

Beslutsväg

Använd dessa kontrollpunkter för att bestämma om ChattyBox ska sitta bredvid din dokumentplattform, ersätta en separat assistent eller hålla sig isolerad för testning.

01

Komponentägande

Skriv meddelanden, citatkort, uppmaningar, tomma tillstånd och kontroller från dina egna React-komponenter.

02

Ange på dina villkor

Använd lokala tillstånd eller ditt befintliga tillståndslager samtidigt som konversationer isoleras mellan besökare.

03

Tillgängliga svar

Kontrollera fokus, liveregioner, tangentbordsbeteende och felmeddelanden i din applikation.

04

Hanterad backend

Håll webbläsarintegrationen liten medan ChattyBox hanterar innehållsindexering, hämtning och citerade svar.

Installationsväg

Anslut en React-komponent till ChattyBox

Skapa klienten en gång, anrop den från en händelsehanterare och håll varje besökskonversations-ID i komponent- eller applikationstillstånd.

  1. 1Lägg till @openstaticfish/chattybox till React-applikationen.
  2. 2Initiera klienten med Vite eller ramverksvariabler för offentlig miljö.
  3. 3Lagra det returnerade meddelandet, källorna och konversations-ID:t i besökaromfattning.
Bygg en React chatbot
Chat.tsx
tsx
import { useState, type FormEvent } from 'react';
import { Chattybox, ChattyboxError, type ChatResponse } from '@openstaticfish/chattybox';

// Vite browser example. Other frameworks use different public environment APIs.
const chattybox = new Chattybox({
  apiKey: import.meta.env.VITE_CHATTYBOX_API_KEY,
  baseUrl: import.meta.env.VITE_CHATTYBOX_API_URL,
});

export function Chat() {
  const [question, setQuestion] = useState('');
  const [answer, setAnswer] = useState<ChatResponse | null>(null);
  const [pending, setPending] = useState(false);
  const [error, setError] = useState('');

  async function ask(event: FormEvent<HTMLFormElement>) {
    event.preventDefault();
    const message = question.trim();
    if (pending || !message || message.length > 2000) return;
    setPending(true);
    setError('');
    try {
      setAnswer(await chattybox.sendMessage({
        message,
        // Groups stored messages; previous turns are not sent to the model.
        conversationId: answer?.conversationId,
      }));
      setQuestion('');
    } catch (failure) {
      setError(failure instanceof ChattyboxError
        ? failure.status + ': ' + failure.message
        : 'Chat could not be completed.');
    } finally {
      setPending(false);
    }
  }

  const sources = answer?.sources.filter((source) => {
    try { return ['https:', 'http:'].includes(new URL(source).protocol); }
    catch { return false; }
  }) ?? [];

  return (
    <section aria-label="Chat">
      <form onSubmit={ask}>
        <label>Question
          <input value={question} maxLength={2000} disabled={pending}
            onChange={(event) => setQuestion(event.target.value)} />
        </label>
        <button type="submit" disabled={pending || !question.trim()}>
          {pending ? 'Sending...' : 'Send'}
        </button>
      </form>
      {error && <p role="alert">{error}</p>}
      <div aria-live="polite" aria-busy={pending}>
        <p style={{ whiteSpace: 'pre-wrap' }}>{answer?.message}</p>
        {sources.length > 0 && <ul aria-label="Sources">
          {sources.map((source, index) => <li key={index}>
            <a href={source} target="_blank" rel="noopener noreferrer">{source}</a>
          </li>)}
        </ul>}
      </div>
    </section>
  );
}

// Render <Chat /> in your app. This shows the latest answer, not a saved transcript.
// No automatic retries: see the SDK retry-safety guide before adding retries.
Vanliga frågor

Vanliga frågor

1

Kan jag bygga en anpassad React-chatbot med ChattyBox?

Ja. JavaScript-SDK:n returnerar meddelanden, konversations-ID:n och källadresser så att din React-applikation kan återge ett helt anpassat gränssnitt.

2

Tillhandahåller ChattyBox en React-komponent?

Inga React-komponenter eller hooks exporteras. Använd headless-metoder med egna komponenter, eller anropa mountWidget() från en beständig webbläsarlayout för att ladda den underhållna flytande widgeten.

3

Var ska jag skapa Chattybox-klienten i React?

Skapa den en gång utanför komponentrenderingsvägen eller i en stabil applikationsleverantör istället för att bygga en ny klient för varje rendering.

4

Kan jag använda den värdbaserade widgeten i React istället?

Ja. Använd installationsguiden för den värdbaserade widgeten när du vill ha ett underhållet gränssnitt snarare än anpassad React-rendering.

Starta gratis

Inget kreditkort krävs. Ditt innehåll används inte för modellträning.

Skapa gratis chatbot

Free-nivå. Inget kort behövs.

Vi använder valfria analys- och tagghanteringsverktyg för att förstå hur webbplatsen används. Välj om du vill tillåta Ahrefs Web Analytics, PostHog och Google Tag Manager. Om du stänger av analysen laddas sidan om så att ändringen genomförs korrekt. Grundläggande webbplatsfunktioner och felövervakning styrs inte av detta val. Läs vår integritetspolicy.