OpenClaw Gateway

Arquitectura de Bots NovaTech SaaS

Gateway self-hosted multi-canal con enrutamiento inteligente, cron jobs y webhooks de CI/CD. WhatsApp + Telegram + Discord unificados en un solo proceso.

🖥️ VPS Ubuntu 22.04 · puerto 18789
📦 openclaw@latest · Node.js 22
🤖 2 agentes · 3 canales · Apache-2.0
Estado: ACTIVO
1 Diagrama de Arquitectura
Canales de Entrada
💬 WhatsApp Business
✈️ Telegram (grupo interno)
🎮 Discord (comunidad dev)
🔗 Webhook GitHub Actions
OpenClaw Gateway
⚙️
OpenClaw
localhost:18789
Enrutamiento
Cron Jobs
Webhooks
Sub-agentes
Agentes IA
🛟 Agente "Soporte"
Atiende clientes en WhatsApp y Discord. FAQ, tickets, incidencias.
claude-sonnet-4
⚡ Agente "Ops"
Gestión interna Telegram: standup, alertas CI/CD, resúmenes.
claude-sonnet-4
2 Configuración Principal
📄 ~/.openclaw/openclaw.json JSON5
// Sección: agentes y defaults
{
  agents: {
    list: [
      {
        id: "soporte",
        name: "Soporte NovaTech",
        workspace: "~/agents/soporte",
        default: true
      },
      {
        id: "ops",
        name: "Ops NovaTech",
        workspace: "~/agents/ops"
      }
    ],
    defaults: {
      model: {
        provider: "anthropic",
        name: "claude-sonnet-4-20250514"
      },
      thinking: "off",
      heartbeat: {
        every: "30m",
        activeHours: {
          start: "08:00",
          end: "21:00",
          timezone: "Europe/Madrid"
        }
      }
    }
  }
}
📄 ~/.openclaw/openclaw.json JSON5
// Sección: canales
{
  channels: {
    whatsapp: {
      enabled: true,
      allowFrom: [
        "+34600000001", // CEO
        "+34600000002"  // CTO
      ],
      groups: {
        "*": { requireMention: true }
      }
    },
    telegram: {
      enabled: true,
      token: "7890123456:AAF...",
      dmPolicy: "pairing",
      groupPolicy: "allowlist",
      allowedGroups: {
        "-100987654321": {}
      }
    },
    discord: {
      enabled: true,
      token: "MTIz...",
      groupPolicy: "allowlist",
      guilds: {
        "1234567890123456": {
          requireMention: true
        }
      }
    }
  }
}
3 Tabla de Enrutamiento (Bindings)
# Canal Tipo de peer Destino Agente asignado Política
B-01 💬 WhatsApp DM (cliente) allowFrom list 🛟 soporte allowlist + open DM
B-02 💬 WhatsApp Grupo 120363403215116621@g.us 🛟 soporte requireMention: true
B-03 ✈️ Telegram Grupo interno -100987654321 ⚡ ops allowlist
B-04 🎮 Discord Guild completo 1234567890123456 🛟 soporte requireMention: true
B-05 🔗 Webhook HTTP POST /hooks/ci-notify ⚡ ops Bearer token
B-06 ⏰ Cron Scheduled job 0 9 * * 1-5 ⚡ ops isolated session
4 Cron Jobs Programados
☀️ Standup Matutino
0 9 * * 1-5 (Europe/Madrid)
⚡ ops

Cada día laborable a las 09:00 resume PRs abiertos, commits del día anterior y blockers. Entrega al grupo de Telegram.

openclaw cron add \ --name "Standup matutino" \ --cron "0 9 * * 1-5" \ --tz "Europe/Madrid" \ --session isolated \ --message "Resume los commits y PRs de ayer, blockers activos y tareas del día" \ --announce \ --channel telegram \ --to "group:-100987654321"
📊 Resumen Tickets Semanal
0 18 * * 5 (Europe/Madrid)
🛟 soporte

Cada viernes a las 18:00 genera un resumen de tickets atendidos, tiempo de respuesta promedio y trending issues de la semana.

openclaw cron add \ --name "Resumen semanal soporte" \ --cron "0 18 * * 5" \ --tz "Europe/Madrid" \ --session isolated \ --message "Genera resumen de tickets de soporte de esta semana: volumen, tiempos, incidencias repetidas" \ --announce \ --channel telegram \ --to "group:-100987654321"
5 Webhooks de CI/CD
POST /hooks/ci-notify

Notificación de GitHub Actions cuando un deploy finaliza. El agente Ops analiza el resultado y alerta al equipo si hay fallos.

{
  "message": "Deploy novatech-app@v2.4.1
completado en production.
Status: success. 3 tests pasados."
}
YAML .github/workflows/notify.yml

Paso en GitHub Actions que dispara el webhook tras cada deploy a producción.

- name: Notify via OpenClaw
  run: |
    curl -X POST \
      "${{ secrets.OPENCLAW_URL }}/hooks/ci-notify" \
      -H "Authorization: Bearer ${{ secrets.OPENCLAW_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d "{\"message\":\"Deploy ${{ github.repository }}@${{ github.sha }} — ${{ job.status }}\"}"
6 Secuencia de Puesta en Marcha
ubuntu@novatech-vps:~$ zsh
npm install -g openclaw@latest + openclaw@1.4.2 added 312 packages in 8.3s
openclaw onboard --install-daemon ? Scan QR with your WhatsApp number (+34 XXX XXX XXX) ✓ WhatsApp paired successfully ✓ Config created at ~/.openclaw/openclaw.json ✓ Daemon installed (systemd)
openclaw channels status --probe ✓ whatsapp connected (paired: +34600000000) ✓ telegram connected (bot: @NovaTechOpsBot) ✓ discord connected (guild: NovaTech Community)
openclaw agents create --id soporte --name "Soporte NovaTech" ✓ Agent 'soporte' created at ~/agents/soporte
openclaw agents create --id ops --name "Ops NovaTech" ✓ Agent 'ops' created at ~/agents/ops
openclaw gateway --port 18789 ✓ Gateway started on http://127.0.0.1:18789/ ✓ Control UI available at http://127.0.0.1:18789/ Routing: 6 bindings active Cron: 2 jobs scheduled Webhooks: /hooks enabled (token auth)
openclaw status --deep ✓ Gateway process: running (PID 12847, uptime 00:02:41) ✓ Agent 'soporte': healthy, 0 active sessions ✓ Agent 'ops': healthy, 0 active sessions ✓ Cron engine: running, next run in 06:47:23 ✓ Webhook server: listening on /hooks
7 Dashboard de Estado (Semana 1)
247
Mensajes procesados
14
Cron jobs ejecutados
8
Webhooks CI recibidos
99.8%
Uptime del gateway
Canal Mensajes Agente Tiempo medio resp. Estado
💬 WhatsApp 134 🛟 soporte 1.2s ● Activo
🎮 Discord 89 🛟 soporte 0.9s ● Activo
✈️ Telegram 24 ⚡ ops 1.8s ● Activo
🔗 Webhook 8 events ⚡ ops 2.1s ● Activo
8 Archivos de Workspace del Agente Soporte
IDENTITY.md
Define la personalidad y nombre del agente. Se incluye en cada conversación.
Eres el asistente de soporte de NovaTech. Responde siempre en español, de forma clara y empática. Si no sabes algo, escala al equipo humano con #ticket.
HEARTBEAT.md
Tareas periódicas que el agente ejecuta en cada ciclo de heartbeat (cada 30 min).
- Revisar si hay tickets sin respuesta > 2h - Comprobar status de uptime API NovaTech - Actualizar SOUL.md con incidencias nuevas - Escalar urgencias al canal Telegram ops
TOOLS.md
Herramientas habilitadas para este agente. Limita su superficie de acción.
Allowed tools: - web_search (read-only) - read_file (~/agents/soporte/kb/*) - create_ticket (POST /api/tickets) Blocked: shell_exec, write_file