En esta página, se describe cómo tu app de Google Chat puede recibir interacciones del usuario y responder a ellas en Google Chat.
Para compilar interfaces interactivas para apps de Chat, usa los siguientes componentes:
- Activadores: Son las formas en que los usuarios de Google Chat pueden invocar una app de Chat, por ejemplo, agregándola a un espacio o enviándole un mensaje.
- Objetos de eventos: Son los datos que las apps de Chat reciben de los activadores o las interacciones de la IU.
- Acciones: Son las formas en que las apps de Chat pueden responder a las interacciones, como enviar mensajes o devolver una interfaz de usuario basada en tarjetas.
Las apps de chat pueden compilar y mostrar interfaces de las siguientes maneras:
- Mensajes que pueden contener texto, tarjetas estáticas o interactivas, y botones de accesorios
- Páginas principales (página principal de la app) que aparecen en la pestaña Página principal de los mensajes directos 1:1 con la app de Chat
- Diálogos, que son tarjetas que se abren en una ventana nueva y, por lo general, les solicitan a los usuarios que envíen información
- Las vistas previas de vínculos, que son tarjetas que muestran información previa sobre un servicio externo
Requisitos previos
- Una cuenta de Google Workspace para empresas o Enterprise con acceso a Google Chat
- Crea un proyecto de Google Cloud
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat.
Cómo funcionan las interacciones del usuario
Cuando un usuario interactúa con una app de Chat, Google Chat invoca un activador configurado y envía un objeto de evento al extremo o la función de tu app de Chat. Tu app de Chat procesa el objeto de evento y puede devolver una acción de forma síncrona en un plazo de 30 segundos o responder de forma asíncrona con la API de Chat.
En el siguiente diagrama, se muestra cómo las apps de Google Chat procesan las interacciones del usuario y responden a ellas:
Activadores
Los activadores son las formas específicas en que los usuarios invocan una app de Chat con la IU de Chat, como usar @menciones o comandos de la app.
En la siguiente tabla, se muestran los activadores de Chat, una descripción y cómo suelen responder las apps de Chat:
| Activador | Descripción | Respuesta típica |
|---|---|---|
| Se agregó al espacio |
Un usuario agrega la app de Chat a un espacio, o un administrador de Google Workspace instala la app de Chat en espacios de mensajes directos para los usuarios de su organización. Para obtener información sobre las apps de Chat que instalaron los administradores, consulta Cómo instalar apps de Marketplace en tu dominio en la documentación del Centro de ayuda para administradores de Google Workspace. |
La app de Chat envía un mensaje de incorporación que explica lo que hace y cómo pueden interactuar con ella los usuarios del espacio. |
| Mensaje |
Un usuario interactúa con la app de Chat en un mensaje de una de las siguientes maneras:
|
La app de Chat responde en función del contenido del mensaje. Por ejemplo, una app de Chat responde con un mensaje, adjunta una tarjeta de vista previa del vínculo o sugiere elementos en un menú de selección múltiple. |
| Se quitó del espacio |
Un usuario quita la app de Chat de un espacio, o un administrador de Google Workspace desinstala la app de Chat para un usuario de su organización. Los usuarios no pueden quitar las apps de Chat que instaló su administrador. Si un usuario instaló la app de Chat anteriormente, esta permanecerá instalada independientemente de si un administrador de Google Workspace intenta desinstalarla. |
La app de Chat quita las notificaciones entrantes configuradas para el espacio (como borrar un webhook) y borra el almacenamiento interno. Las apps de chat no pueden responder con mensajes a este activador porque ya no son miembros del espacio. |
| Comando de la app |
Un usuario invoca un comando de app de Chat (como un comando de barra, un comando rápido o una acción de mensaje). |
La app de Chat responde al comando. Por ejemplo, responde con un mensaje o abre un diálogo. |
| Página principal de la app |
Un usuario abre la pestaña Página principal en un espacio de mensaje directo (MD) 1:1 con la app de Chat o interactúa con un widget en la tarjeta de la página principal. |
La app de Chat devuelve un objeto RenderActions que envía una tarjeta de página principal (pushCard) o actualiza la tarjeta de página principal que se muestra (updateCard).
|
Configura los extremos o las funciones de devolución de llamada para estos activadores en la página Configuración de la API de Chat en la consola de Google Cloud. Para obtener instrucciones paso a paso, consulta Cómo configurar la API de Google Chat.
Cómo configurar instrucciones de inicio
Las instrucciones de inicio ayudan a los usuarios a descubrir la funcionalidad de tu app de Chat cuando abren un mensaje directo 1:1 vacío con tu app. Puedes configurar hasta tres instrucciones de inicio.
Para agregar y configurar mensajes iniciales, haz lo siguiente:
En la consola de Google Cloud, ve a la página Configuración de la API de Chat:
En Funciones interactivas, busca Sugerencias iniciales y haz clic en Agregar una sugerencia.
En el campo Clasificación (1 a 3), ingresa un número del
1al3para especificar el orden de visualización.En Selección de tipo, elige cómo se comportará la instrucción:
- Instrucción de texto: Cuando el usuario hace clic en el chip de instrucciones, se completa la barra para escribir con texto predefinido.
- Símbolo del sistema: Ejecuta un comando de barra o un comando rápido registrado cuando se hace clic. No se pueden seleccionar los comandos que requieren argumentos adicionales.
Configura la instrucción según el tipo que seleccionaste:
Si seleccionaste Instrucción de texto, haz lo siguiente:
- En Título, ingresa el título de la instrucción que se muestra en el chip (hasta 30 caracteres).
- En Texto de la instrucción, ingresa el texto que se completó en la barra para escribir (hasta 60 caracteres).
- Opcional: Agrega títulos y texto localizados para los usuarios en otros idiomas:
- En Mensajes localizados, haz clic en Agregar un idioma.
- En Idioma, selecciona un idioma admitido en el menú desplegable.
- En Localized Title, ingresa el título localizado (hasta 30 caracteres).
- En Localized Prompt text, ingresa el texto localizado de la instrucción (hasta 60 caracteres).
- Repite el proceso para agregar más idiomas según sea necesario.
Si seleccionaste Símbolo del sistema, haz lo siguiente:
- En Comando de barra / Comando rápido, selecciona el comando en el menú desplegable.
Haz clic en Listo y, luego, en Guardar en la parte inferior de la página.
Controla los reintentos de llamadas HTTP a tu servicio
Si falla una solicitud HTTPS a tu servicio (por ejemplo, si se agota el tiempo de espera, se produce una falla temporal en la red o se devuelve un código de estado HTTPS que no es 2xx), es posible que Google Chat vuelva a intentar la entrega varias veces en unos minutos (pero esto no está garantizado). Como resultado, una app de chat podría recibir el mismo evento varias veces en ciertas situaciones. Si la solicitud se completa correctamente, pero devuelve una carga útil de respuesta no válida, Google Chat no vuelve a intentarla.
Objetos de eventos
Las apps de Chat reciben objetos de eventos cuando se ejecuta un activador de Chat o cuando los usuarios de Chat interactúan con una IU de la app de Chat (por ejemplo, cuando hacen clic en un botón o envían un diálogo). El objeto de evento te permite usar datos de interacción para responder o actualizar una IU.
Cargas útiles de objetos de eventos
Cada objeto de evento de chat incluye un objeto commonEventObject con detalles del host y la plataforma (hostApp: "CHAT", clientPlatform, userLocale, userTimezone, parameters y formInputs) y un objeto chat que contiene contexto específico del chat:
- Para un activador de página principal de la app (cuando un usuario abre la pestaña Página principal en un mensaje directo 1:1 con la app de Chat), el objeto
chatcontienechat.userychat.eventTimesin un campo de uniónpayload. Cuando un usuario hace clic en un botón de la tarjeta de la página principal, el objeto de evento incluyechat.buttonClickedPayloadjunto concommonEventObject.parameters(ycommonEventObject.formInputssi la tarjeta contiene entradas de formulario). - En el caso de las interacciones de espacio y mensajes (Se agregó al espacio, Mensaje, Se quitó del espacio, Comando de la app o interacciones de botones y widgets), el objeto
chatincluyechat.user,chat.space,chat.eventTimey la carga útil de interacción correspondiente:messagePayload: Contiene los camposspace,messageyconfigCompleteRedirectUricuando un usuario envía un mensaje.addedToSpacePayload: Contienespace,interactionAddyconfigCompleteRedirectUricuando se agrega la app de Chat a un espacio.removedFromSpacePayload: Contiene elspacecuando se quita la app de Chat de un espacio.buttonClickedPayload: Contienespace,message,isDialogEventydialogEventTypecuando un usuario hace clic en un botón de una tarjeta o un diálogo.widgetUpdatedPayload: Contiene elspacecuando un usuario interactúa con un widget, por ejemplo, cuando escribe en un menú de selección múltiple con una fuente de datos externa.appCommandPayload: Contienespace,message,appCommandMetadata,isDialogEvent,dialogEventTypeyconfigCompleteRedirectUricuando un usuario invoca un comando de la app.
Para obtener información sobre los objetos de eventos de complementos en Chat y otras aplicaciones de Google Workspace, consulta Objetos de eventos.
Cómo entregar una respuesta
En esta sección, se explica cómo las apps de Chat usan acciones para responder de forma síncrona a las interacciones del usuario.
Para responder con una acción, una app de Chat debe hacerlo en un plazo de 30 segundos, y la respuesta debe aplicarse al espacio en el que ocurrió la interacción. Estas respuestas síncronas no requieren autenticación. Si tu app de Chat necesita más de 30 segundos o debe actuar fuera del espacio, configura la autenticación y responde de forma asíncrona con la API de Google Chat.
Para responder a las interacciones del usuario de forma síncrona, tu app de chat controla el objeto de evento entrante y devuelve uno de los siguientes objetos JSON:
DataActions: Crea o actualiza mensajes de chat (CreateMessageAction,UpdateMessageAction) o adjunta vistas previas de vínculos (UpdateInlinePreviewAction) conchatDataActionMarkup.RenderActions: Crea, actualiza o cierra una página principal o un diálogo (pushCard,updateCard,endNavigation: "CLOSE_DIALOG"), o bien proporciona sugerencias de entrada dinámicas para un menú de selección múltiple (modifyCard).AuthorizationError: Muestra a los usuarios una tarjeta de autorización básica (basic_authorization_prompt) para acceder a un servicio externo o autenticarse en él.
En la siguiente tabla, se muestra cómo las apps de Chat pueden responder con acciones. Las apps de Chat pueden devolver objetos JSON directamente o compilar la respuesta con AddOnResponseService y CardService de Apps Script.
| Respuesta de la app de chat | Acción requerida para devolver (JSON) | Acción obligatoria para devolver (Apps Script) |
|---|---|---|
| Enviar un mensaje o actualizar un mensaje | DataActions (createMessageAction u updateMessageAction) |
DataActionsResponse |
| Vistas previas de vínculos en los mensajes que los usuarios de Chat envían en un espacio | DataActions (updateInlinePreviewAction) |
DataActionsResponse |
| Renderizar o actualizar una página principal en la pestaña Principal de un mensaje directo | RenderActions (pushCard u updateCard) |
ActionResponse |
| Abrir, actualizar o cerrar un diálogo | RenderActions (pushCard, updateCard o endNavigation: "CLOSE_DIALOG") |
ActionResponse |
| Para recopilar información de una tarjeta o un diálogo, sugiere elementos de selección según lo que los usuarios escriban en un menú de selección múltiple. | RenderActions (modifyCard) |
ActionResponse |
| Solicita la configuración o autorización para un servicio externo. | AuthorizationError (basic_authorization_prompt) |
AuthorizationException |
Responder con un mensaje
Las apps de chat pueden responder con un mensaje a cualquiera de los siguientes activadores o interacciones:
- Activadores de mensajes, como cuando los usuarios @mencionan o envían mensajes directos a una app de Chat
- Activadores de agregado al espacio, como cuando los usuarios instalan la app de Chat desde Google Workspace Marketplace o la agregan a un espacio
- Activadores de comandos de la app, como cuando los usuarios invocan un comando de barra o un comando rápido
- Son los clics en botones de tarjetas en mensajes o diálogos. Por ejemplo, cuando los usuarios ingresan información y hacen clic en enviar.
Las apps de chat pueden incluir cualquiera de los siguientes elementos en un mensaje:
- Texto que contiene hipervínculos, menciones con @ y emojis. Consulta Cómo darles formato a los mensajes.
- Una o más tarjetas, que pueden aparecer en un mensaje o abrirse en una ventana nueva como un diálogo. Consulta Crea tarjetas para las apps de Google Chat.
- Uno o más widgets de accesorio, que son botones que aparecen después de cualquier texto o tarjeta en un mensaje.
Para responder con un mensaje, devuelve DataActions con un objeto CreateMessageAction:
{
"hostAppDataAction": {
"chatDataAction": {
"createMessageAction": {
"message": <var>MESSAGE</var>
}
}
}
}
Reemplaza MESSAGE por un recurso Message de la API de Chat.
En el siguiente ejemplo, una app de Chat crea y envía un mensaje de texto de incorporación cada vez que se agrega a un espacio en respuesta al activador Added to space con DataActions:
Node.js
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} req The request object from Google Chat.
* @param {Object} res The response object from the Chat app.
*/
exports.cymbalApp = function cymbalApp(req, res) {
const chatEvent = req.body.chat;
// Send an onboarding message when added to a Chat space
if (chatEvent.addedToSpacePayload) {
res.json({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}}}});
}
};
Python
from flask import Flask, request, json
app = Flask(__name__)
@app.route('/', methods=['POST'])
def cymbal_app():
"""Sends an onboarding message when the Chat app is added to a space.
Returns:
Mapping[str, Any]: The response object from the Chat app.
"""
chat_event = request.get_json()["chat"]
if "addedToSpacePayload" in chat_event:
return json.jsonify({ "hostAppDataAction": { "chatDataAction": {
"createMessageAction": { "message": {
"text": 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}
}}})
Java
@SpringBootApplication
@RestController
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/*
* Sends an onboarding message when the Chat app is added to a space.
*
* @return The response object from the Chat app.
*/
@PostMapping("/")
@ResponseBody
public GenericJson onEvent(@RequestBody JsonNode event) throws Exception {
JsonNode chatEvent = event.at("/chat");
if (!chatEvent.at("/addedToSpacePayload").isEmpty()) {
return new GenericJson() { {
put("hostAppDataAction", new GenericJson() { {
put("chatDataAction", new GenericJson() { {
put("createMessageAction", new GenericJson() { {
put("message", new Message().setText(
"Hi, Cymbal at your service. I help you manage your calendar " +
"from Google Chat. Take a look at your schedule today by typing " +
"`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
"To learn what else I can do, type `/help`."
));
} });
} });
} });
} };
}
return new GenericJson();
}
}
Apps Script
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Google Chat.
* @return {Object} Response from the Chat app.
*/
function onAddedToSpace(event) {
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}}}};
}
La muestra de código devuelve el siguiente mensaje de texto:
Actualiza un mensaje
Las apps de chat también pueden actualizar los mensajes que envían. Por ejemplo, una app de Chat puede actualizar un mensaje después de que un usuario envía un diálogo o hace clic en un botón de una tarjeta en un mensaje.
Para actualizar un mensaje de la app de Chat en respuesta a una interacción, devuelve DataActions con un UpdateMessageAction:
{
"hostAppDataAction": {
"chatDataAction": {
"updateMessageAction": {
"message": <var>MESSAGE</var>
}
}
}
}
Reemplaza MESSAGE por un recurso Message de la API de Chat.
Las apps de Chat también pueden actualizar un mensaje enviado por un usuario para adjuntar una tarjeta de vista previa del vínculo con updateInlinePreviewAction. Para obtener más información, consulta Vínculos de vista previa.
Responde de forma asíncrona con la API de Google Chat
En lugar de devolver una acción de forma síncrona, es posible que las apps de Chat deban llamar a la API de Google Chat para responder a una interacción o enviar mensajes proactivos. Por ejemplo, las apps de Chat deben llamar a la API de Google Chat para realizar cualquiera de las siguientes acciones:
- Responder a una interacción después de 30 segundos (por ejemplo, después de completar una tarea de larga duración)
- Enviar mensajes según un programa o enviar notificaciones sobre cambios en recursos externos
- Realizar tareas fuera del espacio en el que se produjo la interacción
- Realizar tareas en Chat que no están disponibles como acciones síncronas, como enumerar espacios o agregar miembros a un espacio
- Realizar tareas en nombre de un usuario de Chat (lo que requiere autenticación del usuario)
Cuando respondas a una interacción después de 30 segundos, para evitar que se muestre un mensaje de error para el usuario que indique que tu app de Chat no responde, debes confirmar la recepción del objeto de evento en un plazo de 30 segundos devolviendo una respuesta vacía:
Node.js
async function onEvent(req, res) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return res.send({});
};
Python
def on_event(event) -> dict:
# Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return {}
Java
public String onEvent(JsonNode event) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return "{}";
}
Apps Script
function onEvent(event) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return null;
}
Para enviar un mensaje con la API de Chat, configura la autenticación y llama al método spaces.messages.create. Para conocer los pasos, consulta Cómo enviar un mensaje. Si deseas obtener guías para usar métodos adicionales de la API de Chat, consulta la descripción general de la API de Chat.
Temas relacionados
- Configura la API de Google Chat
- Enviar un mensaje
- Cómo responder a comandos
- Abrir diálogos interactivos
- Leer los datos del formulario que ingresan los usuarios en las tarjetas
- Vínculos de vista previa
- Crea una página principal para una app de Chat
- Cómo verificar solicitudes de Chat
- Prueba funciones interactivas para las apps de Google Chat
Apps de chat que no son complementos: Reciben y responden a las interacciones del usuario
Las apps de Chat que no son complementos de Google Workspace reciben eventos de interacción de la API de Chat (Event) en lugar de objetos de eventos de complementos de Google Workspace (EventObject) y responden devolviendo un recurso Message en lugar de una acción.
Para actualizar una app de Chat que no es un complemento al framework de complementos de Google Workspace, consulta Cómo convertir una app de Google Chat en un complemento de Google Workspace.
Tipos de eventos de interacción
Para cada tipo de interacción del usuario, Google Chat envía a una app de Chat que no es un complemento un objeto Event cuyo tipo está representado por el campo eventType:
| Interacción del usuario | eventType |
Respuesta típica de una app de Chat que no es un complemento |
|---|---|---|
| Un usuario envía un mensaje a una app de Chat. Por ejemplo, menciona con @ la app de Chat o usa un comando de barra. | MESSAGE |
La app de Chat responde en función del contenido del mensaje. Por ejemplo, una app de Chat responde al comando de barra /about con un mensaje que explica las tareas que puede realizar la app de Chat. |
| Un usuario agrega una app de Chat a un espacio. | ADDED_TO_SPACE |
La app de Chat envía un mensaje de incorporación en el que se explica qué hace y cómo pueden interactuar con ella los usuarios del espacio. |
| Un usuario quita una app de Chat de un espacio. | REMOVED_FROM_SPACE |
La app de Chat quita las notificaciones entrantes configuradas para el espacio (como borrar un webhook) y borra el almacenamiento interno. |
| Un usuario hace clic en un botón de una tarjeta de un mensaje de la aplicación, diálogo o página principal de una app de Chat. | CARD_CLICKED |
La app de Chat procesa y almacena los datos que el usuario envió, o bien devuelve otra tarjeta. |
| Un usuario abre la página principal de la app de Chat haciendo clic en la pestaña Principal en un mensaje 1:1. | APP_HOME |
La app de Chat devuelve una tarjeta estática o interactiva desde la página principal. |
| Un usuario envía un formulario desde la página principal de la app de Chat. | SUBMIT_FORM |
La app de Chat procesa y almacena los datos que el usuario envió, o bien devuelve otra tarjeta. |
| Un usuario invoca un comando con un comando rápido. | APP_COMMAND |
La app de Chat responde según el comando que se invocó. Por ejemplo, una app de Chat responde al comando Acerca de con un mensaje que explica las tareas que puede realizar la app de Chat. |
Para ver todos los eventos de interacción admitidos y ejemplos de cargas útiles de JSON, consulta Tipos de eventos de interacción de apps de Chat y la documentación de referencia de EventType.
Eventos de interacción de diálogos
Si tu app de Chat que no es un complemento abre diálogos, el evento de interacción contiene la siguiente información adicional que puedes usar para procesar una respuesta:
- El campo
isDialogEventestá configurado comotrue. - El
DialogEventType(REQUEST_DIALOG,SUBMIT_DIALOGoCANCEL_DIALOG) aclara si la interacción activa la apertura de un diálogo, envía información desde un diálogo o cierra un diálogo.
Configura una app de Chat que no sea un complemento para recibir eventos de interacción
En la consola de Google Cloud, ve a la página Configuración de la API de Chat:
En Funciones interactivas, desmarca Crea esta app de Chat como un complemento de Google Workspace y configura Funcionalidad, un solo extremo de Configuración de conexión (URL de extremo HTTP, Apps Script, nombre del tema de Cloud Pub/Sub o Dialogflow), Comandos, Instrucciones de inicio, Vistas previas de vínculos y Visibilidad.
Haz clic en Guardar.
Responder con un mensaje en una app de Chat que no sea un complemento
Para responder de forma síncrona en una app de Chat que no sea un complemento, devuelve un objeto Message directamente. En el siguiente ejemplo, se responde a un evento de interacción ADDED_TO_SPACE con un mensaje de texto:
Node.js
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} req The event object from Chat API.
* @param {Object} res The response object from the Chat app.
*/
exports.cymbalApp = function cymbalApp(req, res) {
// Send an onboarding message when added to a Chat space
if (req.body.type === 'ADDED_TO_SPACE') {
res.json({
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
'learn what else I can do, type `/help`.'
});
}
};
Python
from flask import Flask, request, json
app = Flask(__name__)
@app.route('/', methods=['POST'])
def cymbal_app():
"""Sends an onboarding message when the Chat app is added to a space.
Returns:
Mapping[str, Any]: The response object from the Chat app.
"""
event = request.get_json()
if event['type'] == 'ADDED_TO_SPACE':
return json.jsonify({
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
'learn what else I can do, type `/help`.'
})
return json.jsonify({})
Java
@SpringBootApplication
@RestController
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/*
* Sends an onboarding message when the Chat app is added to a space.
*
* @return The response object from the Chat app.
*/
@PostMapping("/")
@ResponseBody
public Message onEvent(@RequestBody JsonNode event) {
switch (event.get("type").asText()) {
case "ADDED_TO_SPACE":
return new Message().setText(
"Hi, Cymbal at your service. I help you manage your calendar " +
"from Google Chat. Take a look at your schedule today by typing " +
"`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
"To learn what else I can do, type `/help`.");
default:
return new Message();
}
}
}
Apps Script
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Chat API.
* @return {Object} Response from the Chat app.
*/
function onAddToSpace(event) {
return {
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn ' +
'what else I can do, type `/help`.'
};
}