Le canal email ingère vos emails entrants et permet à un pipeline de répondre, transférer ou créer des tâches downstream.
Modèle
Deux modules complémentaires :
email_inbound— réception (IMAP)email_outbound— émission (opérateur configuré, ou relai via votre SMTP)
Ils sont indépendants : vous pouvez n'utiliser que le entrant (pour trier sans répondre), ou n'utiliser que le sortant (pour notifier depuis un pipeline déclenché autrement).
Mise en place
- Paramètres → Services → Email, onglet Comptes — connecter une boîte IMAP avec ses credentials.
- Mapper la boîte vers un pipeline cible.
- (Optionnel) Configurer un émetteur (SMTP) pour répondre.
Pour les architectures qui veulent rester en contrôle de leurs serveurs mail, betool ne se substitue pas à votre MTA : nous lisons et écrivons via IMAP / SMTP standards.
Ce que le pipeline reçoit
Pour chaque email entrant, un nouvel exchange est créé avec :
exchange.user_message— corps de l'email (HTML → texte normalisé)exchange.email.subject— sujetexchange.email.from— expéditeur normaliséexchange.email.thread_id— identifiant de fil (utile pour le contexte multi-turn)exchange.email.attachments— liste deFileMetadata(pièces jointes parsées)
Pièces jointes
Les pièces jointes peuvent être passées au nœud file_transform : texte sélectionnable d'un PDF (pdf_extract_text, sans OCR — un PDF scanné ne rend pas de texte), lecture d'un classeur Excel en lignes (xlsx_to_json, xls_to_json), découpe ou rendu en images d'un PDF, extraction d'une archive. De là, votre agent peut les exploiter comme du texte ou des données structurées.
Threads & contexte multi-turn
Si un client répond à une réponse précédente, betool reconnaît le thread_id et restore l'historique du fil dans le contexte de l'agent. C'est transparent pour la conception du pipeline.
Qualité des adresses et non-remises
Trois nœuds protègent votre réputation d'expéditeur :
email_check— vérifie une ou plusieurs adresses avant un envoi : liste de suppression de l'organisation, syntaxe, puis DNS du domaine (MX, à défaut A/AAAA ; un « null MX » vaut refus). Il signale aussi, sans changer le verdict, les adresses jetables, les boîtes génériques (info@…) et les risques (faute de frappe sur un grand fournisseur, extension dupliquée, serveur « attrape-tout »). Il ne bloque rien lui-même : il publie les verdicts et la liste des adresses délivrables. Aucune sonde SMTP n'est effectuée.email_list_clean— qualifie une liste entière (par exemple issue d'un fichier importé) en trois feuilles : propres, à revoir, rejetées, prêtes à exporter avecdata_to_file. Dédoublonnage, mêmes contrôles qu'email_check, et analyse de la forme de l'adresse. Facturé en crédits par adresse distincte, solde vérifié avant le traitement.email_bounce_parse— lit un avis de non-remise reçu dans une boîte entrante. Les adresses ne sont prises que dans les champs structurés de l'avis, jamais dans le texte libre. Elles sont ajoutées à la liste de suppression : un échec permanent bloque dès la première occurrence ; un échec temporaire bloque après 3 occurrences, pour 72 heures.
Les envois suivants (nœud email_outbound et tool email.send) retirent automatiquement les adresses supprimées ; si plus aucun destinataire ne reste, rien ne part. Seul un administrateur peut lever un blocage permanent.
Limites connues
- Pas (encore) de support MS Exchange EWS natif (vous pouvez exposer Exchange en IMAP).
- L'ingestion Office 365 passe par IMAP, pas par l'API Microsoft Graph. (Pour envoyer depuis une boîte Microsoft via Graph, utilisez le nœud
microsoft_send_mail.) - Le parsing des emails très anciens (Outlook 2003 RTF imbriqué) peut perdre du formatage.