Retour

14. Automatisation et tâches planifiées OpenClaw : Cron, Webhook et intégration Gmail

Cet article présente les capacités d'automatisation d'OpenClaw, incluant les tâches planifiées Cron, les déclencheurs Webhook, l'intégration Gmail Pub/Sub et bien plus, pour que votre assistant IA travaille de manière proactive plutôt que simplement réactive.

Pour OpenClaw v2026.2 | Cet article s’adresse aux utilisateurs souhaitant que leur assistant IA travaille de manière proactive plutôt que réactive.

TL;DR: Tâches planifiées Cron : "cron": [{"id": "daily", "schedule": "0 9 * * *", "message": "..."}]. Déclenchement Webhook : POST /webhook/your-path. Gmail Pub/Sub pour le traitement automatique des e-mails. Heartbeat pour les vérifications proactives. Exemples de configuration : briefing matinal 0 8 * * 1-5, notifications CI via webhook, filtres e-mail via Gmail Pub/Sub.

Vue d’ensemble de l’automatisation

Types d’automatisation

Type Mode de déclenchement Cas d’usage
Cron Déclenchement planifié Rapports quotidiens, vérifications régulières
Webhook Requête HTTP Intégration de systèmes externes
Gmail Pub/Sub Nouvel e-mail Automatisation des e-mails
Heartbeat Vérification périodique Rappels proactifs, suggestions

Schéma d’architecture

flowchart TB
    subgraph Triggers["Sources de déclenchement"]
        CRON[Cron planifié]
        WH[Webhook HTTP]
        GM[Gmail Pub/Sub]
        HB[Heartbeat]
    end
    
    subgraph Gateway["Gateway"]
        SCHED[Planificateur]
        ROUTE[Routeur]
        AGENT[Agent]
    end
    
    subgraph Actions["Actions"]
        MSG[Envoyer un message]
        EXEC[Exécuter une tâche]
        NOTIF[Envoyer une notification]
    end
    
    CRON --> SCHED
    WH --> ROUTE
    GM --> ROUTE
    HB --> SCHED
    
    SCHED --> AGENT
    ROUTE --> AGENT
    AGENT --> MSG
    AGENT --> EXEC
    AGENT --> NOTIF

Tâches planifiées Cron

Expressions Cron

┌───────────── minute (0 - 59)
│ ┌───────────── heure (0 - 23)
│ │ ┌───────────── jour du mois (1 - 31)
│ │ │ ┌───────────── mois (1 - 12)
│ │ │ │ ┌───────────── jour de la semaine (0 - 6, 0 = dimanche)
│ │ │ │ │
* * * * *

Expressions courantes

Expression Description
0 9 * * * Tous les jours à 9h00
0 18 * * 1-5 Jours ouvrables à 18h00
*/30 * * * * Toutes les 30 minutes
0 0 1 * * Le 1er de chaque mois à 0h00
0 9,18 * * * Tous les jours à 9h00 et 18h00
0 9 * * 1 Tous les lundis à 9h00

Configurer les tâches Cron

{
  "cron": [
    {
      "id": "daily-briefing",
      "schedule": "0 9 * * *",
      "session": "main",
      "message": "Donnez-moi le programme du jour et les tâches à faire",
      "enabled": true
    },
    {
      "id": "weekly-summary",
      "schedule": "0 18 * * 5",
      "session": "main",
      "message": "Générer le résumé hebdomadaire",
      "enabled": true
    },
    {
      "id": "health-check",
      "schedule": "*/15 * * * *",
      "session": "main",
      "message": "Vérifier l'état du système et signaler toute anomalie",
      "enabled": true
    }
  ]
}

Options de configuration Cron

Champ Type Description
id string Identifiant unique de la tâche
schedule string Expression Cron
session string Session cible
message string Message envoyé
enabled boolean Activé ou non
timezone string Fuseau horaire (par défaut : fuseau système)

Gérer les tâches Cron

# Lister toutes les tâches
openclaw cron list

# Exemple de sortie :
# ID               Schedule       Status    Last Run
# daily-briefing   0 9 * * *     enabled   2026-02-26 09:00
# weekly-summary   0 18 * * 5    enabled   2026-02-23 18:00
# health-check    */15 * * * *   enabled   2026-02-26 10:30

# Déclencher manuellement une tâche
openclaw cron run daily-briefing

# Activer/désactiver une tâche
openclaw cron enable daily-briefing
openclaw cron disable daily-briefing

# Voir les logs de la tâche
openclaw cron logs daily-briefing

Déclencheurs Webhook

Configurer les Webhooks

{
  "webhooks": [
    {
      "id": "github-push",
      "path": "/webhook/github",
      "secret": "your-webhook-secret",
      "session": "main",
      "handler": "github-push"
    },
    {
      "id": "custom-alert",
      "path": "/webhook/alert",
      "secret": "your-webhook-secret",
      "session": "main",
      "message": "Alerte reçue : {{data.message}}"
    }
  ]
}

Points d’accès Webhook

POST http://your-gateway:18789/webhook/github-push
POST http://your-gateway:18789/webhook/alert

Exemple de Webhook GitHub

{
  "webhooks": [
    {
      "id": "github-push",
      "path": "/webhook/github",
      "secret": "${GITHUB_WEBHOOK_SECRET}",
      "session": "work",
      "handler": "github-push"
    }
  ]
}

Script du handler :

// ~/.openclaw/handlers/github-push.js
module.exports = async (payload, session) => {
  if (payload.ref === 'refs/heads/main') {
    const commits = payload.commits.map(c => c.message).join('\n- ');
    return `Nouveau push détecté :\n\nBranche : main\nCommits :\n- ${commits}\n\nVoulez-vous que je fasse quelque chose ?`;
  }
  return null;
};

Traitement Webhook personnalisé

{
  "webhooks": [
    {
      "id": "monitoring-alert",
      "path": "/webhook/alert",
      "methods": ["POST"],
      "session": "main",
      "message": "🚨 Notification d'alerte\n\nNiveau : {{data.level}}\nService : {{data.service}}\nMessage : {{data.message}}\nHeure : {{data.timestamp}}"
    }
  ]
}

Envoyer un Webhook :

curl -X POST http://localhost:18789/webhook/alert \
  -H "Content-Type: application/json" \
  -H "X-Webhook-Secret: your-secret" \
  -d '{
    "level": "critical",
    "service": "api-server",
    "message": "Utilisation CPU supérieure à 90%",
    "timestamp": "2026-02-26T10:30:00Z"
  }'

Sécurité des Webhooks

{
  "webhooks": [
    {
      "id": "secure-webhook",
      "path": "/webhook/secure",
      "secret": "your-secret-key",
      "signatureHeader": "X-Signature",
      "signatureAlgorithm": "sha256",
      "ipWhitelist": ["192.168.1.0/24"]
    }
  ]
}

Intégration Gmail Pub/Sub

Configurer Gmail Pub/Sub

{
  "gmail": {
    "pubsub": {
      "enabled": true,
      "projectId": "your-project-id",
      "subscription": "gmail-subscription",
      "credentials": {
        "type": "service_account",
        "project_id": "your-project-id",
        "private_key_id": "...",
        "private_key": "...",
        "client_email": "..."
      },
      "filters": [
        {
          "from": "[email protected]",
          "session": "main",
          "message": "E-mail important reçu :\nExpéditeur : {{sender}}\nObjet : {{subject}}"
        }
      ]
    }
  }
}

Mettre en place Gmail Pub/Sub

  1. Créer un projet Google Cloud
  2. Activer l’API Gmail
  3. Créer un sujet Pub/Sub
  4. Créer un compte de service
  5. Configurer le watch Gmail
# Configurer le watch Gmail
openclaw gmail watch --email [email protected]

Filtres Gmail

Condition de filtre Description
from Adresse de l’expéditeur
to Adresse du destinataire
subject Mots-clés de l’objet
hasAttachment Présence de pièce jointe
label Libellé Gmail
{
  "filters": [
    {
      "from": "[email protected]",
      "session": "work",
      "message": "Notification GitHub reçue : {{subject}}"
    },
    {
      "from": "[email protected]",
      "hasAttachment": true,
      "session": "main",
      "message": "Document Stripe reçu, veuillez traiter"
    }
  ]
}

Vérifications proactives Heartbeat

Configurer le Heartbeat

{
  "heartbeat": {
    "enabled": true,
    "interval": 3600000,
    "session": "main",
    "message": "Heartbeat : veuillez vérifier s'il y a des éléments nécessitant mon attention"
  }
}

Usages du Heartbeat

Usage Description
Rappels proactifs Rappeler régulièrement l’utilisateur
Vérification d’état Vérifier l’état du système ou des services
Suggestions de tâches Fournir des suggestions basées sur le contexte
Maintien du contexte Garder la session active

Exemple de Heartbeat

{
  "heartbeat": {
    "enabled": true,
    "interval": 1800000,
    "conditions": [
      {
        "type": "time",
        "start": "09:00",
        "end": "18:00"
      },
      {
        "type": "active",
        "session": "main"
      }
    ],
    "message": "Selon l'heure actuelle, voici les éléments à vérifier :\n1. Tâches du jour\n2. Rappels e-mail\n3. Planning de la journée"
  }
}

Exemples pratiques d’automatisation

Exemple 1 : Briefing matinal

{
  "cron": [
    {
      "id": "morning-briefing",
      "schedule": "0 8 * * 1-5",
      "session": "main",
      "message": "Bonjour ! Voici votre briefing matinal :\n1. Prévisions météo\n2. Programme du jour\n3. Tâches à faire\n4. Résumé des e-mails importants"
    }
  ]
}

Exemple 2 : Notifications CI/CD

{
  "webhooks": [
    {
      "id": "ci-failure",
      "path": "/webhook/ci",
      "session": "dev",
      "message": "⚠️ Échec CI\n\nProjet : {{data.repository}}\nBranche : {{data.branch}}\nCommit : {{data.commit}}\nErreur : {{data.error}}\n\nVoulez-vous que j'analyse le problème ?"
    }
  ]
}

Exemple 3 : Traitement automatique des e-mails

{
  "gmail": {
    "pubsub": {
      "filters": [
        {
          "from": "[email protected]",
          "hasAttachment": true,
          "session": "main",
          "message": "E-mail de facture reçu, traitement en cours...\nVeuillez enregistrer la pièce jointe dans le dossier comptabilité"
        }
      ]
    }
  }
}

Exemple 4 : Surveillance système

{
  "cron": [
    {
      "id": "system-monitor",
      "schedule": "*/5 * * * *",
      "session": "main",
      "message": "Vérifier l'état du système",
      "skills": ["system-monitor"]
    }
  ]
}

Dépannage

La tâche Cron ne s’exécute pas

# Vérifier l'état de la tâche
openclaw cron list

# Vérifier les logs
openclaw logs --filter cron

# Déclencher manuellement pour tester
openclaw cron run task-id

Le Webhook ne répond pas

# Tester le point d'accès Webhook
curl -X POST http://localhost:18789/webhook/test \
  -H "Content-Type: application/json" \
  -d '{"test": true}'

# Voir les logs
openclaw logs --filter webhook

Gmail Pub/Sub ne fonctionne pas

# Vérifier l'état de l'abonnement
openclaw gmail status

# Reconfigurer
openclaw gmail setup

# Vérifier les permissions
openclaw gmail check-permissions

Résumé

L’automatisation transforme OpenClaw d’un assistant réactif en un assistant proactif :

  • Cron : exécution planifiée de tâches
  • Webhook : déclenchement par événements externes
  • Gmail Pub/Sub : automatisation des e-mails
  • Heartbeat : rappels et suggestions proactifs

Historique des mises à jour :

  • 2026-02-26 : Publication initiale

Navigation de la série :