En esta guía, se describe cómo las apps de Google Chat pueden recopilar y procesar información de los usuarios mediante la compilación de entradas de formularios en interfaces basadas en tarjetas.
Las apps de Chat solicitan información de los usuarios para realizar acciones dentro o fuera de Chat, incluso de las siguientes maneras:
- Establece la configuración. Por ejemplo, para permitir que los usuarios personalicen la configuración de notificaciones o configuren y agreguen la app de Chat a uno o más espacios.
- Crea o actualiza información en otras aplicaciones de Google Workspace. Por ejemplo, permite que los usuarios creen un evento del Calendario de Google.
- Permite que los usuarios accedan a recursos y los actualicen en otras apps o servicios web. Por ejemplo, una app de Chat puede ayudar a los usuarios a actualizar el estado de un ticket de asistencia directamente desde un espacio de Chat.
Requisitos previos
Node.js
Una app de Google Chat que recibe eventos de interacción y responde a ellos. Para crear una app de Chat interactiva con un servicio HTTP, completa esta guía de inicio rápido.
Python
Una app de Google Chat que recibe eventos de interacción y responde a ellos. Para crear una app de Chat interactiva con un servicio HTTP, completa esta guía de inicio rápido.
Java
Una app de Google Chat que recibe eventos de interacción y responde a ellos. Para crear una app de Chat interactiva con un servicio HTTP, completa esta guía de inicio rápido.
Apps Script
Una app de Google Chat que recibe eventos de interacción y responde a ellos. Para crear una app de Chat interactiva en Apps Script, completa esta guía de inicio rápido.
Compila formularios con tarjetas
Para recopilar información, las apps de Chat diseñan formularios y sus entradas, y los compilan en tarjetas. Para mostrar tarjetas a los usuarios, las apps de Chat pueden usar las siguientes interfaces de Chat:
- Mensajes que contienen una o más tarjetas.
- Páginas principales, que son tarjetas que aparecen en la pestaña Página principal en mensajes directos con la app de Chat
- Diálogos, que son tarjetas que se abren en una ventana nueva desde mensajes y páginas principales
Las apps de Chat pueden compilar las tarjetas con los siguientes widgets:
Widgets de entrada de formulario que solicitan información de los usuarios (opcional) Puedes agregar validación a los widgets de entrada de formulario para asegurarte de que los usuarios ingresen y formateen la información correctamente. Las apps de Chat pueden usar los siguientes widgets de entrada de formulario:
- Entradas de texto
(
textInput) para texto de formato libre o sugerido. - Las entradas de selección
(
selectionInput) son elementos de la IU seleccionables, como casillas de verificación, botones de selección y menús desplegables. Los widgets de entrada de selección también pueden propagar elementos de fuentes de datos estáticas o dinámicas. Por ejemplo, los usuarios pueden seleccionar de una lista de espacios de Chat de los que son miembros. - Selectores de fecha y hora
(
dateTimePicker) para entradas de fecha y hora
- Entradas de texto
(
Un widget de botón para que los usuarios puedan enviar los valores que ingresaron en la tarjeta. Después de que un usuario hace clic en el botón, la app de Chat puede entonces procesar la información que recibe.
En el siguiente ejemplo, una tarjeta recopila información de contacto con una entrada de texto, un selector de fecha y hora, y una entrada de selección:
Para ver un ejemplo de una app de Chat que usa este formulario de contacto, consulta el siguiente código:
Node.js
Python
Java
Apps Script
Para obtener más ejemplos de widgets interactivos que puedes usar para recopilar información, consulta Diseña una tarjeta o un diálogo interactivo.
Recibe datos de widgets interactivos
Cada vez que los usuarios hacen clic en un botón, las apps de Chat reciben un evento de interacción que depende de la ubicación del botón:
Si el botón está en un mensaje o diálogo, las apps de Chat reciben un
CARD_CLICKEDevento de interacción que contiene información sobre la interacción. La carga útil deCARD_CLICKEDeventos de interacción contiene uncommon.formInputsobjeto con los valores que ingresa el usuario.Puedes recuperar los valores del objeto
common.formInputs.WIDGET_NAME, donde WIDGET_NAME es elnamecampo que especificaste para el widget. Los valores se muestran como un tipo de datos específico para el widget (representado como unInputsobjeto).A continuación, se muestra una parte de un evento de interacción
CARD_CLICKEDen el que un usuario ingresó valores para cada widget:HTTP
{ "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] }}, "contactBirthdate": { "dateInput": { "msSinceEpoch": 1000425600000 }}, "contactType": { "stringInputs": { "value": ["Personal"] }} }} }Apps Script
{ "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }}}, "contactBirthdate": { "": { "dateInput": { "msSinceEpoch": 1000425600000 }}}, "contactType": { "": { "stringInputs": { "value": ["Personal"] }}} }} }Si el botón está en una página principal, las apps de Chat reciben un
SUBMIT_FORMevento de interacción. La carga útil del evento de interacción contiene uncommonEventObject.formInputsobjeto con los valores que ingresa el usuario.Puedes recuperar los valores del objeto
commonEventObject.formInputs.WIDGET_NAME, donde WIDGET_NAME es elnamecampo que especificaste para el widget. Los valores se muestran como un tipo de datos específico para el widget (representado como unInputsobjeto).A continuación, se muestra una parte de un evento de interacción
SUBMIT_FORMen el que un usuario ingresó valores para cada widget:HTTP
{ "type": "SUBMIT_FORM", "commonEventObject": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] }}, "contactBirthdate": { "dateInput": { "msSinceEpoch": 1000425600000 }}, "contactType": { "stringInputs": { "value": ["Personal"] }} }} }Apps Script
{ "type": "SUBMIT_FORM", "commonEventObject": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }}}, "contactBirthdate": { "": { "dateInput": { "msSinceEpoch": 1000425600000 }}}, "contactType": { "": { "stringInputs": { "value": ["Personal"] }}} }} }
Para recibir los datos, tu app de Chat controla el evento de interacción para obtener los valores que los usuarios ingresan en los widgets. En la siguiente tabla, se muestra cómo obtener el valor de un widget de entrada de formulario determinado. Para cada widget, la tabla muestra el tipo de datos que acepta el widget, dónde se almacena el valor en el evento de interacción y un valor de ejemplo.
| Widget de entrada de formulario | Tipo de datos de entrada | Valor de entrada del evento de interacción | Valor de ejemplo |
|---|---|---|---|
textInput |
stringInputs |
event.common.formInputs.contactName.stringInputs.value[0] |
Kai O |
selectionInput |
stringInputs |
Para obtener el primer valor o el único, event.common.formInputs.contactType.stringInputs.value[0] |
Personal |
dateTimePicker que solo acepta fechas |
dateInput |
event.common.formInputs.contactBirthdate.dateInput.msSinceEpoch |
1000425600000 |
Transfiere datos a otra tarjeta
Después de que un usuario envía información desde una tarjeta, es posible que debas mostrar tarjetas adicionales para realizar cualquiera de las siguientes acciones:
- Ayudar a los usuarios a completar formularios más largos mediante la creación de secciones distintas
- Permitir que los usuarios obtengan una vista previa de la información de la tarjeta inicial y la confirmen para que puedan revisar sus respuestas antes de enviarlas
- Propagar de forma dinámica las partes restantes del formulario Por ejemplo, para solicitar a los usuarios que creen una cita, una app de Chat podría mostrar una tarjeta inicial que solicite el motivo de la cita y, luego, propagar otra tarjeta que proporcione horarios disponibles según el tipo de cita.
Para transferir la entrada de datos de la tarjeta inicial, puedes compilar el button
widget con actionParameters
que contengan el name del widget y el valor que ingresa el usuario, como se muestra
en el siguiente ejemplo:
Node.js
Python
Java
Apps Script
Cuando un usuario hace clic en el botón, tu app de Chat recibe un
CARD_CLICKED evento de interacción del que puedes
recibir datos.
Responde a un envío de formulario
Después de recibir los datos de un mensaje de tarjeta o diálogo, la app de Chat responde confirmando la recepción o mostrando un error.
En el siguiente ejemplo, una app de Chat envía un mensaje de texto para confirmar que recibió correctamente un formulario enviado desde un diálogo o un mensaje de tarjeta.
Node.js
Python
Java
Apps Script
Para procesar y cerrar un diálogo, debes mostrar un
ActionResponse
objeto que especifique si deseas enviar un mensaje de confirmación, actualizar
el mensaje o la tarjeta originales, o simplemente cerrar el diálogo. Para conocer los pasos, consulta
Cierra un diálogo.
Solucionar problemas
Cuando una app o tarjeta de Google Chat muestra un error, la interfaz de Chat muestra un mensaje que dice "Se produjo un error" o "No se pudo procesar la solicitud". A veces, la IU de Chat no muestra ningún mensaje de error, pero la app o la tarjeta de Chat producen un resultado inesperado; por ejemplo, es posible que no aparezca un mensaje de tarjeta.
Aunque es posible que no se muestre un mensaje de error en la IU de Chat, hay mensajes de error descriptivos y datos de registro disponibles para ayudarte a corregir errores cuando se activa el registro de errores para las apps de Chat. Si necesitas ayuda para ver, depurar y corregir errores, consulta Soluciona y corrige errores de Google Chat.
Temas relacionados
- Consulta la muestra del Administrador de contactos, que es una app de Chat que solicita a los usuarios que completen un formulario de contacto desde mensajes de tarjetas y diálogos.
- Abre diálogos interactivos