Problema: Não Consigo Estabelecer Conexão HTTP entre o N8N e o Chatwoot
Descrição
Estou tentando integrar o Chatwoot (self-hosted) ao N8N para realizar chamadas HTTP e consumir dados da API do Chatwoot. No entanto, as requisições feitas pelo N8N resultam constantemente em erro de autenticação, mesmo com o token correto configurado.
Detalhes do Erro
Quando realizo uma chamada para a API do Chatwoot, como a seguinte:
bash
Copiar código
curl -X GET "https://chatwoot.parizarteemdanca.com.br/api/v1/accounts/2/contacts" \
-H "Authorization: Bearer <SEU_TOKEN_AQUI>" \
-H "Content-Type: application/json"
Ou configuro o nó HTTP Request no N8N com os mesmos headers e endpoint, a resposta é sempre:
json
Copiar código
{
"errorMessage": "Authorization failed - please check your credentials",
"errorDescription": "Você precisa entrar ou se cadastrar antes de continuar.",
"errorDetails": {
"rawErrorMessage": [
"401 - \"{\\\"errors\\\":[\\\"Você precisa entrar ou se cadastrar antes de continuar.\\\"]}\""
],
"httpCode": "401"
}
}
O Que Descobrimos
Pesquisando mais sobre o problema, descobrimos que o Chatwoot utiliza headers com underscores (ex.: Authorization
) que, em alguns casos, podem ser filtrados ou ignorados pelo proxy reverso. Nesse caso, o Traefik, que utilizamos como proxy reverso, parece ser um dos pontos potenciais de falha.
Tentamos a seguinte configuração no Traefik para habilitar o suporte a underscores:
- Adicionamos um middleware específico para permitir headers com underscores:
yaml
Copiar código
- traefik.http.middlewares.chatwoot-headers.headers.customrequestheaders.underscores_in_headers=on
- Associamos o middleware ao router do Chatwoot:
yaml
Copiar código
- traefik.http.routers.chatwoot_app.middlewares=sslheader,chatwoot-headers
Mesmo com essa configuração, o problema persiste, e as chamadas continuam retornando “401 Unauthorized”.
Ambiente
- N8N Version: 1.65.2 (Self-Hosted)
- Database: SQLite (padrão)
- EXECUTIONS_PROCESS Setting: own (padrão)
- Running n8n via: Docker
- Operating System: Linux
- Chatwoot: v3.15.0
- Traefik: v2.11
- Docker: Swarm Mode
- Endpoint testado:
/api/v1/accounts/2/contacts
Abordagens Tentadas
- Token de Autenticação: O token foi gerado corretamente via console Rails no Chatwoot e testado diretamente no contêiner da aplicação. Funciona para alguns endpoints, mas falha para outros.
- Configuração de Middleware no Traefik: Adicionamos suporte a underscores em headers e associamos isso ao router do Chatwoot.
- Testes Locais: Fizemos chamadas diretamente no contêiner do Chatwoot, e o problema persiste.
- Verificação de Logs: Logs do Chatwoot mostram que o header
Authorization
ou não está sendo reconhecido ou está sendo ignorado.
Perguntas
- Existe alguma configuração adicional no Traefik que possa resolver esse problema de headers com underscores?
- É possível que o problema seja na configuração do Chatwoot, e não no Traefik?
- Alguém já enfrentou esse mesmo problema integrando o Chatwoot com o N8N ou outro serviço de automação? Como foi resolvido?