Cómo obtener detalles sobre un mensaje

En esta guía, se explica cómo usar el método get() en el recurso Message de la API de Google Chat para devolver detalles sobre un mensaje de texto o de tarjeta.

En la API de Chat, un mensaje de Chat se representa 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 mostrar interfaces de usuario estáticas o interactivas, recopilar información de los usuarios y enviar mensajes de forma privada. Para obtener más información sobre las funciones de mensajería disponibles para la API de Chat, consulta la descripción general de los mensajes de Google Chat.

Requisitos previos

Node.js

Python

Java

Apps Script

Obtén un mensaje con la autenticación del usuario

Para obtener detalles sobre un mensaje con autenticación de usuario, pasa lo siguiente en tu solicitud:

  • Especifica el alcance de autorización chat.messages.readonly o chat.messages.
  • Realiza una llamada al método GetMessage().
  • Establece name en el nombre del recurso del mensaje que se obtendrá.

En el siguiente ejemplo, se obtiene un mensaje con autenticación de usuario:

Node.js

chat/client-libraries/cloud/get-message-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.messages.readonly'];

// This sample shows how to get message with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME and MESSAGE_NAME here
    name: 'spaces/SPACE_NAME/messages/MESSAGE_NAME'
  };

  // Make the request
  const response = await chatClient.getMessage(request);

  // Handle the response
  console.log(response);
}

main().catch(console.error);

Python

chat/client-libraries/cloud/get_message_user_cred.py
from authentication_utils import create_client_with_user_credentials
import google.oauth2.credentials

from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.messages.readonly"]

# This sample shows how to get message with user credential
def get_message_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.GetMessageRequest(
        # Replace SPACE_NAME and MESSAGE_NAME here
        name = "spaces/SPACE_NAME/messages/MESSAGE_NAME",
    )

    # Make the request
    response = client.get_message(request)

    # Handle the response
    print(response)

get_message_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/GetMessageUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.GetMessageRequest;
import com.google.chat.v1.Message;

// This sample shows how to get message with user credential.
public class GetMessageUserCred {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.messages.readonly";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      GetMessageRequest.Builder request = GetMessageRequest.newBuilder()
        // replace SPACE_NAME and MESSAGE_NAME here
        .setName("spaces/SPACE_NAME/members/MESSAGE_NAME");
      Message response = chatServiceClient.getMessage(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to get message with user credential
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.messages.readonly'
 * referenced in the manifest file (appsscript.json).
 */
function getMessageUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME and MESSAGE_NAME here
  const name = 'spaces/SPACE_NAME/messages/MESSAGE_NAME';

  // Make the request
  const response = Chat.Spaces.Messages.get(name);

  // Handle the response
  console.log(response);
}

Para ejecutar esta muestra, reemplaza lo siguiente:

  • SPACE_NAME: Es el ID del name del espacio. Puedes obtener el ID llamando al método ListSpaces() o desde la URL del espacio.
  • MESSAGE_NAME: Es el ID del name del mensaje. Puedes obtener el ID del cuerpo de la respuesta que se devuelve después de crear un mensaje de forma asíncrona con la API de Chat o con el nombre personalizado asignado al mensaje en el momento de la creación.

La API de Chat devuelve una instancia de Message que detalla el mensaje especificado.

Recibe un mensaje con la autenticación de la app

Para obtener detalles sobre un mensaje con autenticación de la app, pasa lo siguiente en tu solicitud:

En el siguiente ejemplo, se obtiene un mensaje con autenticación de la app:

Node.js

chat/client-libraries/cloud/get-message-app-cred.js
import {createClientWithAppCredentials} from './authentication-utils.js';

// This sample shows how to get message with app credential
async function main() {
  // Create a client
  const chatClient = createClientWithAppCredentials();

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME and MESSAGE_NAME here
    name: 'spaces/SPACE_NAME/messages/MESSAGE_NAME'
  };

  // Make the request
  const response = await chatClient.getMessage(request);

  // Handle the response
  console.log(response);
}

main().catch(console.error);

Python

chat/client-libraries/cloud/get_message_app_cred.py
from authentication_utils import create_client_with_app_credentials
from google.apps import chat_v1 as google_chat

# This sample shows how to get message with app credential
def get_message_with_app_cred():
    # Create a client
    client = create_client_with_app_credentials()

    # Initialize request argument(s)
    request = google_chat.GetMessageRequest(
        # Replace SPACE_NAME and MESSAGE_NAME here
        name = 'spaces/SPACE_NAME/messages/MESSAGE_NAME',
    )

    # Make the request
    response = client.get_message(request=request)

    # Handle the response
    print(response)

get_message_with_app_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/GetMessageAppCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.GetMessageRequest;
import com.google.chat.v1.Message;

// This sample shows how to get message with app credential.
public class GetMessageAppCred {

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithAppCredentials()) {
      GetMessageRequest.Builder request = GetMessageRequest.newBuilder()
        // replace SPACE_NAME and MESSAGE_NAME here
        .setName("spaces/SPACE_NAME/members/MESSAGE_NAME");
      Message response = chatServiceClient.getMessage(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to get message with app credential
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.bot'
 * used by service accounts.
 */
function getMessageAppCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME and MESSAGE_NAME here
  const name = 'spaces/SPACE_NAME/messages/MESSAGE_NAME';
  const parameters = {};

  // Make the request
  const response = Chat.Spaces.Messages.get(name, parameters, getHeaderWithAppCredentials());

  // Handle the response
  console.log(response);
}

Para ejecutar esta muestra, reemplaza lo siguiente:

  • SPACE_NAME: Es el ID del name del espacio. Puedes obtener el ID llamando al método ListSpaces() o desde la URL del espacio.
  • MESSAGE_NAME: Es el ID del name del mensaje. Puedes obtener el ID del cuerpo de la respuesta que se devuelve después de crear un mensaje de forma asíncrona con la API de Chat o con el nombre personalizado asignado al mensaje en el momento de la creación.

La API de Chat devuelve una instancia de Message que detalla el mensaje especificado.

Recibe un mensaje como una app de Chat con la aprobación del administrador

La autenticación de la app con un alcance de autorización de chat.app.* requiere la aprobación del administrador una sola vez.

Para obtener detalles sobre un mensaje con autenticación de la app a través de la API de REST de Chat, pasa lo siguiente en tu solicitud:

  • Realiza una llamada al método GetMessage().
  • Especifica el alcance de autorización chat.app.messages.readonly.
  • Establece name en el nombre del recurso del mensaje que se obtendrá.

Crea una clave de API

Para llamar a un método de la API de la versión preliminar para desarrolladores, debes usar una versión preliminar para desarrolladores no pública del documento de descubrimiento de la API. Para autenticar la solicitud, debes pasar una clave de API.

Para crear la clave de API, abre el proyecto de Google Cloud de tu app y haz lo siguiente:

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > Clave de API.
  3. Se mostrará tu nueva clave de API.
    • Haz clic en Copiar para copiar tu clave de API y usarla en el código de tu app. La clave de API también se puede encontrar en la sección "Claves de API" de las credenciales de tu proyecto.
    • Para evitar el uso no autorizado, te recomendamos restringir dónde y para qué APIs se puede usar la clave de API. Para obtener más detalles, consulta Agrega restricciones de API.

Escribe un script que llame a la API de Chat

A continuación, se explica cómo obtener detalles sobre un mensaje con autenticación de la app y aprobación del administrador y la API de REST de Chat:

Python

  1. En tu directorio de trabajo, crea un archivo llamado chat_messages_get_admin_app.py.
  2. Incluye el siguiente código en chat_messages_get_admin_app.py:

    from google.oauth2 import service_account
    from apiclient.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.app.messages.readonly"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then gets details about a message.
        '''
    
        # Specify service account details.
        creds = (
            service_account.Credentials.from_service_account_file('credentials.json')
            .with_scopes(SCOPES)
        )
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds, discoveryServiceUrl='https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY')
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().messages().get(
    
            # The message to get details about.
            #
            # Replace SPACE_NAME with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            name='spaces/SPACE_NAME/messages/MESSAGE_NAME',
    
        ).execute()
    
        # Print Chat API's response in your command line interface.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. En el código, reemplaza lo siguiente:

    • API_KEY: Es la clave de API que creaste para compilar el extremo de servicio de la API de Chat.
    • SPACE_NAME: Es el ID del name del espacio. Puedes obtener el ID llamando al método ListSpaces() o desde la URL del espacio.
    • MESSAGE_NAME: Es el ID del name del mensaje. Puedes obtener el ID del cuerpo de la respuesta que se muestra después de crear un mensaje de forma asíncrona con la API de Chat o con el nombre personalizado asignado al mensaje en el momento de la creación.
  4. En tu directorio de trabajo, compila y ejecuta la muestra:

    python3 chat_messages_get_admin_app.py

La API de Chat devuelve una instancia de Message que detalla el mensaje especificado.