En esta guía, se explica cómo usar el método patch
en el recurso Message
de
la API de Google Chat para actualizar un mensaje de texto o de tarjeta en un espacio. Actualizar un
para cambiar los atributos del mensaje, como lo que dice, o el contenido de una
tarjeta. También puedes anteponer un mensaje de texto a
mensaje de tarjeta o agregar una tarjeta a un mensaje de texto.
Chat también admite
método update
,
pero recomendamos enfáticamente llamar
Método patch
porque usa una solicitud HTTP PATCH
mientras que
update
usa un
solicitud HTTP PUT
. Para obtener más información, consulta la
Sección PATCH
y PUT
de AIP-134.
En la API de Chat, los mensajes de Chat se representan con el
Recurso Message
.
Si bien los usuarios de Chat solo pueden enviar mensajes que contengan texto
Las apps de Chat pueden usar muchas otras funciones de mensajería, como las siguientes:
mostrar interfaces de usuario estáticas o interactivas, recopilar información de
usuarios y la entrega de mensajes de forma privada. Para obtener más información sobre los mensajes
disponibles para la API de Chat, consulta la
Descripción general de los mensajes de Google Chat.
Requisitos previos
Python
- Una empresa o empresa de Google Workspace con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre. y la descripción de tu app de Chat.
- Instala el Python Biblioteca cliente de las APIs de Google
- Crea credenciales de acceso según cómo quieras autenticarte en tu API de Google Chat
solicitud:
- Sigue estos pasos para autenticarte como usuario de Chat:
crear un ID de cliente de OAuth
credenciales y las guarda como un archivo JSON llamado
client_secrets.json
a tu directorio local. - Para autenticarte como la app de Chat, sigue estos pasos:
crear cuenta de servicio
credenciales y las guarda como un archivo JSON llamado
credentials.json
- Sigue estos pasos para autenticarte como usuario de Chat:
crear un ID de cliente de OAuth
credenciales y las guarda como un archivo JSON llamado
- Elige un alcance de autorización en función de si deseas autenticarte como usuario o App de Chat
Actualiza un mensaje de texto o antepón un mensaje de texto a un mensaje de tarjeta con la autenticación de usuario
Para actualizar un mensaje de texto con autenticación de usuario, pasar lo siguiente en tu solicitud:
- El alcance de la autorización
chat.messages
. - El
name
del mensaje que se actualizará. updateMask='text'
- Un
body
que especifica el mensaje actualizado.
Si el mensaje actualizado es un mensaje de tarjeta, Luego, el mensaje de texto se antepone al mensaje de la tarjeta (que continúa mostrándose).
Aquí te mostramos cómo actualizar un mensaje de texto anteponer un mensaje de texto a mensaje de la tarjeta con Autenticación de usuarios:
Python
- En tu directorio de trabajo, crea un archivo llamado
chat_update_text_message_user.py
Incluye el siguiente código en
chat_update_text_message_user.py
:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages"] def main(): ''' Authenticates with Chat API via user credentials, then updates a message. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text', body={'text': 'Updated message!'} ).execute() # Prints details about the updated message. print(result) if __name__ == '__main__': main()
En el código, reemplaza lo siguiente:
SPACE
: Es un nombre de espacio, que puedes obtener desde el Métodospaces.list
en la API de Chat o desde la URL de un espacio.MESSAGE
: Es un nombre de mensaje que puedes obtener. del cuerpo de la respuesta que se muestra después de crear un mensaje de forma asíncrona. con la API de Chat nombre personalizado se asigna al mensaje en el momento de su creación.
En tu directorio de trabajo, compila y ejecuta la muestra:
python3 chat_update_text_message_user.py
Actualiza un mensaje de texto o antepón un mensaje de texto a un mensaje de tarjeta con la autenticación de apps
Para actualizar un mensaje de texto con autenticación de apps, pasa lo siguiente en tu solicitud:
- El alcance de la autorización
chat.bot
. - El
name
del mensaje que se actualizará. updateMask='text'
- Un
body
que especifica el mensaje actualizado.
Si el mensaje actualizado es un mensaje de tarjeta, Luego, el mensaje de texto se antepone al mensaje de la tarjeta (que continúa mostrándose).
Aquí te mostramos cómo actualizar un mensaje de texto a un mensaje de texto o anteponer un mensaje de texto a mensaje de la tarjeta con Autenticación de la app:
Python
- En tu directorio de trabajo, crea un archivo llamado
chat_update_text_message_app.py
Incluye el siguiente código en
chat_update_text_message_app.py
:from google.oauth2 import service_account from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ( service_account.Credentials.from_service_account_file('credentials.json') .with_scopes(SCOPES) ) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text', body={'text': 'Updated message!'} ).execute() # Print Chat API's response in your command line interface. print(result)
En el código, reemplaza lo siguiente:
SPACE
: Es un nombre de espacio, que puedes obtener desde el Métodospaces.list
en la API de Chat o desde la URL de un espacio.MESSAGE
: Es un nombre de mensaje que puedes obtener. del cuerpo de la respuesta que se muestra después de crear un mensaje de forma asíncrona. con la API de Chat nombre personalizado se asigna al mensaje en el momento de su creación.
En tu directorio de trabajo, compila y ejecuta la muestra:
python3 chat_update_text_message_app.py
Actualiza un mensaje de tarjeta o adjunta un mensaje de tarjeta a un mensaje de texto
Para actualizar un mensaje de tarjeta, pasa lo siguiente en tu solicitud:
- El alcance de la autorización
chat.bot
. Necesitas actualizar un mensaje de tarjeta autenticación de la app. - El
name
del mensaje que se actualizará. updateMask='cardsV2'
- Un
body
que especifica el mensaje actualizado.
Si el mensaje actualizado es un mensaje de texto, y, luego, se adjunta una tarjeta al mensaje de texto (que sigue mostrándose). Si el botón mensaje actualizado es en sí mismo un tarjeta, se muestra la tarjeta se actualicen.
A continuación, se explica cómo actualizar un mensaje a mensaje de tarjeta:
Python
- En tu directorio de trabajo, crea un archivo llamado
chat_update_card_message.py
Incluye el siguiente código en
chat_update_card_message.py
:from google.oauth2 import service_account from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ( service_account.Credentials.from_service_account_file('credentials.json') .with_scopes(SCOPES) ) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='cardsV2', body= { 'cardsV2': [{ 'cardId': 'updateCardMessage', 'card': { 'header': { 'title': 'An Updated Card Message!', 'subtitle': 'Updated 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 Chat API's response in your command line interface. print(result)
En el código, reemplaza lo siguiente:
SPACE
: Es un nombre de espacio, que puedes obtener desde el Métodospaces.list
en la API de Chat o desde la URL de un espacio.MESSAGE
: Es un nombre de mensaje que puedes obtener. del cuerpo de la respuesta que se muestra después de crear un mensaje de forma asíncrona. con la API de Chat nombre personalizado se asigna al mensaje en el momento de su creación.
En tu directorio de trabajo, compila y ejecuta la muestra:
python3 chat_update_card_message.py
La API de Chat devuelve una instancia de
Message
que detalla el mensaje que se actualiza.
Actualiza un mensaje con varias rutas de campo simultáneamente
Cuando se actualiza un mensaje, puedes actualizar varias rutas de campo de mensaje en el
tiempo. Por ejemplo, en una solicitud de mensaje de actualización, puedes especificar un cambio en el
las rutas de campo text
y cardsv2
al mismo tiempo, lo que actualiza ambas
el texto y la tarjeta del mensaje. Si el mensaje incluye solo texto y ninguna tarjeta, se mostrará una tarjeta
se agregará al mensaje. Para obtener más información sobre las rutas de campos admitidas,
ver
Parámetros updateMask
.
Para actualizar tanto
text
y
card
de un mensaje con
autenticación de usuarios,
pasa lo siguiente en tu solicitud:
- El alcance de la autorización
chat.messages
. - El
name
del mensaje que se actualizará. Un
updateMask
que especifica las rutas de los campos de mensaje que se actualizarán, separadas con comas:updateMask='text', 'cardsV2'
.Un
body
que especifica el mensaje actualizado, incluidos todos los campos actualizados rutas de ataque.
A continuación, te mostramos cómo actualizar las rutas de los campos text
y cardsV2
en una
envía un mensaje con
Autenticación de usuarios:
Python
- En tu directorio de trabajo, crea un archivo llamado
chat_update_text_message_user.py
Incluye el siguiente código en
chat_update_text_message_user.py
:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages"] def main(): ''' Authenticates with Chat API via user credentials, then updates a message. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text,cardsV2', body= {'text': 'Updated message!', 'cardsV2': [{ 'cardId': 'updateCardMessage', 'card': { 'header': { 'title': 'An Updated Card Message!', 'subtitle': 'Updated 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() # Prints details about the updated message. print(result) if __name__ == '__main__': main()
En el código, reemplaza lo siguiente:
SPACE
: Es un nombre de espacio, que puedes obtener desde el Métodospaces.list
en la API de Chat o desde la URL de un espacio.MESSAGE
: Es un nombre de mensaje que puedes obtener. del cuerpo de la respuesta que se muestra después de crear un mensaje de forma asíncrona. con la API de Chat nombre personalizado se asigna al mensaje en el momento de su creación.
En tu directorio de trabajo, compila y ejecuta la muestra:
python3 chat_update_text_message_user.py
Temas relacionados
- Da formato a un mensaje.
- Borra un mensaje.
- Obtener detalles sobre un mensaje
- Crea una lista de los mensajes de un espacio.
- Envíeles un mensaje.