Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

E-mail

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 string · default "Re: Message"

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 string[] · default []

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* string · default

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 bool · default true

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 integer · default 1740

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 string · default "INBOX"

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* string · default

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 integer · default 993

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 integer · default 26214400

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 EmailOAuth2Config · default

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 bool · default false

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* string · default

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 integer · default 60

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* string · default

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 string? · default null

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 integer · default 465

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 bool · default true

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 string? · default null

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* string · default

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>.password est un secret. Stocké chiffré, jamais en clair dans config.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>.password est un secret. Stocké chiffré, jamais en clair dans config.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 string[] · default []

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 string[] · default ["INBOX"]

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 string · default ""

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* string · default

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 string · default ""

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 string · default ""

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_token est un secret. Stocké chiffré, jamais en clair dans config.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

  1. Créez un projet Google Cloud, activez l’API Gmail et l’API Pub/Sub.
  2. Créez un sujet Pub/Sub sur lequel le service Gmail peut publier, définissez-le comme topic
  3. Autorisez l’accès Gmail de l’agent et stockez le jeton résultant via le chemin de secret ci-dessus
  4. 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.