Google Chat
Canal de Google Chat: estado de soporte, capacidades y configuración.
Estado: Disponible para DMs y espacios. Integrado via webhooks de Google Chat API (solo HTTP).
Configuración Rápida
1. Crea un proyecto de Google Cloud y habilita Google Chat API:
- Abre: ''Google Chat API Credentials''
- Si aún no está habilitada, habilita la API primero.
2. Crea una Cuenta de Servicio:
- Clic en Create Credentials > Service Account.
- Nómbrala cualquier cosa (ej., openclaw-chat).
- Deja permisos vacíos (clic en Continue).
- Deja principals accesibles vacíos (clic en Done).
3. Crea y descarga JSON Key:
- En la lista de cuentas de servicio, clic en la cuenta que acabas de crear.
- Abre la pestaña Keys.
- Clic en Add Key > Create new key.
- Selecciona JSON y clic en Create.
4. Guarda el archivo JSON descargado en el host del gateway (ej., ~/.openclaw/googlechat-service-account.json).
5. Crea una app de Google Chat en ''Google Cloud Console Chat Configuration'':
- Completa Application info:
- App name: (ej., OpenClaw)
- Avatar URL: (ej., https://openclaw.ai/logo.png)
- Description: (ej., Asistente de IA Personal)
- Habilita Interactive features.
- En Functionality, marca Join spaces and group conversations.
- En Connection settings, selecciona HTTP endpoint URL.
- En Triggers, selecciona Use a common HTTP endpoint URL for all triggers, y configúralo en tu URL pública del gateway + /googlechat.
- Tip: Ejecuta openclaw status para ver tu URL pública del gateway (si está configurada).
- En Visibility, marca Make this Chat app available to specific people and groups in <Tu Dominio>.
- Ingresa tu email en el cuadro de texto (ej., [email protected]).
- Clic en Save al final de la página.
6. Habilita el estado de la App:
- Actualiza la página después de guardar.
- Encuentra App status (usualmente aparece arriba o abajo de la página después de guardar).
- Cambia el estado a Live - available to users.
- Clic en Save de nuevo.
7. Configura la ruta de la cuenta de servicio y el webhook audience en OpenClaw:
- Env: GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/ruta/a/service-account.json
- O config: channels.googlechat.serviceAccountFile: "/ruta/a/service-account.json";.
8. Configura el tipo y valor del webhook audience (debe coincidir con tu configuración de Chat app).
9. Inicia el gateway. Google Chat enviará solicitudes POST a tu ruta de webhook.
Añadir a Google Chat
Cuando el gateway está ejecutándose y tu email está en la lista de visibilidad:
1. Abre ''Google Chat''.
2. Clic en + junto a Direct Messages.
3. Ingresa el App name que configuraste en Google Cloud Console en el cuadro de búsqueda.
- Nota: Esta es una app privada y no aparecerá en la lista de navegación "Marketplace"; solo puedes encontrarla por nombre.
4. Selecciona tu bot de los resultados.
5. Clic en Add o Chat para iniciar una conversación 1:1.
6. Envía "Hola" para probar el disparador.
URL Pública (Solo Webhook)
Los webhooks de Google Chat requieren un endpoint HTTPS accesible públicamente. Por seguridad, solo expón la ruta /googlechat a internet pública. Mantén el dashboard de OpenClaw y otros endpoints sensibles en una red privada.
#
Opción A: Tailscale Funnel (Recomendado)
Usa Tailscale Serve para alojar un dashboard privado, y Funnel para solo exponer la ruta de webhook. Esto mantiene / privado y solo expone /googlechat a internet pública.
1. Verifica la dirección vinculada del gateway:
`bash
ss -tlnp | grep 18789
`
Registra la IP (ej., 127.0.0.1, 0.0.0.0, o IP de Tailscale: 100.x.x.x).
2. Expón dashboard solo a tailnet (puerto 8443):
`bash
# Vincular a localhost (127.0.0.1 o 0.0.0.0):
tailscale serve --bg --https 8443 http://127.0.0.1:18789
# Vincular solo a IP de Tailscale (ej., 100.106.161.80):
tailscale serve --bg --https 8443 http://100.106.161.80:18789
`
3. Expón solo la ruta de webhook a internet pública:
`bash
# Vincular a localhost (127.0.0.1 o 0.0.0.0):
tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat
# Vincular solo a IP de Tailscale (ej., 100.106.161.80):
tailscale funnel --bg --set-path /googlechat http://100.106.161.80:18789/googlechat
`
4. Autoriza Funnel para este nodo:
Si el comando solicita autorización, visita la URL de autorización en la salida para permitir que este nodo use Funnel en la política de tailnet.
`bash
tailscale serve status
tailscale funnel status
`
URL pública de webhook:
https://<node-name>.<tailnet>.ts.net/googlechat
Dashboard privado (solo tailnet):
https://<node-name>.<tailnet>.ts.net:8443/
Usa la URL pública en tu configuración de Google Chat app (sin :8443).
Nota
#
Opción B: Proxy Inverso (Caddy)
Proxy solo rutas específicas:
your-domain.com {
reverse_proxy /googlechat* localhost:18789
}De esta manera tu-dominio.com/ se ignora o devuelve 404, mientras tu-dominio.com/googlechat se reenvía de forma segura a OpenClaw.
#
Opción C: Cloudflare Tunnel
Configura las reglas de ingreso del tunnel para solo enrutar la ruta de webhook:
- Path: /googlechat -> http://localhost:18789/googlechat
- Default Rule: HTTP 404 (Not Found)
Cómo Funciona
1. Google Chat envía un webhook POST al gateway. Cada solicitud incluye Authorization: Bearer <token>.
2. OpenClaw valida el token según el audienceType + audience configurado:
- audienceType: "app-url": audience es tu URL de webhook HTTPS.
- audienceType: "project-number": audience es el número de proyecto Cloud.
3. Los mensajes se enrutan por espacio:
- Los DMs usan clave de sesión ''agent:''.
- Los espacios usan clave de sesión ''agent:''.
4. Los DMs por defecto usan emparejamiento: los remitentes desconocidos reciben un código de emparejamiento; aprueba con:
- ''openclaw pairing approve googlechat ''''
5. Los espacios grupales requieren @mención para responder por defecto. Si la detección de mención requiere el nombre de usuario de la app, configura botUser.
Objetivos de Entrega
Identificadores para entrega y listas permitidas:
- DMs: ''users/'' o ''users/'' (email soportado)
- Espacios: ''spaces/''
Aspectos Destacados de Configuración
{
channels: {
googlechat: {
enabled: true,
serviceAccountFile: "/path/to/service-account.json",
audienceType: "app-url",
audience: "https://gateway.example.com/googlechat",
webhookPath: "/googlechat",
botUser: "users/1234567890",
dm: {
policy: "pairing",
allowFrom: ["users/1234567890", "[email protected]"],
},
groupPolicy: "allowlist",
groups: {
"spaces/AAAA": {
allow: true,
requireMention: true,
users: ["users/1234567890"],
systemPrompt: "Short answers only.",
},
},
actions: { reactions: true },
typingIndicator: "message",
mediaMaxMb: 20,
},
},
}Explicación:
- Las credenciales de cuenta de servicio también pueden proporcionarse en línea como string JSON via serviceAccount.
- Cuando webhookPath no está configurado, por defecto es /googlechat.
- Cuando actions.reactions está habilitado, las reacciones pueden usarse via la herramienta reactions y channels action.
- typingIndicator soporta none, message (predeterminado), reaction (reacción requiere OAuth de usuario).
- Los adjuntos se descargan via Chat API y pasan por el pipeline de medios (tamaño limitado por mediaMaxMb).
Solución de Problemas
#
405 Method Not Allowed
Si Google Cloud Logs Explorer muestra un error como:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowed
Esto generalmente significa que el manejador de webhook no está registrado. Causas comunes:
1. Canal no configurado: channels.googlechat falta en la configuración. Verifica:
__CODE_BLOCK_1__bash
openclaw channels status
`
#
Otros Problemas
- Ejecuta openclaw channels status --probe para verificar errores de autenticación o configuración de audience faltante.
- Si no llegan mensajes, verifica la URL de webhook y suscripciones de eventos de la Chat app.
- Si el bloqueo de mención impide respuestas, configura botUser al nombre de recurso de usuario de la app y verifica requireMention.
- Ejecuta openclaw logs --follow al enviar mensajes de prueba para confirmar que las solicitudes llegan al gateway.
Documentación relacionada:
- ''Configuración de Gateway''
- ''Seguridad''
- ''Reacciones''