En esta página, se explica cómo crear y enviar mensajes privados como una app de Google Chat.
Un mensaje privado es un mensaje de la app de Chat que solo es visible para un usuario de Chat específico. Puedes usar mensajes privados en espacios con varias personas para que puedan interactuar de forma privada con apps de Chat. Por ejemplo, tu app de Chat puede enviar mensajes de forma privada para realizar alguna de las siguientes acciones:
- Responde a un comando de barra. Por ejemplo, si un usuario invoca el comando de barra
/about
de tu app de Chat en un espacio, tu app de Chat puede responder con un mensaje privado que explica lo que hace la app de Chat y cómo usarla. - Envía notificaciones o envía información que solo sea relevante para un usuario. Por ejemplo, notifica a un usuario que se le asignó una tarea o recuérdale que la complete.
- Envía un mensaje de error. Por ejemplo, si un usuario omite el texto de argumento requerido para un comando de barra, la app de Chat puede enviar un mensaje privado para explicar el error y ayudar al usuario a darle formato al comando.
Cuando una app de Chat envía un mensaje privado, se muestra una etiqueta que notifica al usuario que el mensaje solo es visible para él:
Requisitos previos
Node.js
- Un proyecto de Google Cloud con la API de Google Chat habilitada y configurada Para conocer los pasos, consulta Compila una app de Google Chat.
- A fin de responder de forma privada a un comando de barra, es un comando de barra configurado para la app de Chat. Si quieres compilar uno, consulta Responde a comandos de barra.
- Para enviar un mensaje privado con el método
messages.create()
, debes usar la autenticación de la app.
Nota: Las muestras de código de Node.js de esta guía se escriben para ejecutarse como una función de Google Cloud.
Python
- Un proyecto de Google Cloud con la API de Google Chat habilitada y configurada Para conocer los pasos, consulta Compila una app de Google Chat.
- A fin de responder de forma privada a un comando de barra, es un comando de barra configurado para la app de Chat. Si quieres compilar uno, consulta Responde a comandos de barra.
- Para enviar un mensaje privado con el método
messages.create()
, debes usar la autenticación de la app.
Nota: Las muestras de código de Python en esta guía están escritas para ejecutarse como una función de Google Cloud Functions, con Python 3.10.
Apps Script
- Una app de Chat. Para compilar una app de Chat, sigue esta quickstart.
- A fin de responder de forma privada a un comando de barra, es un comando de barra configurado para la app de Chat. Si quieres compilar uno, consulta Responde a comandos de barra.
- Para enviar un mensaje privado con el método
messages.create()
, debes usar la autenticación de la app.
Envía un mensaje privado
Para enviar un mensaje de forma privada como una app de Chat, especifica el campo privateMessageViewer
en el mensaje cuando lo crees. Puedes crear mensajes privados del mismo modo que creas cualquier mensaje: puedes responder a una interacción del usuario o llamar de forma asíncrona al método create()
de la API de Google Chat en el recurso Message
. Si quieres conocer los pasos para enviar mensajes de texto o tarjetas, consulta Cómo enviar un mensaje.
En el siguiente ejemplo, se muestra el JSON de un mensaje de texto privado que dice Hello private world!
:
{
"text": "Hello private world!",
"privateMessageViewer": "USER"
}
En este ejemplo, USER
representa al usuario de Chat que puede ver el mensaje, con el formato de un recurso User
. Si respondes a una interacción del usuario, puedes especificar el objeto User
del evento de interacción.
Para ver un ejemplo, consulta la siguiente sección Responde de forma privada a un comando de barra.
De lo contrario, para especificar el lector de un mensaje privado, puedes usar el campo name
del recurso User
:
{
"text": "Hello private world!",
"privateMessageViewer": {
"name": "users/USER_ID"
}
}
En este ejemplo, se usa el campo name
para especificar el nombre del recurso User
del usuario en Google Chat. Reemplaza USER_ID
por un ID único para el usuario, como 12345678987654321
o hao@cymbalgroup.com
.
Si quieres obtener más información para especificar usuarios, consulta Cómo identificar y especificar usuarios de Google Chat.
Cómo responder de forma privada a un comando de barra
En el siguiente código, se muestra un ejemplo de una app de Chat que responde a un comando de barra con un mensaje privado.
La app de Chat procesa un evento de interacción MESSAGE
y responde al comando de barra /help
con un mensaje de texto privado que explica cómo usarlo:
Node.js
/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {!Object} req Request sent from Google Chat app
* @param {!Object} res Response to send back
*
* @return {!Object} respond to slash command
*/
exports.onMessage = function onMessage(req, res) {
if (req.method === 'GET' || !req.body.message) {
return res.send('Hello! This function is meant to be used in Google Chat app.');
}
const event = req.body;
// Checks for the presence of event.message.slashCommand.
// If the slash command is "/help", responds with a private text message.
if (event.message.slashCommand) {
switch (event.message.slashCommand.commandId) {
case '1': // /help
return res.json({
privateMessageViewer: event.user,
text: 'This Chat app was created by Cymbal Labs. To get help with this app, <https://cymbalgroup.com/docs|see our documentation> or <https://cymbalgroup.com/support|contact our support team>.'
});
}
}
// If the Chat app doesn't detect a slash command, it responds
// with a private text message
return res.json({
privateMessageViewer: event.user,
text: 'Try a slash command.'
});
};
Apps Script
/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {Object} event the event object from Google Chat
*/
function onMessage(event) {
if (event.message.slashCommand) {
switch (event.message.slashCommand.commandId) {
case 1: // Responds to /help
return {
"privateMessageViewer": event.user,
"text": "This Chat app was created by Cymbal Labs. To get help with this app, <https://cymbalgroup.com/docs|see our documentation> or <https://cymbalgroup.com/support|contact our support team>."
};
}
}
else {
return { "text": "Try a slash command.", "privateMessageViewer": event.user };
}
}
Python
from typing import Any, Mapping
import flask
import functions_framework
@functions_framework.http
def main(req: flask.Request) -> Mapping[str, Any]:
"""Responds to a MESSAGE event in Google Chat.
Args:
req (flask.Request): the event object from Chat API.
Returns:
Mapping[str, Any]: open a Dialog in response to a card's button click.
"""
if req.method == 'GET':
return 'Hello! This function must be called from Google Chat.'
request = req.get_json(silent=True)
# Checks for the presence of event.message.slashCommand.
# If the slash command is "/help", responds with a private text message.
if request.get('message', {}).get('slashCommand'):
command_id = request.get('message', {}).get('slashCommand').get('commandId')
if command_id == '1': # /help
return {
'privateMessageViewer': request.get('user'),
'text': (
'This Chat app was created by Cymbal Labs. To get help with this'
' app, <https://cymbalgroup.com/docs|see our documentation> or'
' <https://cymbalgroup.com/support|contact our support team>.'
),
}
return {
'privateMessageViewer': request.get('user'),
'text': 'Try a slash command.',
}
Limitaciones
Para enviar un mensaje privado, no puede contener ni usar lo siguiente:
- Archivos adjuntos.
- Acciones de los accesorios.
- Mensajes parcialmente privados. Por ejemplo, una app de Chat no puede enviar un mensaje con texto ni una tarjeta en los que el texto solo sea visible para un usuario, pero la tarjeta es visible para todos los miembros del espacio.
- Autenticación de usuarios. Solo las apps de Chat pueden enviar mensajes privados, por lo que esta no puede autenticarse como usuario para enviar un mensaje de forma privada.
Actualiza o borra mensajes privados
Para actualizar o borrar mensajes de Google Chat, debes llamar a la API de Chat. No puedes cambiar el usuario del mensaje privado ni hacerlo público. Por lo tanto, cuando actualizas mensajes privados, debes omitir el campo privateMessageViewer
en la llamada a la API (el campo es de solo salida).
Para actualizar un mensaje privado, consulta Cómo actualizar un mensaje. Para borrar un mensaje privado, consulta Cómo borrar un mensaje.
Temas relacionados
- Enviar un mensaje
- Identifica y especifica usuarios de Google Chat
- Cómo responder a los comandos de barra
- Cómo actualizar un mensaje
- Cómo borrar un mensaje