chatwoot-develop/progresso/2026-01-11_fix_401_custom_tool_headers.md
2026-01-12 19:04:15 -03:00

57 lines
2.4 KiB
Markdown

# Fix: Erro 401 em Custom Tools (Headers Customizados)
**Data:** 11/01/2026
**Autor:** Antigravity
**Contexto:**
A ferramenta `custom_status_suites` (usada pelo sub-agente `jamile_disponibilidade_imediata`) estava retornando erro **401 Unauthorized**.
Motivo: A API externa exigia headers específicos (`PLUG-PLAY-ID`, `PLUG-PLAY-TOKEN`), mas a interface do Chatwoot só permitia configurar autenticação do tipo Bearer, Basic ou uma única API Key. Não havia suporte para múltiplos headers arbitrários.
---
## 🚀 Solução
Implementamos uma nova seção no formulário de Custom Tools para permitir a adição de **Headers Personalizados** (Key-Value) ilimitados. Esses headers são anexados a todas as requisições da ferramenta.
### 1. Alterações no Frontend (Vue.js)
- **Novo Componente:** `app/javascript/dashboard/components-next/captain/pageComponents/customTool/HeaderRow.vue`
- Gerencia uma linha de input (Chave e Valor) com validação.
- **Update no Formulário:** `app/javascript/dashboard/components-next/captain/pageComponents/customTool/CustomToolForm.vue`
- Adicionada lista de `customHeaders`.
- Lógica para converter o array visual em Hash `auth_config['headers']` no submit.
- Lógica para popular o formulário ao editar uma tool existente.
- **Traduções:** Adicionadas chaves `HEADERS`, `ADD_HEADER`, etc., em `en/integrations.json` e `pt_BR/integrations.json`.
### 2. Backend (Ruby on Rails)
- O backend (`Enterprise::Concerns::Toolable#build_auth_headers`) já estava preparado para ler `auth_config['headers']`. Nenhuma alteração lógica foi necessária, apenas habilitar a entrada de dados via UI.
### 3. Script de Correção (Produção)
Para corrigir ferramentas em produção sem precisar redeployar o frontend imediatamente, ou para ajustes em massa:
**Script:** `scripts/debug_status_suites.rb`
```bash
# Como rodar no terminal do servidor/container
bundle exec rails runner scripts/debug_status_suites.rb
```
O script:
1. Busca a ferramenta por nome/url ("Status Suites").
2. Verifica se `PLUG-PLAY-ID` e `PLUG-PLAY-TOKEN` estão faltando.
3. Solicita os valores interativamente.
4. Salva e executa um teste de conexão.
---
## ✅ Como Validar
1. Acessar **Captain > Ferramentas**.
2. Editar a ferramenta desejada.
3. Na seção **Headers Personalizados**, adicionar as chaves necessárias.
4. Salvar.
5. Clicar no botão **Testar** (ícone de play).
6. O resultado deve ser **200 OK** com o JSON de resposta esperado.