Webhook Não Funciona — Solução OpenClaw

Como resolver problemas com webhooks que não estão recebendo ou enviando dados. Debug de endpoints.

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
  1. URL inacessível - Servidor não está online ou URL errada
  2. Firewall bloqueando - Porta não está aberta
  3. SSL inválido - Certificado expirado ou self-signed
  4. Timeout - Resposta muito lenta
  5. Resposta inválida - Não retorna 200 OK
Soluções1. 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
openclaw logs | grep -i webhook

# Ver erros específicos
openclaw 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 RelacionadosPrevenção
  • Use HTTPS com certificados válidos (Let’s Encrypt é gratuito)
  • Configure timeouts adequados
  • Implemente retry com backoff exponencial
  • Monitore entregas de webhook