En esta página, se describe cómo configurar un webhook para enviar mensajes asíncronos a un espacio de Chat con activadores externos. Por ejemplo, puedes configurar una aplicación de supervisión para notificar al personal de guardia en Chat cuando se cae un servidor. Para enviar un mensaje síncrono con una app de chat, consulta Cómo enviar un mensaje.
Con este tipo de diseño de arquitectura, los usuarios no pueden interactuar con el webhook ni con la aplicación externa conectada porque la comunicación es unidireccional. Los webhooks no son conversacionales. No pueden responder ni recibir mensajes de los usuarios ni de los eventos de interacción de la app de Chat. Para responder mensajes, compila una app de Chat en lugar de un webhook.
Si bien un webhook no es técnicamente una app de Chat (los webhooks conectan aplicaciones con solicitudes HTTP estándar), en esta página se lo denomina app de Chat para simplificar. Cada webhook solo funciona en el espacio de Chat en el que está registrado. Los webhooks entrantes funcionan en los mensajes directos, pero solo cuando todos los usuarios tienen las apps de Chat habilitadas. No puedes publicar webhooks en Google Workspace Marketplace.
En el siguiente diagrama, se muestra la arquitectura de un webhook conectado a Chat:
En el diagrama anterior, una app de chat tiene el siguiente flujo de información:
- La lógica de la app de Chat recibe información de servicios externos de terceros, como un sistema de administración de proyectos o una herramienta de generación de tickets.
- La lógica de la app de Chat se aloja en un sistema local o en la nube que puede enviar mensajes mediante una URL de webhook a un espacio de Chat específico.
- Los usuarios pueden recibir mensajes de la app de Chat en ese espacio específico, pero no pueden interactuar con ella.
Requisitos previos
Python
- Una cuenta de Google Workspace para empresas o empresas con acceso a Google Chat Tu organización de Google Workspace debe permitir que los usuarios agreguen y usen webhooks entrantes.
- Python 3.6 o una versión posterior
- La herramienta de administración de paquetes pip
La biblioteca
httplib2
Para instalar la biblioteca, ejecuta el siguiente comando en la interfaz de línea de comandos:pip install httplib2
Un espacio de Google Chat Para crear uno con la API de Google Chat, consulta Cómo crear un espacio. Para crear uno en Chat, visita la documentación del Centro de ayuda.
Node.js
- Una cuenta de Google Workspace para empresas o empresas con acceso a Google Chat Tu organización de Google Workspace debe permitir que los usuarios agreguen y usen webhooks entrantes.
- Node.js 14 o versiones posteriores
- La herramienta de administración de paquetes npm
- Un espacio de Google Chat Para crear uno con la API de Google Chat, consulta Crea un espacio. Para crear uno en Chat, visita la documentación del Centro de ayuda.
Java
- Una cuenta de Google Workspace para empresas o empresas con acceso a Google Chat Tu organización de Google Workspace debe permitir que los usuarios agreguen y usen webhooks entrantes.
- Java 11 o superior
- La herramienta de administración de paquetes Maven
- Un espacio de Google Chat Para crear uno con la API de Google Chat, consulta Crea un espacio. Para crear uno en Chat, visita la documentación del Centro de ayuda.
Apps Script
- Una cuenta de Google Workspace para empresas o empresas con acceso a Google Chat Tu organización de Google Workspace debe permitir que los usuarios agreguen y usen webhooks entrantes.
- Crea un proyecto independiente de Apps Script y activa el servicio de Chat avanzado.
- Un espacio de Google Chat Para crear uno con la API de Google Chat, consulta Crea un espacio. Para crear uno en Chat, visita la documentación del Centro de ayuda.
Crea un webhook
Para crear un webhook, regístralo en el espacio de Chat en el que deseas recibir mensajes y, luego, escribe una secuencia de comandos que envíe mensajes.
Registra el webhook entrante
- En un navegador, abre Chat. Los webhooks no se pueden configurar desde la app de Chat para dispositivos móviles.
- Ve al espacio en el que deseas agregar un webhook.
- Junto al título del espacio, haz clic en la flecha para expandir más y, luego, en Apps y integraciones.
Haz clic en
Agregar webhooks.En el campo Nombre, ingresa
Quickstart Webhook
.En el campo Avatar URL, ingresa
https://developers.google.com/chat/images/chat-product-icon.png
.Haz clic en Guardar.
Para copiar la URL del webhook, haz clic en
Más y, luego, en Copiar vínculo.
Escribe la secuencia de comandos del webhook
La secuencia de comandos de webhook de ejemplo envía un mensaje al espacio en el que se registró el webhook mediante el envío de una solicitud POST
a la URL del webhook. La API de Chat responde con una instancia de Message
.
Selecciona un idioma para aprender a crear una secuencia de comandos de webhook:
Python
En tu directorio de trabajo, crea un archivo llamado
quickstart.py
.En
quickstart.py
, pega el siguiente código:Reemplaza el valor de la variable
url
por la URL del webhook que copiaste cuando lo registraste.
Node.js
En tu directorio de trabajo, crea un archivo llamado
index.js
.En
index.js
, pega el siguiente código:Reemplaza el valor de la variable
url
por la URL del webhook que copiaste cuando lo registraste.
Java
En tu directorio de trabajo, crea un archivo llamado
pom.xml
.En
pom.xml
, copia y pega lo siguiente:En tu directorio de trabajo, crea la siguiente estructura de directorio
src/main/java
.En el directorio
src/main/java
, crea un archivo llamadoApp.java
.En
App.java
, pega el siguiente código:Reemplaza el valor de la variable
URL
por la URL del webhook que copiaste cuando lo registraste.
Apps Script
En un navegador, ve a Apps Script.
Haz clic en New Project.
Pega el siguiente código:
Reemplaza el valor de la variable
url
por la URL del webhook que copiaste cuando lo registraste.
Ejecuta la secuencia de comandos del webhook
En una CLI, ejecuta la secuencia de comandos:
Python
python3 quickstart.py
Node.js
node index.js
Java
mvn compile exec:java -Dexec.mainClass=App
Apps Script
- Haz clic en Ejecutar.
Cuando ejecutas el código, el webhook envía un mensaje al espacio en el que lo registraste.
Cómo iniciar o responder una conversación de mensajes
Especifica
spaces.messages.thread.threadKey
como parte del cuerpo de la solicitud de mensaje. Según si inicias o respondes una conversación, usa los siguientes valores parathreadKey
:Si inicias un subproceso, establece
threadKey
en una cadena arbitraria, pero toma nota de este valor para publicar una respuesta en el subproceso.Si respondes a una conversación, especifica el
threadKey
que se configuró cuando se inició la conversación. Por ejemplo, para publicar una respuesta en la conversación en la que el mensaje inicial usóMY-THREAD
, configuraMY-THREAD
.
Define el comportamiento del subproceso si no se encuentra el
threadKey
especificado:Responder una conversación o iniciar una nueva Agrega el parámetro
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
a la URL del webhook. Si pasas este parámetro de URL, Chat buscará un subproceso existente con elthreadKey
especificado. Si se encuentra una, el mensaje se publica como respuesta a esa conversación. Si no se encuentra ninguno, el mensaje inicia una conversación nueva correspondiente a esethreadKey
.Responde una conversación o no hagas nada. Agrega el parámetro
messageReplyOption=REPLY_MESSAGE_OR_FAIL
a la URL del webhook. Si pasas este parámetro de URL, Chat buscará un subproceso existente con elthreadKey
especificado. Si se encuentra una, el mensaje se publica como respuesta a esa conversación. Si no se encuentra ninguno, no se envía el mensaje.
Para obtener más información, consulta
messageReplyOption
.
En la siguiente muestra de código, se inicia o se responde una conversación:
Python
Node.js
Apps Script
Cómo solucionar errores
Las solicitudes de webhook pueden fallar por varios motivos, entre los que se incluyen los siguientes:
- Solicitud no válida.
- Se borra el webhook o el espacio que lo aloja.
- Problemas intermitentes, como conectividad de red o límites de cuota
Cuando crees tu webhook, debes controlar los errores de la siguiente manera:
- Registrar el error
- En el caso de los errores de tiempo, cuota o conectividad de red, reintenta la solicitud con una retirada exponencial.
- No hacer nada, lo cual es adecuado si no es importante enviar el mensaje del webhook.
La API de Google Chat muestra los errores como un google.rpc.Status
, que incluye un error HTTP code
que indica el tipo de error que se encontró: un error del cliente (serie 400) o un error del servidor (serie 500). Para revisar todas las asignaciones de HTTP, consulta google.rpc.Code
.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
Para aprender a interpretar los códigos de estado HTTP y controlar los errores, consulta Errores.
Limitaciones y consideraciones
- Cuando creas un mensaje con un webhook en la API de Google Chat, la respuesta no contiene el mensaje completo.
La respuesta solo propaga los campos
name
ythread.name
. - Los webhooks están sujetos al límite de 60 consultas por
spaces.messages.create
por espacio por 60 segundos, que se comparte entre todas las apps de Chat del espacio. Para obtener más información sobre las cuotas de la API de Chat, consulta Límites de uso.
Temas relacionados
- Elige una arquitectura de app de Chat
- Cómo enviar mensajes de tarjetas
- Cómo darles formato a los mensajes