Pular para o conteúdo principal
SDK do React Chatbot

Construa o seu próprio IU do chatbot React

Conecte componentes React ao ChattyBox com @openstaticfish/chattybox. Sua equipe controla renderização e estado, enquanto a infraestrutura gerenciada cuida de respostas baseadas em fontes, citações e agrupamento de conversas.

Rastreia páginas de documentos publicadosRespostas citadas pela fonteIncorpora com um scriptNão é necessária migração de documentosNão é necessário cartão de créditoO seu conteúdo continua a ser seu
Pergunte ao ChattyBox
x
Por onde devo começar se preciso de uma resposta confiável deste site?
Comece adicionando a URL pública do site ao ChattyBox. Ele recupera conteúdo indexado para orientar respostas e pode mostrar links de páginas de origem para os visitantes conferirem. Teste respostas e fallbacks antes do lançamento.
iFontes3^
Reagir guia
chattybox.ai
Análises
chattybox.ai
Início
chattybox.ai
Faça uma pergunta...
Distribuído por ChattyBox
Construído para Equipes de produto React

Lance um chatbot com citações de fontes sem reconstruir sua stack do site

O ChattyBox rastreia seu site, documentação, central de ajuda, CMS ou base de conhecimento existentes e, em seguida, incorpora um chatbot que responde com base no seu próprio conteúdo publicado, em vez da memória genérica do modelo.

Crie componentes personalizados de mensagem, citação, carregamento, substituto e erro.
Mantenha os IDs de conversa no estado React no escopo do visitante para perguntas de acompanhamento.
Use chaves API públicas de navegador, com restrições opcionais de origem exata para proteção adicional.
Evite manter seu próprio rastreador, armazenamento de vetores, serviço de recuperação ou pipeline de geração.
1Etapa do fluxo de trabalho

Instale o JavaScript SDK em seu aplicativo React.

2Etapa do fluxo de trabalho

Crie um cliente Chattybox fora do caminho de renderização do componente.

3Etapa do fluxo de trabalho

Envie mensagens de um manipulador de eventos e atualize o estado da UI com a resposta.

4Etapa do fluxo de trabalho

Renderize links de origem e lide com falhas estruturadas do ChattyboxError.

Lançamento em três etapas

Cole seu URL Reagir, teste as respostas citadas e instale o widget.

Construa um chatbot React
Integração de reação

Encaixe o bate-papo fundamentado em seu sistema de componentes existente

Use os padrões de estado, acessibilidade, estilo e sistema de design que seu aplicativo já segue, em vez de se adaptar a um shell de widget fixo.

Caminho de decisão

Use esses pontos de verificação para decidir se ChattyBox deve ficar ao lado de sua plataforma de documentos, substituir um assistente separado ou permanecer isolado para testes.

01

Propriedade do componente

Componha mensagens, cartões de citação, prompts, estados vazios e controles a partir de seus próprios componentes React.

02

Declare em seus termos

Use o estado local ou a camada de estado existente enquanto mantém as conversas isoladas entre os visitantes.

03

Respostas acessíveis

Controle o foco, as regiões ativas, o comportamento do teclado e os anúncios de erros em seu aplicativo.

04

Back-end gerenciado

Mantenha a integração do navegador pequena enquanto o ChattyBox cuida da indexação, recuperação e respostas citadas de conteúdo.

Caminho de instalação

Conecte um componente React ao ChattyBox

Crie o cliente uma vez, chame-o de um manipulador de eventos e mantenha cada ID de conversa do visitante no estado do componente ou do aplicativo.

  1. 1Adicione @openstaticfish/chattybox ao aplicativo React.
  2. 2Inicialize o cliente com Vite ou variáveis ​​de ambiente públicas fornecidas pela estrutura.
  3. 3Armazene a mensagem retornada, as fontes e o ID da conversa no estado com escopo do visitante.
Construa um 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.
Perguntas frequentes

Perguntas comuns

1

Posso construir um chatbot React personalizado com ChattyBox?

Sim. O JavaScript SDK retorna mensagens, IDs de conversa e URLs de origem para que seu aplicativo React possa renderizar uma interface totalmente personalizada.

2

O ChattyBox fornece um componente React?

Não são exportados componentes nem hooks React. Use os métodos headless com seus componentes ou chame mountWidget() em um layout persistente do navegador para carregar o widget flutuante mantido.

3

Onde devo criar o cliente Chattybox no React?

Crie-o fora do caminho de renderização do componente ou em um provedor de aplicativo estável, em vez de construir um novo cliente para cada renderização.

4

Posso usar o widget hospedado no React?

Sim. Use o guia de instalação do widget hospedado quando desejar uma interface mantida em vez da renderização React personalizada.

Comece gratuitamente

Não é necessário cartão de crédito. O seu conteúdo não é usado para treinar modelos.

Crie chatbot grátis

Plano Free. Sem cartão.

Utilizamos ferramentas opcionais de análise e gestão de tags para compreender a utilização do site. Escolha se pretende permitir o Ahrefs Web Analytics, o PostHog e o Google Tag Manager. Ao desativar a análise, esta página será recarregada para que a alteração seja aplicada corretamente. A funcionalidade essencial do site e a monitorização de erros não são controladas por esta escolha. Leia a nossa política de privacidade.