Passer au contenu principal
SDK de chatbot React

Créez votre propre interface de chatbot React

Connectez vos composants React à ChattyBox avec @openstaticfish/chattybox. Votre équipe gère le rendu et l’état, tandis que l’infrastructure gérée prend en charge les réponses fondées sur les sources, les citations et le regroupement des conversations.

Analyse les pages de documents publiéesRéponses citées par la sourceS'intègre avec un seul scriptAucune migration de documents requiseAucune carte de crédit requiseVotre contenu reste à vous
Demander à ChattyBox
x
Par où commencer si j’ai besoin d’une réponse fiable depuis ce site ?
Commencez par ajouter l’URL publique de votre site à ChattyBox. Il récupère le contenu indexé pour guider les réponses et peut afficher des liens vers les pages sources à vérifier. Testez les réponses et les réponses de secours avant le lancement.
iSources citées3^
Intégration React Guide
chattybox.ai
Statistiques
chattybox.ai
Accueil
chattybox.ai
Posez une question...
Propulsé par ChattyBox
Conçu pour Équipes produit React

Lancez un chatbot avec citations de sources sans reconstruire votre pile de site

ChattyBox explore votre site existant, votre documentation, votre centre d'aide, votre CMS ou votre base de connaissances, puis intègre un chatbot qui répond à partir de votre propre contenu publié plutôt qu'à partir de la mémoire générique d'un modèle.

Créez des composants personnalisés pour les messages, les citations, le chargement, les réponses de repli et les erreurs.
Conservez les identifiants de conversation dans un état React propre à chaque visiteur pour les questions de suivi.
Utilisez des clés API publiques de navigateur, avec des restrictions d’origine exactes facultatives pour renforcer la protection.
Évitez de maintenir votre propre robot d'exploration, base vectorielle, service de recherche ou pipeline de génération.
1Étape du workflow

Installez le SDK JavaScript dans votre application React.

2Étape du workflow

Créez un seul client Chattybox en dehors du chemin de rendu du composant.

3Étape du workflow

Envoyez les messages depuis un gestionnaire d'événement et mettez à jour l'état de l'interface avec la réponse.

4Étape du workflow

Affichez les liens vers les sources et gérez les erreurs structurées ChattyboxError.

Un lancement en trois étapes

Collez votre URL Intégration React, testez les réponses citées, puis installez le widget.

Créer un chatbot React
Intégration React

Intégrez un chat fondé sur les sources à votre système de composants

Utilisez les conventions d'état, d'accessibilité, de style et de design system déjà suivies par votre application au lieu de vous adapter à l'enveloppe d'un widget figé.

Chemin de décision

Utilisez ces points de contrôle pour décider si ChattyBox doit s'asseoir à côté de votre plate-forme de documents, remplacer un assistant distinct ou rester isolé pour les tests.

01

Maîtrise des composants

Composez les messages, cartes de citation, suggestions, états vides et commandes avec vos propres composants React.

02

Un état à votre façon

Utilisez un état local ou votre couche d'état existante tout en isolant les conversations entre les visiteurs.

03

Réponses accessibles

Gérez le focus, les régions live, le clavier et l'annonce des erreurs au sein de votre application.

04

Backend géré

Gardez une intégration légère dans le navigateur pendant que ChattyBox gère l'indexation du contenu, la recherche et les réponses avec citations.

Parcours d’installation

Connecter un composant React à ChattyBox

Créez le client une seule fois, appelez-le depuis un gestionnaire d'événement et conservez l'identifiant de conversation de chaque visiteur dans l'état du composant ou de l'application.

  1. 1Ajoutez @openstaticfish/chattybox à l'application React.
  2. 2Initialisez le client avec les variables d'environnement publiques de Vite ou de votre framework.
  3. 3Stockez le message, les sources et l'identifiant de conversation renvoyés dans un état propre au visiteur.
Créer un chatbot React
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.
Questions fréquentes

Questions fréquentes

1

Puis-je créer un chatbot React personnalisé avec ChattyBox ?

Oui. Le SDK JavaScript renvoie des messages, des identifiants de conversation et des URL de sources afin que votre application React puisse afficher une interface entièrement personnalisée.

2

ChattyBox fournit-il un composant React ?

Aucun composant React ni hook n’est exporté. Utilisez les méthodes sans interface avec vos composants, ou appelez mountWidget() depuis une mise en page persistante côté navigateur pour charger le widget flottant maintenu.

3

Où dois-je créer le client Chattybox dans React ?

Créez-le une fois en dehors du chemin de rendu du composant ou dans un provider applicatif stable, plutôt que de construire un nouveau client à chaque rendu.

4

Puis-je utiliser le widget hébergé dans React à la place ?

Oui. Suivez le guide d'installation du widget hébergé si vous préférez une interface maintenue à un affichage React personnalisé.

Commencer gratuitement

Aucune carte de crédit requise. Votre contenu n’est pas utilisé pour l’entraînement de modèles.

Créer un chatbot gratuit

Niveau Free. Aucune carte requise.

Nous utilisons des outils facultatifs d’analyse et de gestion des balises pour comprendre l’utilisation du site. Choisissez d’autoriser ou non Ahrefs Web Analytics, PostHog et Google Tag Manager. La désactivation des outils d’analyse recharge cette page afin que la modification soit appliquée proprement. Les fonctionnalités essentielles du site et la surveillance des erreurs ne sont pas régies par ce choix. Lire notre politique de confidentialité.