Además de los mensajes de texto, las apps de Google Chat pueden crear mensajes de tarjetas en espacios y a usuarios. Las tarjetas admiten un diseño definido, elementos de la IU interactivos, como botones, y rich media, como imágenes.
Usa mensajes de tarjetas para hacer lo siguiente:
- Presenta información detallada
- Recopilar información de los usuarios
- Guía a los usuarios para que realicen el siguiente paso
En esta guía, se describe cómo crear mensajes de tarjetas de forma síncrona (una respuesta en tiempo real a un evento de Google Chat, como recibir un mensaje de un usuario o que se agregue a un espacio) y de forma asíncrona (enviar un mensaje desde la app a un espacio o a un usuario sin un mensaje mediante la API de Google Chat).
Requisitos previos
Para crear los mensajes de tarjeta en esta guía, necesitas lo siguiente:
Node.js
- Una cuenta de Google Workspace con acceso a Google Chat
- Para compilar una app de Chat, sigue esta guía de inicio rápido.
Nota: Las muestras de código de Node.js de esta guía se escriben para ejecutarse como una función de Google Cloud Functions.
Python
- Una cuenta de Google Workspace con acceso a Google Chat
- Para compilar una app de Chat, sigue esta guía de inicio rápido.
Nota: Las muestras de código de Python de esta guía se escriben para ejecutarse como una Google Cloud Function con Python 3.9.
Apps Script
- Una cuenta de Google Workspace con acceso a Google Chat
- Para compilar una app de Chat, sigue esta guía de inicio rápido.
Anatomía del mensaje de una tarjeta
Cada tarjeta, ya sea un diálogo o un mensaje, es un objeto JSON en el recurso spaces.messages
en la API de Google Chat.
El objeto JSON de la tarjeta consta de lo siguiente:
- Es un array llamado
cardsV2[]
que contiene uno o más objetosCardWithId
. - Una
cardId
, que se usa para identificar la tarjeta y su alcance dentro de un mensaje determinado. (Las tarjetas en mensajes diferentes pueden tener el mismo ID). Un objeto
card
, que consta de lo siguiente:- Un objeto
header
que especifica títulos, como un subtítulo y una imagen de estilo avatar - Uno o más objetos
section
que contengan al menos un widget - Uno o más objetos
widget
Cada widget es un objeto compuesto que puede representar texto, imágenes, botones y otros tipos de objetos.
- Un objeto
A modo de ejemplo, observa los objetos header
, section
y widget
en el siguiente mensaje de tarjeta:
El siguiente código representa el JSON del mensaje de la tarjeta:
JSON
{
"cardsV2": [
{
"cardId": "unique-card-id",
"card": {
"header": {
"title": "Sasha",
"subtitle": "Software Engineer",
"imageUrl":
"https://developers.google.com/chat/images/quickstart-app-avatar.png",
"imageType": "CIRCLE",
"imageAltText": "Avatar for Sasha",
},
"sections": [
{
"header": "Contact Info",
"collapsible": true,
"uncollapsibleWidgetsCount": 1,
"widgets": [
{
"decoratedText": {
"startIcon": {
"knownIcon": "EMAIL",
},
"text": "sasha@example.com",
}
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PERSON",
},
"text": "<font color=\"#80e27e\">Online</font>",
},
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PHONE",
},
"text": "+1 (555) 555-1234",
}
},
{
"buttonList": {
"buttons": [
{
"text": "Share",
"onClick": {
"openLink": {
"url": "https://example.com/share",
}
}
},
{
"text": "Edit",
"onClick": {
"action": {
"function": "goToView",
"parameters": [
{
"key": "viewType",
"value": "EDIT",
}
],
}
}
},
],
}
},
],
},
],
},
}
],
}
Cómo crear un mensaje de tarjeta síncrono
En este ejemplo, un usuario crea un mensaje de chat en la app de Chat y la app envía un mensaje de tarjeta síncrona simple que muestra el nombre y la imagen de avatar del remitente:
En las siguientes muestras de código, las apps de Node.js y Python se alojan en Google Cloud Functions. El ejemplo de Apps Script se aloja en Google Apps Script.
Para obtener instrucciones completas sobre cómo compilar y, luego, implementar una app de chat, consulta Cómo compilar una app de chat.
Node.js
Python
Apps Script
Crea un mensaje asíncrono de las tarjetas con la API de Chat
En este ejemplo, se crea un mensaje con la API de Chat de forma asíncrona y se lo envía a un espacio al que se agrega la app de Chat:

Python
- En tu directorio de trabajo, crea un archivo llamado
chat_create_card_message.py
. Incluye el siguiente código en
chat_create_card_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The message to create. body= { 'cardsV2': [{ 'cardId': 'createCardMessage', 'card': { 'header': { 'title': 'A Card Message!', 'subtitle': 'Created with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() print(result)
En el código, reemplaza
SPACE
por un nombre de espacio, que puedes obtener del métodospaces.list()
en la API de Chat o de la URL de un espacio.En tu directorio de trabajo, compila y ejecuta la muestra:
python3 chat_create_card_message.py
Si quieres obtener más información para trabajar con mensajes en la API de Chat, consulta los siguientes vínculos:
Abrir un diálogo
Los diálogos son interfaces basadas en tarjetas y con ventanas que las apps de chat abren para interactuar con los usuarios. Para ayudar a los usuarios a completar procesos de varios pasos, las apps pueden abrir diálogos secuenciales. Las apps pueden abrir diálogos en respuesta a un clic en un botón en un mensaje de tarjeta o en respuesta a un comando de barra.
Los diálogos son útiles para muchos tipos de interacciones del usuario, entre las que se incluyen las siguientes:
- Recopilación de información de los usuarios
- Autentica usuarios con servicios web
- Configura la app de Chat
En este ejemplo, una app de chat abre un diálogo con el fin de ayudar a un usuario a crear un contacto nuevo para su libreta de direcciones:
Para implementar diálogos, consulta Abrir diálogos.
Formato de las tarjetas
Existen varias formas de darle formato a la apariencia de las tarjetas.
Formato de texto para tarjetas
Dentro de las tarjetas, la mayoría de los campos de texto admiten el formato de texto básico mediante un pequeño subconjunto de etiquetas HTML.
En la siguiente tabla, se muestran las etiquetas compatibles y su propósito:
Formato | Ejemplo | Resultado renderizado |
---|---|---|
Negrita | "This is <b>bold</b>." |
Este texto es negrita. |
Cursiva | "This is <i>italics</i>." |
Se trata de cursiva. |
Subrayado | "This is <u>underline</u>." |
Esto es subrayado. |
Tachado | "This is <s>strikethrough</s>." |
Esto es |
Color de fuente | "This is <font color=\"#FF0000\">red font</text>." |
Esta es la fuente roja. |
Hipervínculo | "This is a <a href=\"https://www.google.com\">hyperlink</a>." |
Este es un hipervínculo. |
Tiempo | "This is a time format: <time>2023-02-16 15:00</time>." |
Este es un formato de hora: . |
Nueva línea | "This is the first line. <br> This is a new line. " |
Esta es la primera línea. Esta es una línea nueva. |
Ten en cuenta que el cuerpo del texto de un mensaje básico se analiza con una sintaxis de lenguaje de marcado diferente que está optimizada para usuarios humanos. Para obtener más información, consulta Cómo crear un mensaje de texto.
Íconos integrados
Los widgets DecoratedText
y ButtonList
admiten el elemento icon
que se usa para especificar uno de los íconos integrados disponibles en Google Chat:
{ . . . "knownIcon": "TRAIN", . . . }
En la siguiente tabla, se enumeran los íconos integrados que están disponibles para los mensajes de tarjeta:
AVIÓN | MARCADOR DE MARCADOR | ||
Autobús | AUTO | ||
RELOJ | CONFIRMACIÓN_NUMBER_ICON | ||
DESCRIPTION | MONEDA | ||
CORREO ELECTRÓNICO | ASENO_EVENTO | ||
Vuelo_VALOR | Vuelo_DE | ||
HOTEL | HOTEL_ROOM_TYPE | ||
INVITACIÓN | MAP_PIN | ||
MEMBRESÍA | MULTIPLE_PEOPLE | ||
PERSONA | TELÉFONO | ||
RESTAURANT_ICON | SHOPPING_CART | ||
STAR | TIENDA | ||
BOLETO | ENTRENAMIENTO | ||
CÁMARA DE VIDEO | VIDEO_PLAY |
Íconos personalizados
Los widgets de DecoratedText
y ButtonList
te permiten usar los íconos integrados o definir tus propios íconos personalizados. Para especificar un ícono personalizado, usa el elemento iconUrl
como se muestra a continuación:
{ . . . "iconUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png" . . . }