Email Triage and Response Automation with OpenClaw

Automate email triage, categorization, and intelligent responses with OpenClaw AI agents. Process hundreds of daily emails with zero manual sorting and faster response times.

E
ECOSIRE Research and Development Team
|19 mars 202612 min de lecture2.7k Mots|

Triage des e-mails et automatisation des réponses avec OpenClaw

Le travailleur du savoir moyen passe 2,6 heures par jour à gérer ses e-mails. Pour les équipes en contact avec les clients, les représentants du développement des ventes et les assistants de direction, ce chiffre est plus élevé et une fraction importante de ce temps est consacrée à des tâches qu'un système performant pourrait gérer : trier les e-mails par urgence, acheminer les demandes vers la bonne personne, répondre aux questions fréquemment posées, planifier les demandes de réunion et suivre les fils de discussion en suspens. Ces tâches nécessitent de la compréhension mais pas de la créativité. Ce sont exactement les tâches pour lesquelles les agents OpenClaw sont conçus.

L'automatisation des e-mails OpenClaw va au-delà des règles basées sur des mots clés. L'agent de tri des e-mails lit chaque e-mail comme le ferait un assistant humain qualifié : comprendre le contexte, en déduire l'intention, reconnaître la relation de l'expéditeur avec votre entreprise et prendre des décisions intelligentes de routage et de réponse. Ce guide couvre l'architecture complète d'automatisation de la messagerie pour les déploiements en entreprise.

Points clés à retenir

  • L'agent de triage des e-mails d'OpenClaw classe les e-mails par type (demande, plainte, facture, demande de réunion, spam, notification interne) et par priorité en moins de deux secondes.
  • L'agent rédige les réponses aux demandes répétitives, les envoie automatiquement ou les achemine vers un humain pour approbation en fonction de votre politique.
  • Les demandes de planification de réunions sont traitées de bout en bout : l'agent vérifie la disponibilité du calendrier, propose des horaires, confirme la réservation et envoie des invitations.
  • L'agent gère le contexte du fil de discussion : les e-mails de suivi dans le même fil de discussion sont traités en tenant compte de l'historique des conversations.
  • La détection d'escalade émotionnelle achemine immédiatement les expéditeurs en détresse ou en colère vers des gestionnaires humains, quel que soit le sujet.
  • Les catégories d'e-mails sensibles (mentions légales, correspondance réglementaire, plaintes provenant de comptes d'entreprise) sont signalées et ne reçoivent jamais de réponse automatique.
  • Intégration avec Gmail, Outlook (Microsoft 365) et tout système de messagerie compatible IMAP/SMTP.
  • ECOSIRE construit l'automatisation de la messagerie OpenClaw pour les équipes de direction, les services client et les opérations de développement des ventes.

Architecture : la pile d'automatisation des e-mails

Le pipeline d'automatisation des e-mails se compose de quatre agents travaillant en séquence :

Inbound Email
      ↓
[ Triage Agent ]         — classify type, priority, sender relationship, intent
      ↓
[ Response Agent ]       — draft appropriate response or action
      ↓
[ Review Gate ]          — auto-send, human-approve, or escalate
      ↓
[ Follow-up Agent ]      — track replies, manage open threads, send reminders

La Review Gate est configurable par catégorie d’e-mail. Pour les notifications internes, l'agent peut agir immédiatement. Pour les demandes des clients, les brouillons sont envoyés dans la boîte de réception en tant que réponse suggérée à envoyer par un humain. Pour le spam et le marketing, l'agent archive automatiquement. Pour les catégories sensibles, l'agent signale sans répondre.


Intégration de la messagerie : connexion à votre boîte aux lettres

OpenClaw se connecte au courrier électronique via des protocoles standard et OAuth. L'architecture recommandée pour Gmail :

export const GmailTool = defineTool({
  name: "email",
  type: "google-gmail",
  auth: {
    type: "oauth2",
    clientId: "${GOOGLE_CLIENT_ID}",
    clientSecret: "${GOOGLE_CLIENT_SECRET}",
    refreshToken: "${GMAIL_REFRESH_TOKEN}", // Stored in Vault
    scopes: [
      "https://www.googleapis.com/auth/gmail.readonly",
      "https://www.googleapis.com/auth/gmail.send",
      "https://www.googleapis.com/auth/gmail.modify",
    ],
  },
  polling: {
    intervalMs: 30_000, // Check every 30 seconds
    maxResults: 50,
    labelFilter: ["INBOX", "UNREAD"],
  },
});

Pour Microsoft 365, l'outil utilise l'API Microsoft Graph avec une configuration OAuth similaire. Pour les autres systèmes de messagerie, l'outil IMAP assure la compatibilité :

export const ImapTool = defineTool({
  name: "email",
  type: "imap",
  config: {
    host: "${IMAP_HOST}",
    port: 993,
    tls: true,
    auth: { user: "${EMAIL_ADDRESS}", pass: "${EMAIL_PASSWORD}" },
    smtpHost: "${SMTP_HOST}",
    smtpPort: 587,
  },
});

L'interrogation des e-mails s'exécute selon un intervalle configurable. Pour les boîtes de réception à volume élevé (plus de 1 000 e-mails par jour), un modèle de notification push via l'intégration Pub/Sub de Gmail ou les abonnements webhook d'Outlook permet un traitement en temps réel sans surcharge d'interrogation.


Agent de tri : comprendre chaque e-mail

L'agent de triage classe chaque e-mail entrant selon quatre dimensions :

Type : À quelle catégorie appartient cet e-mail ? Les types courants incluent : demande client, opportunité de vente, communication avec le fournisseur, facture/facturation, demande de réunion, plainte, avis juridique, notification interne, marketing/promotionnel, spam, newsletter.

Priorité : Dans quelle mesure cette question nécessite-t-elle une attention urgente ? La priorité est déterminée par la relation avec l'expéditeur (compte d'entreprise ou contact inconnu), le type (les mentions légales sont toujours hautement prioritaires), le sentiment (les signaux de colère ou de détresse sont hautement prioritaires) et les références temporelles explicites (« J'en ai besoin d'ici vendredi »).

Intention : que veut l'expéditeur ? Planifiez un appel, obtenez une réponse à une question, demandez un remboursement, déposez une plainte, confirmez un rendez-vous, approuvez un document.

Relation avec l'expéditeur : cet expéditeur est-il un client (et si oui, à quel niveau) ? Un vendeur ? Un prospect dans le pipeline des ventes ? Un collègue interne ? Un premier contact ? Le domaine de messagerie de l'expéditeur est comparé à votre CRM et ERP pour enrichir le contexte de triage.

export const TriageEmail = defineSkill({
  name: "triage-email",
  tools: ["email", "crm", "llm"],
  async run({ input, tools }) {
    const email = await tools.email.getMessage(input.messageId);

    // Enrich sender context
    const senderContext = await tools.crm.findByEmail(email.from.address);

    // Classify with LLM
    const classification = await tools.llm.classify({
      prompt: buildTriagePrompt(email, senderContext),
      schema: {
        type: z.enum(["customer-inquiry", "sales-opportunity", "complaint", "invoice",
                       "meeting-request", "legal-notice", "internal", "spam", "other"]),
        priority: z.enum(["urgent", "high", "normal", "low"]),
        intent: z.string().max(100),
        requiresHuman: z.boolean(),
        requiresHumanReason: z.string().optional(),
        sentiment: z.enum(["positive", "neutral", "negative", "distressed"]),
      },
    });

    // Emotional escalation — always to human
    if (classification.sentiment === "distressed" || classification.type === "legal-notice") {
      return {
        ...classification,
        requiresHuman: true,
        requiresHumanReason: classification.sentiment === "distressed" ? "Distressed sender" : "Legal notice",
        autoAction: "FLAG_FOR_HUMAN",
      };
    }

    return { ...classification, senderContext };
  },
});

Agent de réponse : rédiger des réponses contextuellement précises

Pour les e-mails éligibles à une réponse automatisée (demandes des clients sur l'état des commandes, FAQ, demandes de planification), l'agent de réponse rédige une réponse dans le style de communication de l'organisation.

La qualité de la réponse dépend des connaissances auxquelles l’agent a accès. L'agent de réponse interroge :

  • La base de connaissances pour des réponses factuelles (spécifications produits, prix, politiques)
  • Le CRM pour les informations spécifiques au client (leur statut de compte, les commandes ouvertes, les interactions antérieures)
  • Le calendrier des disponibilités lors de la planification
  • L'ERP pour le détail des commandes et des factures
export const DraftEmailResponse = defineSkill({
  name: "draft-email-response",
  tools: ["email", "crm", "knowledge-base", "erp", "calendar", "llm"],
  async run({ input, tools }) {
    const { email, classification, senderContext } = input;
    let contextData: Record<string, any> = {};

    // Gather relevant context based on email type
    if (classification.type === "customer-inquiry" && senderContext?.customerId) {
      contextData.recentOrders = await tools.erp.getRecentOrders(senderContext.customerId, { limit: 3 });
      contextData.openTickets = await tools.crm.getOpenTickets(senderContext.customerId);
    }

    if (classification.intent.includes("schedule") || classification.type === "meeting-request") {
      contextData.availability = await tools.calendar.getFreeSlots({ days: 7, duration: 30 });
    }

    // Query knowledge base for relevant answers
    const knowledgeResults = await tools.knowledgeBase.search(email.body, { topK: 3 });
    contextData.knowledgeAnswers = knowledgeResults;

    // Generate draft
    const draft = await tools.llm.generate({
      prompt: buildResponsePrompt(email, classification, senderContext, contextData),
      systemPrompt: loadBrandVoiceGuide(), // Tone, style, sign-off format
      maxTokens: 500,
      temperature: 0.3,
    });

    return {
      draft,
      contextUsed: Object.keys(contextData),
      confidence: knowledgeResults[0]?.confidence ?? 0.5,
    };
  },
});

Cohérence vocale de la marque : l'invite du système pour la génération de réponses inclut les directives de style de communication de votre organisation : niveau de formalité, approbation préférée, comment s'adresser aux clients (par leur prénom ou formellement) et les expressions spécifiques à utiliser ou à éviter. Cela garantit que les réponses rédigées par les agents ne se distinguent pas du style de rédaction de votre équipe, voire de leur paternité.


Planification de réunions : élimination des allers-retours dans le calendrier

Les e-mails de planification de réunions sont volumineux et peu créatifs : ils suivent des modèles prévisibles que les agents gèrent parfaitement. Lorsque l’agent de triage identifie une demande de réunion, le flux de réponse de planification s’active.

export const HandleMeetingRequest = defineSkill({
  name: "handle-meeting-request",
  tools: ["calendar", "email"],
  async run({ input, tools }) {
    const { email, requestedDuration } = input;

    // Find available slots
    const slots = await tools.calendar.getFreeSlots({
      duration: requestedDuration ?? 30,
      days: 7,
      businessHoursOnly: true,
      timezone: inferTimezone(email),
    });

    if (slots.length === 0) {
      return {
        action: "DRAFT_RESPONSE",
        message: "No available slots in the next 7 days — response template: suggest extending the window",
        requiresHuman: true,
      };
    }

    const topSlots = slots.slice(0, 3);

    // Create a scheduling page link (or include times directly in the email)
    const schedulingLink = await tools.calendar.createSchedulingPage({
      slots: topSlots,
      title: `Meeting with ${input.hostName}`,
      duration: requestedDuration ?? 30,
      confirmationEmailTemplate: "meeting-confirmed",
    });

    const draft = buildSchedulingResponse(email, topSlots, schedulingLink, input.hostName);

    return { action: "DRAFT_READY", draft, schedulingLink };
  },
});

Lorsque le destinataire clique sur un créneau dans le lien de planification, un webhook déclenche la compétence de confirmation qui réserve l'événement de calendrier, envoie des invitations de calendrier à toutes les parties et ferme le fil de discussion avec une confirmation.


Gestion du contexte des threads

Les conversations par courrier électronique s'étendent sur plusieurs messages. Un e-mail de suivi n'a de sens que dans le contexte du fil de discussion précédent. Le gestionnaire de threads conserve un résumé sémantique de chaque thread ouvert qui est mis à jour à mesure que de nouveaux messages arrivent.

export const UpdateThreadContext = defineSkill({
  name: "update-thread-context",
  tools: ["email"],
  async run({ input, tools, memory }) {
    const threadKey = `thread:${input.threadId}`;
    const existingContext = await memory.episode.get(threadKey);

    const newMessages = await tools.email.getThreadMessages(input.threadId, {
      since: existingContext?.lastMessageId ?? null,
    });

    const updatedSummary = await summarizeThread([
      ...(existingContext?.messages ?? []),
      ...newMessages,
    ]);

    await memory.episode.set(threadKey, {
      threadId: input.threadId,
      summary: updatedSummary,
      lastMessageId: newMessages[newMessages.length - 1]?.id,
      openItems: extractOpenItems(updatedSummary),
      lastUpdated: new Date().toISOString(),
    });

    return { summary: updatedSummary };
  },
});

Lorsqu'un nouveau message arrive dans un fil de discussion, les agents de triage et de réponse reçoivent le résumé du fil de discussion comme contexte, ce qui leur permet de comprendre l'historique complet de la conversation sans relire chaque message.


Suivi de suivi : rien ne passe entre les mailles du filet

L'agent de suivi surveille les fils de discussion ouverts dans lesquels l'organisation a envoyé un message et n'a pas reçu de réponse. Après une période configurable (généralement 3 jours ouvrables pour la sensibilisation des clients, 1 jour pour les suivis des ventes urgents), il rédige un e-mail de suivi et l'achemine vers la porte d'examen appropriée.

export const TrackOpenThreads = defineSkill({
  name: "track-open-threads",
  tools: ["email"],
  async run({ input, tools, memory }) {
    const sentEmails = await tools.email.getSentMessages({
      since: hoursAgo(24 * 7), // Last week's sent emails
      excludeInternalDomains: true,
    });

    const waitingForReply = [];
    for (const sent of sentEmails) {
      const thread = await tools.email.getThread(sent.threadId);
      const lastMessage = thread.messages[thread.messages.length - 1];
      const weWroteLastMessage = lastMessage.from.address === input.ourEmailAddress;

      if (weWroteLastMessage) {
        const daysSinceSent = daysSince(lastMessage.date);
        if (daysSinceSent >= input.followUpAfterDays) {
          waitingForReply.push({ threadId: sent.threadId, daysSinceSent, subject: sent.subject });
        }
      }
    }

    return { waitingForReply, count: waitingForReply.length };
  },
});

Gestion des e-mails sensibles : ce à quoi l'agent ne répond jamais automatiquement

Certaines catégories d'e-mails ne devraient jamais recevoir de réponses automatisées. L’agent de triage les signale immédiatement pour une manipulation humaine :

  • Mentions légales, lettres de cessation et d'abstention, correspondance réglementaire
  • Plaintes émanant de comptes d'entreprise dépassant un seuil de revenus
  • Emails mentionnant les médias, la presse ou le journalisme
  • E-mails avec des types de pièces jointes suggérant des documents juridiques (PDF avec des modèles de noms de fichiers à consonance légale)
  • Tentatives de phishing ou d'ingénierie sociale (signalées et mises en quarantaine, sans réponse)
  • E-mails avec un niveau de confiance de classification très faible (l'agent n'est pas sûr du sujet de l'e-mail)

Le système de signalement ajoute une étiquette et crée une tâche dans le système de flux de travail de l'équipe : l'e-mail n'est jamais perdu, il est simplement acheminé vers des mains humaines.


Questions fréquemment posées

Comment l'agent conserve-t-il l'apparence d'une paternité humaine dans les réponses ?

L'agent de réponse est configuré avec le style de communication de l'expéditeur humain : phrases préférées, format de signature, longueur de réponse typique et niveau de formalité. Les brouillons sont générés dans ce style. Pour les équipes dont les réponses sont examinées avant l'envoi, l'humain modifie le brouillon si nécessaire et l'envoie lui-même : l'e-mail provient de son adresse sans aucune indication de l'aide de l'IA. Pour les réponses entièrement automatisées (réponses aux FAQ, statut de la commande), l'organisation peut choisir de divulguer l'automatisation dans le pied de page de l'e-mail.

Que se passe-t-il lorsque l'agent ne sait pas comment réagir ?

Les seuils de confiance sont configurables par catégorie d'e-mail. Lorsque la confiance de l'agent dans sa classification ou dans la réponse proposée tombe en dessous du seuil, il est acheminé vers la file d'attente de révision humaine avec une action suggérée plutôt que de répondre automatiquement. L'humain peut approuver la suggestion en un clic, la modifier ou la gérer manuellement. Chaque suggestion approuvée améliore la confiance future de l'agent sur des e-mails similaires grâce à la boucle de retour d'apprentissage.

L'agent peut-il gérer les e-mails dans plusieurs langues ?

Oui. La détection de la langue constitue la première étape du pipeline de triage. L'agent peut rédiger des réponses dans la même langue que l'e-mail entrant si la base de connaissances contient du contenu dans cette langue. Pour les langues dans lesquelles la base de connaissances est uniquement en anglais, l'agent traduit son brouillon de réponse dans la langue de l'expéditeur. La qualité des réponses dans les langues autres que l'anglais est la plus élevée pour les langues dans lesquelles le LLM sous-jacent a une forte couverture de formation (espagnol, français, allemand, chinois, japonais, portugais, arabe).

Comment l'outil de suivi du suivi évite-t-il d'envoyer des rappels de manière trop agressive ?

L'agent de suivi vérifie les signaux d'engagement du destinataire avant d'envoyer un rappel. Si le destinataire a ouvert l'e-mail précédent (suivi via des confirmations de lecture, si disponible) mais n'a pas répondu, le suivi est plus doux et suppose qu'il y réfléchit. S’il n’y a pas de signal ouvert, le suivi est plus direct. L'agent respecte également les signaux de désinscription : si un suivi précédent a généré une réponse demandant de ne pas être contacté, le fil de discussion est marqué comme fermé et aucun autre suivi n'est envoyé.

Existe-t-il une piste d'audit de toutes les actions automatisées entreprises sur les e-mails ?

Oui. Chaque action automatisée (classification de tri, génération de brouillons, envoi automatique, application d'étiquettes, archivage) est enregistrée avec un horodatage, la justification de la classification de l'agent et l'ID du message de l'e-mail. Le journal d'audit est accessible aux administrateurs et peut être exporté pour des examens de conformité. Pour les organisations ayant des exigences en matière d'archivage d'e-mails, les actions d'OpenClaw n'interfèrent pas avec votre solution d'archivage d'e-mails existante.


Prochaines étapes

Le courrier électronique constitue un goulot d'étranglement à volume élevé et à faible créativité pour la plupart des équipes professionnelles. L'automatisation des e-mails OpenClaw gère le tri, le routage et les réponses répétitives afin que votre équipe se concentre sur les conversations qui nécessitent un jugement humain, l'établissement de relations et de la créativité.

Les services OpenClaw d'ECOSIRE incluent la mise en œuvre de l'automatisation des e-mails pour les équipes de service client, les assistants de direction, les opérations de développement des ventes et les fonctions de gestion des fournisseurs. Notre équipe configure les règles de tri, la base de connaissances, les directives relatives à la voix de la marque et les portes d'examen pour correspondre aux normes de communication de votre organisation.

Contactez ECOSIRE pour discuter de vos besoins en matière d'automatisation des e-mails et recevoir une estimation de mise en œuvre.

E

Rédigé par

ECOSIRE Research and Development Team

Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.

Discutez sur WhatsApp