Gmail Pub/Sub -> OpenClaw
Objetivo: vigilancia de Gmail -> push de Pub/Sub ->gog gmail watch serve -> webhook de OpenClaw.
Prereqs
gcloudinstalado e iniciado sesión (guía de instalación).gog(gogcli) instalado y autorizado para la cuenta de Gmail (gogcli.sh).- Hooks de OpenClaw habilitados (ver Webhooks).
tailscalecon sesión iniciada (tailscale.com). La configuración compatible usa Tailscale Funnel para el endpoint HTTPS público. Otros servicios de túnel pueden funcionar, pero son DIY/no compatibles y requieren cableado manual. Por ahora, Tailscale es lo que admitimos.
deliver + opcional channel/to:
channel + to. De lo contrario, channel: "last"
usa la última ruta de entrega (vuelve a WhatsApp).
Para forzar un modelo más económico para ejecuciones de Gmail, establezca model en el mapeo
(provider/model o alias). Si impone agents.defaults.models, inclúyalo allí.
Para establecer un modelo predeterminado y un nivel de razonamiento específicamente para hooks de Gmail, agregue
hooks.gmail.model / hooks.gmail.thinking en su configuración:
model/thinkingpor hook en el mapeo aún sobrescribe estos valores predeterminados.- Orden de respaldo:
hooks.gmail.model→agents.defaults.model.fallbacks→ primario (auth/límites de tasa/timeouts). - Si se establece
agents.defaults.models, el modelo de Gmail debe estar en la lista de permitidos. - El contenido del hook de Gmail se envuelve con límites de seguridad de contenido externo de forma predeterminada.
Para desactivar (peligroso), establezca
hooks.gmail.allowUnsafeExternalContent: true.
hooks.mappings o un módulo de transformación JS/TS
bajo hooks.transformsDir (ver Webhooks).
Asistente (recomendado)
Use el asistente de OpenClaw para conectar todo (instala dependencias en macOS vía brew):- Usa Tailscale Funnel para el endpoint público de push.
- Escribe la configuración
hooks.gmailparaopenclaw webhooks gmail run. - Habilita el preajuste del hook de Gmail (
hooks.presets: ["gmail"]).
tailscale.mode está habilitado, OpenClaw establece automáticamente
hooks.gmail.serve.path en / y mantiene la ruta pública en
hooks.gmail.tailscale.path (predeterminado /gmail-pubsub) porque Tailscale
elimina el prefijo set-path antes de hacer proxy.
Si necesita que el backend reciba la ruta con prefijo, establezca
hooks.gmail.tailscale.target (o --tailscale-target) en una URL completa como
http://127.0.0.1:8788/gmail-pubsub y haga coincidir hooks.gmail.serve.path.
¿Quiere un endpoint personalizado? Use --push-endpoint <url> o --tailscale off.
Nota de plataforma: en macOS el asistente instala gcloud, gogcli y tailscale
mediante Homebrew; en Linux instálelos manualmente primero.
Inicio automático del Gateway (recomendado):
- Cuando se establecen
hooks.enabled=trueyhooks.gmail.account, el Gateway iniciagog gmail watch serveal arrancar y renueva automáticamente la vigilancia. - Establezca
OPENCLAW_SKIP_GMAIL_WATCHER=1para excluirse (útil si ejecuta el daemon usted mismo). - No ejecute el daemon manual al mismo tiempo, o se encontrará con
listen tcp 127.0.0.1:8788: bind: address already in use.
gog gmail watch serve + renovación automática):
Configuración única
- Seleccione el proyecto de GCP que es propietario del cliente OAuth usado por
gog.
- Habilite las APIs:
- Cree un tema:
- Permita que el push de Gmail publique:
Iniciar la vigilancia
history_id de la salida (para depuración).
Ejecutar el manejador de push
Ejemplo local (auth con token compartido):--tokenprotege el endpoint de push (x-gog-tokeno?token=).--hook-urlapunta a OpenClaw/hooks/gmail(mapeado; ejecución aislada + resumen al principal).--include-bodyy--max-bytescontrolan el fragmento del cuerpo enviado a OpenClaw.
openclaw webhooks gmail run envuelve el mismo flujo y renueva automáticamente la vigilancia.
Exponer el manejador (avanzado, no compatible)
Si necesita un túnel que no sea Tailscale, conéctelo manualmente y use la URL pública en la suscripción de push (no compatible, sin protecciones):Prueba
Envíe un mensaje a la bandeja de entrada vigilada:Solución de problemas
Invalid topicName: discrepancia de proyecto (el tema no está en el proyecto del cliente OAuth).User not authorized: faltaroles/pubsub.publisheren el tema.- Mensajes vacíos: el push de Gmail solo proporciona
historyId; obtenga los datos mediantegog gmail history.