Deux canaux de messagerie électronique en fonction de la manière dont vous souhaitez recevoir les messages entrants.
Qui peut parler à l’agent
Les expéditeurs entrants sont filtrés par rapport au peer set résolu pour l’agent lié, issu de la configuration peer_groups à laquelle l’agent appartient. La correspondance supprime le @ initial et est insensible à la casse par rapport à l’identifiant d’expéditeur natif du canal. Un ensemble vide refuse tout le monde ; un ensemble contenant "*" accepte n’importe qui ; sinon, seuls les pairs externes listés (et les agents pairs) sont acceptés. Ceci est distinct de l’appairage de la passerelle (gateway.require_pairing), qui authentifie les clients HTTP/WebSocket, et non les expéditeurs des canaux de discussion.
Un groupe de pairs pour l’e-mail définit channel à email, liste les expéditeurs autorisés dans external_peers (pour l’e-mail, l’adresse e-mail de l’expéditeur ; ["*"] accepte tout le monde), nomme éventuellement des agents pairs pour la répartition inter-agents, une liste de blocage ignore, et une output_modality (mirror, voice ou text). Consultez Peer Groups pour la référence des champs.
Où définir ce paramètre :
Tableau de bord de la passerelle
Ouvrez /config/peer_groups dans le tableau de bord web.
zerocode
Dans le volet Config, sous Peer groups.
IMAP + SMTP (email_channel)
Le canal de messagerie polyvalent. Interroge IMAP pour les nouveaux messages et envoie via SMTP. Fonctionne avec Gmail, Outlook, Fastmail, Postfix auto-hébergé et tout autre service compatible IMAP/SMTP.
default_subject
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.default_subject.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.default_subject.
zeroclaw config
zeroclaw config set channels.email.<alias>.default_subject <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__default_subject=
excluded_tools
Outils exclus de la spécification d’outils de ce canal. Lorsque ce paramètre est défini, ces outils ne sont pas exposés au modèle lors des réponses via ce canal.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.excluded_tools.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.email.<alias>.excluded_tools <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__excluded_tools=
from_address*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.from_address.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.from_address.
zeroclaw config
zeroclaw config set channels.email.<alias>.from_address <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__from_address=
html_body
Lorsque la valeur est true (par défaut), les e-mails sortants sont rendus en HTML via une conversion Markdown. Définissez la valeur sur false pour envoyer des e-mails en texte brut à la place.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.html_body.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.html_body.
zeroclaw config
zeroclaw config set channels.email.<alias>.html_body <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__html_body=
idle_timeout_secs
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.idle_timeout_secs.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.idle_timeout_secs.
zeroclaw config
zeroclaw config set channels.email.<alias>.idle_timeout_secs <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__idle_timeout_secs=
imap_folder
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.imap_folder.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.imap_folder.
zeroclaw config
zeroclaw config set channels.email.<alias>.imap_folder <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__imap_folder=
imap_host*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.imap_host.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.imap_host.
zeroclaw config
zeroclaw config set channels.email.<alias>.imap_host <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__imap_host=
imap_port
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.imap_port.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.imap_port.
zeroclaw config
zeroclaw config set channels.email.<alias>.imap_port <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__imap_port=
max_attachment_bytes
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.max_attachment_bytes.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.max_attachment_bytes.
zeroclaw config
zeroclaw config set channels.email.<alias>.max_attachment_bytes <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__max_attachment_bytes=
oauth2
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.oauth2.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.oauth2.
zeroclaw config
zeroclaw config set channels.email.<alias>.oauth2 <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__oauth2=
observer_mode
Lorsque cette option est activée, le démon surveille les nouveaux messages mais ne modifie jamais aucun drapeau IMAP.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.observer_mode.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.observer_mode.
zeroclaw config
zeroclaw config set channels.email.<alias>.observer_mode <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__observer_mode=
password*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.password.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.password.
zeroclaw config
zeroclaw config set channels.email.<alias>.password <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__password=
poll_interval_secs
Intervalle d’interrogation utilisé lorsque le serveur IMAP n’annonce pas la capacité IDLE (RFC 2177). Ignoré lorsque IDLE est disponible.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.poll_interval_secs.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.poll_interval_secs.
zeroclaw config
zeroclaw config set channels.email.<alias>.poll_interval_secs <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__poll_interval_secs=
smtp_host*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.smtp_host.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.smtp_host.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_host <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__smtp_host=
smtp_password
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.smtp_password.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.smtp_password.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_password <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__smtp_password=
smtp_port
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.smtp_port.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.smtp_port.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_port <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__smtp_port=
smtp_tls
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.smtp_tls.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.smtp_tls.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_tls <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__smtp_tls=
smtp_username
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.smtp_username.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.smtp_username.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_username <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__smtp_username=
username*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez le champ channels.email.<alias>.username.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.username.
zeroclaw config
zeroclaw config set channels.email.<alias>.username <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__email__<alias>__username=
password (et smtp_password si vous utilisez un relais distinct) sont des secrets :
channels.email.<alias>.passwordest un secret. Stocké chiffré, jamais en clair dansconfig.toml. Définissez-le via l’une de ces méthodes, qui chiffrent à l’écriture :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez-y le champ channels.email.<alias>.password.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.password (la saisie est masquée).
zeroclaw config
zeroclaw config set channels.email.<alias>.password # demande une saisie masquée, stocke de manière chiffrée
Pièges courants avec Gmail
- Les mots de passe d’application sont requis si l’authentification à deux facteurs (2FA) est activée. Le mot de passe du compte régulier est refusé.
- « L’accès des applications moins sécurisées » a disparu : le mot de passe d’application est la seule solution.
- Envisagez le canal Gmail Push ci-dessous pour une livraison en temps réel plutôt qu’une interrogation périodique.
Outlook / Office 365
password (et smtp_password) sont des secrets :
channels.email.<alias>.passwordest un secret. Stocké chiffré, jamais en clair dansconfig.toml. Définissez-le via l’une de ces méthodes, qui chiffrent à l’écriture :
Tableau de bord de la passerelle
Ouvrez /config/channels/email et définissez-y le champ channels.email.<alias>.password.
zerocode
Dans le volet Config, définissez le champ channels.email.<alias>.password (la saisie est masquée).
zeroclaw config
zeroclaw config set channels.email.<alias>.password # demande une saisie masquée, stocke de manière chiffrée
Gmail Push (gmail_push)
Diffusion en temps réel via Google Cloud Pub/Sub, sans interrogation continue.
excluded_tools
Outils exclus de la spécification d’outils de ce canal. Lorsque ce paramètre est défini, ces outils ne sont pas exposés au modèle lors des réponses via ce canal.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/gmail_push et définissez le champ channels.gmail_push.<alias>.excluded_tools.
zerocode
Dans le volet Config, définissez le champ channels.gmail_push.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.excluded_tools <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__gmail_push__<alias>__excluded_tools=
label_filter
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/gmail_push et définissez le champ channels.gmail_push.<alias>.label_filter.
zerocode
Dans le volet Config, définissez le champ channels.gmail_push.<alias>.label_filter.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.label_filter <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__gmail_push__<alias>__label_filter=
oauth_token
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/gmail_push et définissez le champ channels.gmail_push.<alias>.oauth_token.
zerocode
Dans le volet Config, définissez le champ channels.gmail_push.<alias>.oauth_token.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.oauth_token <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__gmail_push__<alias>__oauth_token=
topic*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/gmail_push et définissez le champ channels.gmail_push.<alias>.topic.
zerocode
Dans le panneau Config, définissez le champ channels.gmail_push.<alias>.topic.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.topic <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__gmail_push__<alias>__topic=
webhook_secret
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/gmail_push et définissez le champ channels.gmail_push.<alias>.webhook_secret.
zerocode
Dans le panneau Config, définissez le champ channels.gmail_push.<alias>.webhook_secret.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.webhook_secret <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__gmail_push__<alias>__webhook_secret=
webhook_url
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/gmail_push et définissez le champ channels.gmail_push.<alias>.webhook_url.
zerocode
Dans le volet Config, définissez le champ channels.gmail_push.<alias>.webhook_url.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.webhook_url <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__gmail_push__<alias>__webhook_url=
oauth_token et webhook_secret sont des secrets :
channels.gmail_push.<alias>.oauth_tokenest un secret. Stocké chiffré, jamais en clair dansconfig.toml. Définissez-le via l’une de ces méthodes, qui chiffrent à l’écriture :
Tableau de bord de la passerelle
Ouvrez /config/channels/gmail_push et définissez-y le champ channels.gmail_push.<alias>.oauth_token.
zerocode
Dans le volet Config, définissez le champ channels.gmail_push.<alias>.oauth_token (la saisie est masquée).
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.oauth_token # demande une saisie masquée, stocke de manière chiffrée
Configuration
- Créez un projet Google Cloud, activez l’API Gmail et l’API Pub/Sub.
- Créez un sujet Pub/Sub sur lequel le service Gmail peut publier, définissez-le comme
topic - Autorisez l’accès Gmail de l’agent et stockez le jeton résultant via le chemin de secret ci-dessus
- L’agent surveille les notifications de nouveaux courriels et les achemine vers l’agent lié
Les envois sortants passent toujours par SMTP : configurez un bloc [channels.email.<alias>] IMAP+SMTP.
Réponses en fil de discussion
Les deux canaux de messagerie électronique regroupent les réponses en utilisant les en-têtes In-Reply-To et References, afin que les conversations restent groupées dans le client que l’expéditeur utilise.
Format du corps sortant
Les réponses de l’agent sont envoyées en multipart/alternative avec à la fois une partie texte brut et une partie HTML par défaut. La partie HTML est le corps rendu en Markdown ; la partie texte brut est le texte brut du corps. Les clients de messagerie qui préfèrent le texte brut sélectionneront automatiquement l’alternative en texte brut.
Pour envoyer uniquement du texte brut (sans partie HTML, pour les clients ou configurations qui le préfèrent), définissez le champ html_body du canal sur false.
Lorsque des pièces jointes sont présentes, les alternatives du corps sont encapsulées dans un multipart/mixed externe.
Gestion des pièces jointes
Les pièces jointes entrantes sont stockées sous <workspace>/attachments/<conversation>/. L’agent reçoit les chemins des fichiers dans son contexte et peut les lire via l’outil file_read. Les noms de fichiers sont d’abord extraits de l’en-tête Content-Disposition, puis, à défaut, du paramètre name de Content-Type.
Les pièces jointes sortantes sont envoyées à partir des octets fournis avec chaque pièce jointe. Le canal Email traite le nom de fichier de la pièce jointe comme des métadonnées d’affichage, et non comme un chemin local. Les intégrations qui envoient intentionnellement un fichier local doivent valider ou restreindre le chemin, puis le charger explicitement avec MediaAttachment::from_file avant l’envoi.
Limites de taux et de volume
L’e-mail n’est pas optimisé pour la latence conversationnelle. Attendez-vous à :
- Latence de l’interrogation IMAP :
poll_interval_secs(par défaut 60 s). Réduisez cette valeur au détriment de la charge du serveur ; certains fournisseurs limitent le nombre d’interrogations agressives. - Envoi SMTP : soumis au quota quotidien d’envois de votre fournisseur (Gmail : 500/jour pour les comptes gratuits, 2000/jour pour Workspace).
Sécurité
L’e-mail n’a aucune authentification au niveau du protocole au-delà de l’enveloppe SMTP ; n’importe qui peut prétendre être n’importe qui. Filtrez les expéditeurs entrants avec un groupe de pairs (ci-dessus) avant d’exposer l’agent à une boîte de réception qui reçoit du courrier public.