OpenClawSkills
GitHub
Canales • 5 min de lectura

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).

Tutorial.step

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.

Tutorial.step

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.

Tutorial.step

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.

#

Tutorial.step

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

Nota: Esta configuración persiste entre reinicios. Para eliminar, ejecuta <code>tailscale funnel reset</code> y <code>tailscale serve reset</code>.

#

Tutorial.step

Opción B: Proxy Inverso (Caddy)

Proxy solo rutas específicas:

Caddy
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.

#

Tutorial.step

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)

Tutorial.step

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:'':googlechat:dm:''''.

- Los espacios usan clave de sesión ''agent:'':googlechat:group:''''.

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.

Tutorial.step

Objetivos de Entrega

Identificadores para entrega y listas permitidas:

- DMs: ''users/'''' o ''users/'''' (email soportado)

- Espacios: ''spaces/''''

Tutorial.step

Aspectos Destacados de Configuración

Json5
{
  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).

Tutorial.step

Solución de Problemas

#

Tutorial.step

405 Method Not Allowed

Si Google Cloud Logs Explorer muestra un error como:

Terminal
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

`

#

Tutorial.step

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''