Webhook Não Funciona
Webhook Não Funciona
Descrição do Problema
Webhooks configurados não estão funcionando corretamente:
Webhook delivery failed
Connection refused
SSL certificate problem
Timeout waiting for response
Possíveis Causas
- URL inacessível - Servidor não está online ou URL errada
- Firewall bloqueando - Porta não está aberta
- SSL inválido - Certificado expirado ou self-signed
- Timeout - Resposta muito lenta
- Resposta inválida - Não retorna 200 OK
Soluções
1. Testar URL do Webhook
# Testar se a URL está acessível
curl -X POST https://seu-servidor.com/webhook \
-H "Content-Type: application/json" \
-d '{"test": true}'
# Ver resposta completa
curl -v -X POST https://seu-servidor.com/webhook \
-H "Content-Type: application/json" \
-d '{"test": true}'
2. Verificar Firewall
# Verificar se a porta está aberta
sudo ufw status
# Liberar porta do webhook
sudo ufw allow 443/tcp
sudo ufw allow 3000/tcp
# Verificar com nmap
nmap -p 443 seu-servidor.com
3. Verificar SSL
# Testar certificado SSL
openssl s_client -connect seu-servidor.com:443
# Ver detalhes do certificado
echo | openssl s_client -servername seu-servidor.com \
-connect seu-servidor.com:443 2>/dev/null | \
openssl x509 -noout -dates
4. Usar ngrok para Desenvolvimento
# Instalar ngrok
npm install -g ngrok
# Expor porta local
ngrok http 3000
# Use a URL https fornecida como webhook
5. Configurar Webhook Corretamente
# No arquivo de configuração
webhooks:
enabled: true
endpoints:
- url: "https://seu-servidor.com/webhook"
events: ["message", "status"]
timeout: 30000
retry: 3
6. Verificar Logs do Webhook
# Ver tentativas de entrega
clawdbot logs | grep -i webhook
# Ver erros específicos
clawdbot logs | grep -i "delivery failed\|timeout\|refused"
7. Implementar Endpoint Corretamente
// O endpoint deve retornar 200 rapidamente
app.post('/webhook', async (req, res) => {
// Responder imediatamente
res.status(200).send('OK');
// Processar em background
processWebhook(req.body).catch(console.error);
});
Problemas Relacionados
Prevenção
- Use HTTPS com certificados válidos (Let’s Encrypt é gratuito)
- Configure timeouts adequados
- Implemente retry com backoff exponencial
- Monitore entregas de webhook