Correo electrónico
Dos canales de correo electrónico dependiendo de cómo quieras que se entreguen los mensajes entrantes.
Quién puede hablar con el agente
Los remitentes entrantes se filtran contra el conjunto de pares resuelto para el agente vinculado, obtenido de la configuración peer_groups a la que pertenece el agente. La coincidencia elimina el @ inicial y no distingue mayúsculas de minúsculas frente al identificador nativo de remitente del canal. Un conjunto vacío deniega a todos; un conjunto que contiene "*" acepta a cualquiera; en caso contrario, solo se aceptan los pares externos listados (y los agentes pares). Esto es independiente del emparejamiento de la puerta de enlace (gateway.require_pairing), que autentica clientes HTTP/WebSocket, no remitentes de canales de chat.
Un grupo de pares para email establece channel en email, lista los remitentes permitidos en external_peers (para email, la dirección de correo electrónico del remitente; ["*"] acepta a cualquiera), opcionalmente nombra agents pares para el despacho entre agentes, una lista de bloqueo ignore y un output_modality (mirror, voice o text). Consulta Peer Groups para la referencia de campos.
Dónde configurar esto:
Panel de control del gateway
Abra /config/peer_groups en el panel de control web.
zerocode
En el panel Config, en Peer groups.
IMAP + SMTP (email_channel)
El canal de correo electrónico de propósito general. Analiza IMAP en busca de nuevos mensajes y envía a través de SMTP. Funciona con Gmail, Outlook, Fastmail, Postfix autoalojado y cualquier otro servicio que utilice IMAP/SMTP.
default_subject
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.default_subject.
zerocode
En el panel Config, establece el campo channels.email.<alias>.default_subject.
zeroclaw config
zeroclaw config set channels.email.<alias>.default_subject <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__default_subject=
excluded_tools
Herramientas excluidas de la especificación de herramientas de este canal. Cuando se establece, estas herramientas no se exponen al modelo al responder a través de este canal.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.excluded_tools.
zerocode
En el panel Config, configure el campo channels.email.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.email.<alias>.excluded_tools <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__excluded_tools=
from_address*
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.from_address.
zerocode
En el panel Config, establece el campo channels.email.<alias>.from_address.
zeroclaw config
zeroclaw config set channels.email.<alias>.from_address <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__from_address=
html_body
Cuando es true (predeterminado), los correos electrónicos salientes se renderizan como HTML mediante conversión de Markdown. Establézcalo en false para enviar correos electrónicos en texto plano en su lugar.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.html_body.
zerocode
En el panel Config, establece el campo channels.email.<alias>.html_body.
zeroclaw config
zeroclaw config set channels.email.<alias>.html_body <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__html_body=
idle_timeout_secs
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.idle_timeout_secs.
zerocode
En el panel Config, establece el campo channels.email.<alias>.idle_timeout_secs.
zeroclaw config
zeroclaw config set channels.email.<alias>.idle_timeout_secs <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__idle_timeout_secs=
imap_folder
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.imap_folder.
zerocode
En el panel Config, establece el campo channels.email.<alias>.imap_folder.
zeroclaw config
zeroclaw config set channels.email.<alias>.imap_folder <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__imap_folder=
imap_host*
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.imap_host.
zerocode
En el panel Config, configure el campo channels.email.<alias>.imap_host.
zeroclaw config
zeroclaw config set channels.email.<alias>.imap_host <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__imap_host=
imap_port
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.imap_port.
zerocode
En el panel Config, establece el campo channels.email.<alias>.imap_port.
zeroclaw config
zeroclaw config set channels.email.<alias>.imap_port <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__imap_port=
max_attachment_bytes
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.max_attachment_bytes.
zerocode
En el panel Config, establece el campo channels.email.<alias>.max_attachment_bytes.
zeroclaw config
zeroclaw config set channels.email.<alias>.max_attachment_bytes <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__max_attachment_bytes=
oauth2
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.oauth2.
zerocode
En el panel Config, establece el campo channels.email.<alias>.oauth2.
zeroclaw config
zeroclaw config set channels.email.<alias>.oauth2 <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__oauth2=
observer_mode
Cuando es verdadero, el demonio observa el correo nuevo pero nunca modifica ningún indicador IMAP.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y establece el campo channels.email.<alias>.observer_mode.
zerocode
En el panel Config, establece el campo channels.email.<alias>.observer_mode.
zeroclaw config
zeroclaw config set channels.email.<alias>.observer_mode <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__observer_mode=
password*
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.password.
zerocode
En el panel Config, establece el campo channels.email.<alias>.password.
zeroclaw config
zeroclaw config set channels.email.<alias>.password <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__password=
poll_interval_secs
Intervalo de sondeo utilizado cuando el servidor IMAP no anuncia la capacidad IDLE (RFC 2177). Se ignora cuando IDLE está disponible.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.poll_interval_secs.
zerocode
En el panel Config, configure el campo channels.email.<alias>.poll_interval_secs.
zeroclaw config
zeroclaw config set channels.email.<alias>.poll_interval_secs <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__poll_interval_secs=
smtp_host*
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.smtp_host.
zerocode
En el panel Config, establece el campo channels.email.<alias>.smtp_host.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_host <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__smtp_host=
smtp_password
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y establece el campo channels.email.<alias>.smtp_password.
zerocode
En el panel Config, establece el campo channels.email.<alias>.smtp_password.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_password <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__smtp_password=
smtp_port
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y establece el campo channels.email.<alias>.smtp_port.
zerocode
En el panel Config, establece el campo channels.email.<alias>.smtp_port.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_port <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__smtp_port=
smtp_tls
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.smtp_tls.
zerocode
En el panel Config, configura el campo channels.email.<alias>.smtp_tls.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_tls <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__smtp_tls=
smtp_username
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.smtp_username.
zerocode
En el panel Config, establece el campo channels.email.<alias>.smtp_username.
zeroclaw config
zeroclaw config set channels.email.<alias>.smtp_username <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__smtp_username=
username*
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/email y configura el campo channels.email.<alias>.username.
zerocode
En el panel Config, establece el campo channels.email.<alias>.username.
zeroclaw config
zeroclaw config set channels.email.<alias>.username <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__email__<alias>__username=
password (y smtp_password si usas un relay independiente) son secretos:
channels.email.<alias>.passwordes un secreto. Se almacena cifrado, nunca en texto plano enconfig.toml. Configúralo mediante una de estas opciones, que cifran al escribir:
Panel de control del gateway
Abre /config/channels/email y configura allí el campo channels.email.<alias>.password.
zerocode
En el panel Config, configure el campo channels.email.<alias>.password (la entrada está enmascarada).
zeroclaw config
zeroclaw config set channels.email.<alias>.password # solicita entrada enmascarada, almacena cifrado
Trucos de Gmail
- Se requieren contraseñas de aplicación si la autenticación de dos factores (2FA) está activada. La contraseña regular de la cuenta será rechazada.
- “El acceso de aplicaciones menos seguras” ya no existe: la contraseña de aplicación es la única opción.
- Considera el canal de Gmail Push para la entrega en tiempo real en lugar de la consulta periódica.
Outlook / Office 365
password (y smtp_password) son secretos:
channels.email.<alias>.passwordes un secreto. Se almacena cifrado, nunca en texto plano enconfig.toml. Configúralo mediante una de estas opciones, que cifran al escribir:
Panel de control del gateway
Abre /config/channels/email y configura allí el campo channels.email.<alias>.password.
zerocode
En el panel Config, configure el campo channels.email.<alias>.password (la entrada está enmascarada).
zeroclaw config
zeroclaw config set channels.email.<alias>.password # solicita entrada enmascarada, almacena cifrado
Gmail Push (gmail_push)
Entrega en tiempo real mediante Google Cloud Pub/Sub, sin sondeo.
excluded_tools
Herramientas excluidas de la especificación de herramientas de este canal. Cuando se establece, estas herramientas no se exponen al modelo al responder a través de este canal.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/gmail_push y configura el campo channels.gmail_push.<alias>.excluded_tools.
zerocode
En el panel Config, configure el campo channels.gmail_push.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.excluded_tools <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__gmail_push__<alias>__excluded_tools=
label_filter
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/gmail_push y configura el campo channels.gmail_push.<alias>.label_filter.
zerocode
En el panel Config, establece el campo channels.gmail_push.<alias>.label_filter.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.label_filter <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__gmail_push__<alias>__label_filter=
oauth_token
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abra /config/channels/gmail_push y configure el campo channels.gmail_push.<alias>.oauth_token.
zerocode
En el panel Config, establece el campo channels.gmail_push.<alias>.oauth_token.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.oauth_token <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__gmail_push__<alias>__oauth_token=
topic*
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/gmail_push y configura el campo channels.gmail_push.<alias>.topic.
zerocode
En el panel Config, establece el campo channels.gmail_push.<alias>.topic.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.topic <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__gmail_push__<alias>__topic=
webhook_secret
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/gmail_push y configura el campo channels.gmail_push.<alias>.webhook_secret.
zerocode
En el panel Config, configura el campo channels.gmail_push.<alias>.webhook_secret.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.webhook_secret <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__gmail_push__<alias>__webhook_secret=
webhook_url
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/gmail_push y configura el campo channels.gmail_push.<alias>.webhook_url.
zerocode
En el panel Config, establece el campo channels.gmail_push.<alias>.webhook_url.
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.webhook_url <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__gmail_push__<alias>__webhook_url=
oauth_token y webhook_secret son secretos:
channels.gmail_push.<alias>.oauth_tokenes un secreto. Se almacena cifrado, nunca en texto plano enconfig.toml. Configúralo mediante una de estas opciones, que cifran al escribir:
Panel de control del gateway
Abre /config/channels/gmail_push y configura allí el campo channels.gmail_push.<alias>.oauth_token.
zerocode
En el panel Config, configura el campo channels.gmail_push.<alias>.oauth_token (la entrada está enmascarada).
zeroclaw config
zeroclaw config set channels.gmail_push.<alias>.oauth_token # solicita entrada enmascarada, almacena cifrado
Configuración
- Crea un proyecto de Google Cloud, habilita la API de Gmail y la API de Pub/Sub
- Crea un tema de Pub/Sub en el que el servicio de Gmail pueda publicar, configúralo como
topic - Autorice el acceso del agente a Gmail y almacene el token resultante mediante la ruta del secreto indicada arriba
- El agente supervisa las notificaciones de correo nuevo y las enruta al agente vinculado
Los envíos salientes siguen realizándose vía SMTP: configure un bloque IMAP+SMTP [channels.email.<alias>].
Hilo de respuestas
Ambos canales de correo electrónico agrupan las respuestas mediante los encabezados In-Reply-To y References, de modo que las conversaciones permanezcan agrupadas en el cliente que utilice el remitente.
Formato del cuerpo de salida
Las respuestas del agente se envían como multipart/alternative con una parte de texto plano y una parte HTML de forma predeterminada. La parte HTML es el cuerpo renderizado desde Markdown; la parte de texto plano es el texto sin procesar del cuerpo. Los clientes de correo que prefieren texto plano seleccionarán automáticamente la alternativa de texto plano.
Para enviar solo texto sin formato (sin parte HTML, para clientes o configuraciones que lo prefieran), establece el campo html_body del canal en false.
Cuando hay archivos adjuntos presentes, las alternativas del cuerpo se incluyen dentro de un multipart/mixed externo.
Manejo de archivos adjuntos
Los archivos adjuntos entrantes se almacenan en <workspace>/attachments/<conversation>/. El agente recibe las rutas de los archivos en su contexto y puede leerlos mediante la herramienta file_read. Los nombres de archivo se obtienen primero del encabezado Content-Disposition y, si no está disponible, del parámetro name de Content-Type.
Los archivos adjuntos salientes se envían a partir de los bytes proporcionados con cada archivo adjunto. El canal Email trata el nombre de archivo del archivo adjunto como metadatos de visualización, no como una ruta local. Las integraciones que envían intencionadamente un archivo local deben validar o restringir la ruta y cargarlo explícitamente con MediaAttachment::from_file antes de enviarlo.
Límites de tasa y volumen
El correo electrónico no está optimizado para la latencia conversacional. Espera:
- Latencia de la encuesta IMAP:
poll_interval_secs(predeterminado 60 s). Reduzca a costa de la carga del servidor; algunos proveedores limitan las encuestas agresivas. - Envío SMTP: sujeto a la cuota diaria de envíos de tu proveedor (Gmail: 500/día para cuentas gratuitas, 2000/día para Workspace).
Seguridad
El correo electrónico no tiene autenticación a nivel de protocolo más allá del sobre de SMTP; cualquiera puede afirmar ser cualquier persona. Restrinja los remitentes entrantes con un grupo de pares (arriba) antes de exponer el agente a una bandeja de entrada que recibe correo público.