Google Chat
Google Chat (API de Chat)
Sección titulada «Google Chat (API de Chat)»Estado: listo para mensajes directos y espacios a través de los webhooks de la API de Google Chat (solo HTTP).
Configuración rápida (principiante)
Sección titulada «Configuración rápida (principiante)»- Crea un proyecto de Google Cloud y habilita la Google Chat API.
- Vaya a: Credenciales de la API de Google Chat
- Habilita la API si aún no está habilitada.
- Crea una Cuenta de servicio:
- Presiona Crear credenciales > Cuenta de servicio.
- Ponle el nombre que quieras (ej.,
openclaw-chat). - Deja los permisos en blanco (presiona Continuar).
- Deja los principales con acceso en blanco (presiona Listo).
- Crea y descarga la Clave JSON:
- En la lista de cuentas de servicio, haz clic en la que acabas de crear.
- Ve a la pestaña Claves.
- Haz clic en Agregar clave > Crear nueva clave.
- Selecciona JSON y presiona Crear.
- Almacena el archivo JSON descargado en tu host de puerta de enlace (ej.,
~/.openclaw/googlechat-service-account.json). - Cree una aplicación de Google Chat en la Configuración de Chat de Google Cloud Console:
- Rellena la Información de la aplicación:
- Nombre de la aplicación: (ej.
OpenClaw) - URL del avatar: (ej.
https://openclaw.ai/logo.png) - Descripción: (ej.
Personal AI Assistant)
- Nombre de la aplicación: (ej.
- Habilita Características interactivas.
- En Funcionalidad, marca Unirse a espacios y conversaciones en grupo.
- En Configuración de conexión, selecciona URL del endpoint HTTP.
- En Disparadores, selecciona Usar una URL de endpoint HTTP común para todos los disparadores y configúrala con la URL pública de tu puerta de enlace seguida de
/googlechat.- Consejo: Ejecuta
openclaw statuspara encontrar la URL pública de tu puerta de enlace.
- Consejo: Ejecuta
- En Visibilidad, marca Hacer disponible esta aplicación de Chat para personas y grupos específicos en <Tu Dominio>.
- Introduce tu dirección de correo electrónico (ej.
[email protected]) en el cuadro de texto. - Haz clic en Guardar en la parte inferior.
- Rellena la Información de la aplicación:
- Habilitar el estado de la aplicación:
- Después de guardar, actualiza la página.
- Busca la sección Estado de la aplicación (generalmente cerca de la parte superior o inferior después de guardar).
- Cambia el estado a En vivo - disponible para los usuarios.
- Haz clic en Guardar de nuevo.
- Configure OpenClaw con la ruta de la cuenta de servicio + audiencia del webhook:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - O config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Env:
- Establezca el tipo + valor de audiencia del webhook (coincide con la configuración de su aplicación de Chat).
- Inicie la puerta de enlace. Google Chat enviará un POST a la ruta de su webhook.
Añadir a Google Chat
Sección titulada «Añadir a Google Chat»Una vez que la puerta de enlace se esté ejecutando y su correo electrónico se haya añadido a la lista de visibilidad:
- Vaya a Google Chat.
- Haga clic en el icono + (más) junto a Mensajes directos.
- En la barra de búsqueda (donde normalmente añade personas), escriba el Nombre de la aplicación que configuró en Google Cloud Console.
- Nota: El bot no aparecerá en la lista de navegación del “Marketplace” porque es una aplicación privada. Debe buscarlo por nombre.
- Seleccione su bot de los resultados.
- Haga clic en Añadir o Chat para iniciar una conversación 1:1.
- Envíe “Hello” para activar el asistente.
URL pública (Solo webhook)
Sección titulada «URL pública (Solo webhook)»Los webhooks de Google Chat requieren un punto de conexión HTTPS público. Por seguridad, exponga solo la ruta /googlechat a Internet. Mantenga el panel de OpenClaw y otros puntos de conexión sensibles en su red privada.
Opción A: Tailscale Funnel (Recomendado)
Sección titulada «Opción A: Tailscale Funnel (Recomendado)»Use Tailscale Serve para el panel privado y Funnel para la ruta pública del webhook. Esto mantiene / privado mientras expone solo /googlechat.
-
Compruebe a qué dirección está vinculada su puerta de enlace:
Ventana de terminal ss -tlnp | grep 18789Note la dirección IP (por ejemplo,
127.0.0.1,0.0.0.0, o su IP de Tailscale como100.x.x.x). -
Exponga el panel solo a la tailnet (puerto 8443):
Ventana de terminal # If bound to localhost (127.0.0.1 or 0.0.0.0):tailscale serve --bg --https 8443 http://127.0.0.1:18789# If bound to Tailscale IP only (e.g., 100.106.161.80):tailscale serve --bg --https 8443 http://100.106.161.80:18789 -
Exponga solo la ruta del webhook públicamente:
Ventana de terminal # If bound to localhost (127.0.0.1 or 0.0.0.0):tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat# If bound to Tailscale IP only (e.g., 100.106.161.80):tailscale funnel --bg --set-path /googlechat http://100.106.161.80:18789/googlechat -
Autorice el nodo para el acceso Funnel: Si se le solicita, visite la URL de autorización que se muestra en la salida para habilitar Funnel para este nodo en su política de tailnet.
-
Verifique la configuración:
Ventana de terminal tailscale serve statustailscale funnel status
Su URL pública de webhook será:
https://<node-name>.<tailnet>.ts.net/googlechat
Su panel privado permanece solo en la tailnet:
https://<node-name>.<tailnet>.ts.net:8443/
Use la URL pública (sin :8443) en la configuración de la aplicación de Google Chat.
Nota: Esta configuración persiste tras los reinicios. Para eliminarla más tarde, ejecute
tailscale funnel resetytailscale serve reset.
Opción B: Proxy inverso (Caddy)
Sección titulada «Opción B: Proxy inverso (Caddy)»Si utiliza un proxy inverso como Caddy, haga proxy solo de la ruta específica:
your-domain.com { reverse_proxy /googlechat* localhost:18789}Con esta configuración, cualquier solicitud a your-domain.com/ se ignorará o devolverá como 404, mientras que your-domain.com/googlechat se enruta de forma segura a OpenClaw.
Opción C: Cloudflare Tunnel
Sección titulada «Opción C: Cloudflare Tunnel»Configure las reglas de ingreso de su túnel para enrutar solo la ruta del webhook:
- Ruta:
/googlechat->http://localhost:18789/googlechat - Regla predeterminada: HTTP 404 (No encontrado)
Cómo funciona
Sección titulada «Cómo funciona»- Google Chat envía webhooks POST a la puerta de enlace. Cada solicitud incluye un encabezado
Authorization: Bearer <token>.- OpenClaw verifica la autenticación del portador antes de leer/analizar los cuerpos completos de los webhooks cuando el encabezado está presente.
- Las solicitudes del complemento de Google Workspace que llevan
authorizationEventObject.systemIdTokenen el cuerpo son compatibles con un presupuesto de cuerpo previo a la autenticación más estricto.
- OpenClaw verifica el token contra el
audienceType+audienceconfigurado:audienceType: "app-url"→ la audiencia es su URL de webhook HTTPS.audienceType: "project-number"→ la audiencia es el número de proyecto de Cloud.
- Los mensajes se enrutan por espacio:
- Los MD usan la clave de sesión
agent:<agentId>:googlechat:direct:<spaceId>. - Los espacios usan la clave de sesión
agent:<agentId>:googlechat:group:<spaceId>.
- Los MD usan la clave de sesión
- El acceso a MD es por emparejamiento por defecto. Los remitentes desconocidos reciben un código de emparejamiento; apruébelo con:
openclaw pairing approve googlechat <code>
- Los espacios de grupo requieren una mención @- por defecto. Use
botUsersi la detección de menciones necesita el nombre de usuario de la aplicación.
Objetivos
Sección titulada «Objetivos»Use estos identificadores para la entrega y las listas de permitidos:
- Mensajes directos:
users/<userId>(recomendado). - El correo electrónico sin formato
[email protected]es mutable y solo se usa para la coincidencia directa de la lista de permitidos cuandochannels.googlechat.dangerouslyAllowNameMatching: true. - Obsoleto:
users/<email>se trata como un id de usuario, no como una lista de permitidos de correo electrónico. - Espacios:
spaces/<spaceId>.
Aspectos destacados de la configuración
Sección titulada «Aspectos destacados de la configuración»{ channels: { googlechat: { enabled: true, serviceAccountFile: "/path/to/service-account.json", // or serviceAccountRef: { source: "file", provider: "filemain", id: "/channels/googlechat/serviceAccount" } audienceType: "app-url", audience: "https://gateway.example.com/googlechat", webhookPath: "/googlechat", botUser: "users/1234567890", // optional; helps mention detection dm: { policy: "pairing", allowFrom: ["users/1234567890"], }, groupPolicy: "allowlist", groups: { "spaces/AAAA": { allow: true, requireMention: true, users: ["users/1234567890"], systemPrompt: "Short answers only.", }, }, actions: { reactions: true }, typingIndicator: "message", mediaMaxMb: 20, }, },}Notas:
- Las credenciales de la cuenta de servicio también se pueden pasar en línea con
serviceAccount(cadena JSON). serviceAccountReftambién es compatible (env/archivo SecretRef), incluidas las referencias por cuenta bajochannels.googlechat.accounts.<id>.serviceAccountRef.- La ruta de webhook predeterminada es
/googlechatsi no se establecewebhookPath. dangerouslyAllowNameMatchingvuelve a habilitar la coincidencia de entidades de email mutables para listas de permitidos (modo de compatibilidad de emergencia).- Las reacciones están disponibles a través de la herramienta
reactionsychannels actioncuandoactions.reactionsestá habilitado. - Las acciones de mensaje exponen
sendpara texto yupload-filepara envíos explícitos de adjuntos.upload-fileaceptamedia/filePath/pathmás opcionalesmessage,filename, y orientación de hilos. typingIndicatoradmitenone,message(predeterminado) yreaction(reaction requiere OAuth de usuario).- Los adjuntos se descargan a través de la API de Chat y se almacenan en la canalización de medios (el tamaño está limitado por
mediaMaxMb).
Detalles de referencia de secretos: Gestión de secretos.
Solución de problemas
Sección titulada «Solución de problemas»405 Método no permitido
Sección titulada «405 Método no permitido»Si el Explorador de registros de Google Cloud muestra errores como:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not AllowedEsto significa que el controlador de webhook no está registrado. Causas comunes:
-
Canal no configurado: Falta la sección
channels.googlechaten su configuración. Verifíquelo con:Ventana de terminal openclaw config get channels.googlechatSi devuelve “Ruta de configuración no encontrada”, agregue la configuración (consulte Aspectos destacados de la configuración).
-
Complemento no habilitado: Verifique el estado del complemento:
Ventana de terminal openclaw plugins list | grep googlechatSi muestra “deshabilitado”, agregue
plugins.entries.googlechat.enabled: truea su configuración. -
Puerta de enlace no reiniciada: Después de agregar la configuración, reinicie la puerta de enlace:
Ventana de terminal openclaw gateway restart
Verifique que el canal se esté ejecutando:
openclaw channels status# Should show: Google Chat default: enabled, configured, ...Otros problemas
Sección titulada «Otros problemas»- Verifique
openclaw channels status --probepara ver si hay errores de autenticación o falta de configuración de audiencia. - Si no llega ningún mensaje, confirme la URL del webhook de la aplicación de Chat + las suscripciones de eventos.
- Si el bloqueo de menciones impide las respuestas, configure
botUseren el nombre del recurso de usuario de la aplicación y verifiquerequireMention. - Use
openclaw logs --followmientras envía un mensaje de prueba para ver si las solicitudes llegan a la puerta de enlace.
Documentos relacionados:
Relacionado
Sección titulada «Relacionado»- Resumen de canales — todos los canales compatibles
- Emparejamiento — autenticación de MD y flujo de emparejamiento
- Grupos — comportamiento del chat de grupo y control de menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y fortalecimiento