Como Configurar Ferramentas Personalizadas para o Captain

Pranav

Pranav

Última atualização em Jun 3, 2026

Custom Tools permitem que o Captain chame suas APIs externas durante conversas — assim ele pode verificar o status do sistema, consultar horários ou buscar dados dos seus próprios serviços sem encaminhar para um agente humano.

Quando um cliente faz uma pergunta, o Captain extrai os valores relevantes da conversa, insere-os na requisição à sua API e usa a resposta para formar a sua resposta.

Custom Tools está disponível no plano Business e superiores.

Criando uma ferramenta

Navegue até Captain -> Ferramentas e clique em Criar uma nova ferramenta.


Preencha os seguintes campos:

Nome da Ferramenta — Um nome curto como "Status do Sistema" ou "Consulta de Horários" (máx. 55 caracteres).

Descrição — Indique ao Captain quando usar esta ferramenta. Este é o campo mais importante. Escreva como se estivesse instruindo um agente de suporte: "Verifica o status atual do sistema, incluindo quaisquer incidentes em andamento ou manutenção." Descrições vagas como "API de Status" farão o Captain perder oportunidades de usar a ferramenta.

Método — Escolha GET (para buscar dados) ou POST (para enviar dados).

URL do Endpoint — A URL da sua API. Use {{ parameter_name }} para inserir valores extraídos da conversa:

https://api.yourcompany.com/v1/showtimes?q={{ query }}

A URL deve usar HTTPS, ser um hostname (não um endereço IP), e não pode apontar para localhost ou redes privadas.

Autenticação — Escolha como sua API autentica as requisições:


| Tipo | O que você fornece |
|------|-------------------|
| Nenhum | Sem autenticação |
| Bearer Token | Uma string de token |
| Basic Auth | Nome de usuário e senha |
| API Key | Um nome de cabeçalho personalizado e valor |

As credenciais de autenticação são visíveis apenas para administradores da conta.



Parâmetros — Defina o que o Captain deve extrair da mensagem do cliente. Cada parâmetro precisa de um nome, tipo e descrição. Por exemplo: query (String) — "O título do filme ou data que o cliente está perguntando."

Template de Requisição (apenas POST) — Um template de corpo JSON usando sintaxe Liquid:


{ "query": "{{ query }}", "source": "captain" }

Template de Resposta — Controla o que o Captain vê da resposta da sua API. Se ficar em branco, o Captain recebe o JSON bruto. Use Liquid para extrair campos relevantes:


Status do sistema: {{ response.status }}. {{ response.message }}

Use response para acessar o corpo JSON analisado. Templates de resposta ajudam o Captain a focar apenas nos dados relevantes e evitar campos internos como IDs de banco de dados ou informações de debug.

Testando sua ferramenta

Clique em Testar conexão antes de salvar para verificar se seu endpoint está acessível. O teste mostra o código de status HTTP.

Um resultado verde (HTTP 200–299) significa que a conexão e a autenticação estão funcionando. Note que o teste envia a URL sem preencher os valores de parâmetro, então ele apenas verifica se seu endpoint está acessível e se suas credenciais foram aceitas.

Se o teste falhar, verifique o seguinte:

  • 401 Não autorizado — Suas credenciais de autenticação estão incorretas. Verifique o bearer token, chave API ou nome de usuário/senha.

  • 403 Proibido — Sua API está rejeitando a requisição. Se você exigir verificação de identidade, observe que requisições de teste não incluem cabeçalhos de contato.

  • 404 Não encontrado — A URL do endpoint está errada. Verifique o caminho e confirme se sua API está em execução.

  • Timeout — Sua API demorou muito para responder. As ferramentas customizadas têm um timeout de 30 segundos; certifique-se de que seu endpoint responda dentro desse prazo.

Contexto enviado em cada chamada de ferramenta

Quando o Captain chama sua API, ele inclui cabeçalhos de metadados para que seu backend saiba o contexto:

| Cabeçalho | Descrição |

|-----------|------------|

| X-Chatwoot-Account-Id | O ID da sua conta |

| X-Chatwoot-Conversation-Id | O ID da conversa |

| X-Chatwoot-Contact-Email | O e-mail do cliente (se disponível) |

| X-Chatwoot-Contact-Inbox-Verified | Se a identidade do cliente está verificada por HMAC |


Cabeçalhos adicionais incluem X-Chatwoot-Assistant-Id, X-Chatwoot-Tool-Slug, X-Chatwoot-Contact-Id, X-Chatwoot-Contact-Phone e X-Chatwoot-Conversation-Display-Id.

Você pode usar esses cabeçalhos para buscar o cliente em seu próprio sistema, registrar quais conversas acionaram chamadas à API e verificar a autenticidade da requisição.

Segurança

Proteções nativas:

  • Todos os endpoints devem usar HTTPS

  • Requisições para faixas de IP privadas, localhost e domínios .local são bloqueadas

  • Redirecionamentos HTTP não são seguidos

  • Respostas são limitadas a 1 MB

  • Credenciais de autenticação são visíveis apenas para administradores

Verificação de identidade: Se sua ferramenta retornar dados específicos do cliente (pedidos, faturamento, detalhes de conta), sua API deve verificar o cabeçalho X-Chatwoot-Contact-Inbox-Verified. Sem verificação HMAC ativada no seu inbox, um visitante pode definir qualquer endereço de e-mail no widget de chat. Só retorne dados sensíveis quando este cabeçalho for true. Para ferramentas que retornam dados públicos (horários, status do sistema), essa checagem não é necessária.

Prompt injection: Se sua API retornar conteúdo gerado por usuários (avaliações, postagens de fórum), textos maliciosos podem influenciar o comportamento do Captain. Use templates de resposta para extrair apenas campos estruturados, e sanitize conteúdos em sua API.

Limites

| Limite | Valor |

|--------|-------|

| Máximo de ferramentas por conta | 15 |

| Recomendado | 10 ou menos (um aviso aparece acima de 10) |

| Tamanho do nome da ferramenta | 55 caracteres |

| Tamanho da resposta | 1 MB máx. |

| Timeout da requisição | 30 segundos |

Quando usar ferramentas customizadas

Ferramentas customizadas são mais indicadas para consultas estruturadas com entradas previsíveis — verificar status do sistema, buscar horários ou consultar registros por ID. Se você já possui uma integração dedicada do Chatwoot para seu caso de uso (ex.: Shopify para e-commerce), use-a em vez disso — integrações dedicadas lidam com buscas, correspondência difusa e sincronização de dados de forma mais confiável do que uma única chamada de API.

Exemplos

Verificação de Status do Sistema

Uma ferramenta simples sem parâmetros — o Captain a aciona quando um cliente pergunta se algo está fora do ar.

| Campo | Valor |

|-------|-------|

| Nome da Ferramenta | Status do Sistema |

| Descrição | Verifica o status operacional atual do sistema, incluindo qualquer incidente em andamento ou manutenção programada. Use quando um cliente relatar problemas ou perguntar se o sistema está fora do ar. |

| Método | GET |

| URL do Endpoint | https://status.yourcompany.com/api/v1/status |

| Autenticação | Nenhuma |

| Parâmetros | (nenhum) |

| Template de Resposta | Status do sistema: {{ response.status }}. {{ response.message }} |


Consulta de Sessões / Horários

Para empresas que têm horários, tabelas ou listas de eventos — os clientes perguntam o que está disponível e o Captain busca a agenda atual.

| Campo | Valor |

|-------|-------|

| Nome da Ferramenta | Consulta de Horários |

| Descrição | Consulta horários de filmes e exibições em cartaz. Use quando um cliente perguntar quais filmes estão passando ou quando um filme específico será exibido. |

| Método | GET |

| URL do Endpoint | https://api.yourcinema.com/v1/showtimes?q={{ query }} |

| Autenticação | Bearer Token |

| Parâmetros | query (String, obrigatório) — "O título do filme ou data da sessão que o cliente está perguntando" |

| Template de Resposta | {% for show in response.showtimes %}{{ show.title }} — {{ show.date }} às {{ show.time }}{% endfor %} |


Ferramentas customizadas funcionam melhor quando as entradas são diretas e a resposta da API é previsível — verificações de status, consultas e outras buscas estruturadas são opções ideais.