Mensagens Não Enviadas — Solução OpenClaw

Como resolver quando as mensagens não estão sendo enviadas pelo bot. Fila, rate limit e debug.

Mensagens Não Enviadas

Descrição do Problema

O bot não consegue enviar mensagens ou elas ficam presas na fila:

Message sending failed
Rate limit exceeded
Queue is full
Unable to deliver message
Possíveis Causas
  1. Rate limit - Enviando mensagens muito rápido
  2. Número bloqueado - Destinatário bloqueou o bot
  3. Conexão perdida - Desconectado do serviço
  4. Fila cheia - Muitas mensagens aguardando
  5. Formato inválido - Mensagem com problemas
Soluções1. Verificar Status da Conexão
# Ver status do gateway
openclaw gateway status

# Reconectar se necessário
openclaw gateway reconnect
2. Verificar Fila de Mensagens
# Ver mensagens pendentes
openclaw queue status

# Limpar fila se necessário
openclaw queue clear

# Reprocessar mensagens falhas
openclaw queue retry
3. Respeitar Rate Limits
# Configurar rate limiting adequado
rate_limit:
  messages_per_second: 1
  messages_per_minute: 30
  delay_between_messages: 1000  # 1 segundo
// Implementar delay entre mensagens
async function sendWithDelay(messages) {
  for (const msg of messages) {
    await sendMessage(msg);
    await sleep(1000);  // 1 segundo entre mensagens
  }
}
4. Verificar Logs de Erro
# Ver erros de envio
openclaw logs | grep -i "send\|deliver\|failed"

# Ver detalhes de mensagens específicas
openclaw logs | grep "message_id"
5. Verificar Formato da Mensagem
// Mensagem válida
const message = {
  to: "5511999999999@s.whatsapp.net",
  text: "Olá, esta é uma mensagem de teste!"
};

// Verificar se o número está correto
// Formato: código país + DDD + número + @s.whatsapp.net
6. Verificar Se Foi Bloqueado
# Verificar status do número
openclaw contact status 5511999999999

# Se bloqueado, não há muito o que fazer
# O destinatário precisa desbloquear
7. Implementar Retry
async function sendWithRetry(message, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      await sendMessage(message);
      return true;
    } catch (error) {
      console.log(`Tentativa ${i + 1} falhou:`, error.message);
      await sleep(1000 * (i + 1));  // Backoff
    }
  }
  return false;
}
Diagnóstico
# Script de diagnóstico
#!/bin/bash
echo "=== Diagnóstico de Envio de Mensagens ==="

echo -e "\n1. Status do Gateway:"
openclaw gateway status

echo -e "\n2. Fila de Mensagens:"
openclaw queue status

echo -e "\n3. Últimos Erros:"
openclaw logs --tail 20 | grep -i "error\|failed"

echo -e "\n4. Conexão:"
openclaw connection status
Problemas RelacionadosPrevenção
  • Respeite os rate limits de cada plataforma
  • Implemente filas com retry automático
  • Monitore taxa de sucesso de envio
  • Trate erros graciosamente