Receber detalhes sobre uma mensagem

Este guia explica como usar o método get() no recurso Message da API Google Chat para retornar detalhes sobre uma mensagem de texto ou cartão.

Na API Chat, uma mensagem do Chat é representada pelo recurso Message. Os usuários do Chat só podem enviar mensagens de texto, mas os apps do Chat podem usar muitos outros recursos de mensagens, incluindo mostrar interfaces de usuário estáticas ou interativas, coletar informações dos usuários e enviar mensagens particulares. Para saber mais sobre os recursos de mensagens disponíveis para a API Chat, consulte a visão geral das mensagens do Google Chat.

Pré-requisitos

Node.js

Python

Java

Apps Script

Receber uma mensagem com autenticação do usuário

Para receber detalhes sobre uma mensagem com autenticação do usuário, transmita o seguinte na sua solicitação:

  • Especifique o escopo de autorização chat.messages.readonly ou chat.messages.
  • Chame o método GetMessage().
  • Defina name como o nome do recurso da mensagem a ser recebida.

O exemplo a seguir recebe uma mensagem com autenticação do usuário:

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 executar esta amostra, substitua o seguinte:

  • SPACE_NAME: o ID do name do espaço. Você pode conseguir o ID chamando o método ListSpaces() ou no URL do espaço.
  • MESSAGE_NAME: o ID do name da mensagem. É possível receber o ID do corpo da resposta retornado após a criação de uma mensagem de forma assíncrona com a API Chat ou com o nome personalizado atribuído à mensagem na criação.

A API Chat retorna uma instância de Message que detalha a mensagem especificada.

Receber uma mensagem com autenticação de app

Para ver detalhes sobre uma mensagem com autenticação do app, transmita o seguinte na sua solicitação:

O exemplo a seguir recebe uma mensagem com autenticação do 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 executar esta amostra, substitua o seguinte:

  • SPACE_NAME: o ID do name do espaço. Você pode conseguir o ID chamando o método ListSpaces() ou no URL do espaço.
  • MESSAGE_NAME: o ID do name da mensagem. É possível receber o ID do corpo da resposta retornado após a criação de uma mensagem de forma assíncrona com a API Chat ou com o nome personalizado atribuído à mensagem na criação.

A API Chat retorna uma instância de Message que detalha a mensagem especificada.

Receber uma mensagem como um app do Chat com aprovação do administrador

A autenticação de apps com um escopo de autorização chat.app.* exige uma única aprovação do administrador.

Para receber detalhes sobre uma mensagem com autenticação do app usando a API REST do Chat, transmita o seguinte na sua solicitação:

  • Chame o método GetMessage().
  • Especifique o escopo de autorização chat.app.messages.readonly.
  • Defina name como o nome do recurso da mensagem a ser recebida.

crie uma chave de API

Para chamar um método de API Developer Preview, use uma versão não pública do documento de descoberta da API. Para autenticar a solicitação, transmita uma chave de API.

Para criar a chave de API, abra o projeto do Google Cloud do app e faça o seguinte:

  1. No console do Google Cloud, acesse Menu > APIs e serviços > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais > Chave de API.
  3. Sua nova chave de API é exibida.
    • Clique em Copiar para copiar a chave de API e usar no código do app. A chave de API também pode ser encontrada na seção "Chaves de API" das credenciais do seu projeto.
    • Para evitar o uso não autorizado, recomendamos restringir os locais e as APIs em que a chave de API pode ser usada. Para mais detalhes, consulte Adicionar restrições de API.

Escrever um script que chama a API Chat

Saiba como conferir detalhes sobre uma mensagem com autenticação de app e aprovação do administrador e a API REST do Chat:

Python

  1. No diretório de trabalho, crie um arquivo chamado chat_messages_get_admin_app.py.
  2. Inclua o seguinte código em 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. No código, substitua o seguinte:

    • API_KEY: a chave de API criada para criar o endpoint de serviço da API Chat.
    • SPACE_NAME: o ID do name do espaço. Você pode conseguir o ID chamando o método ListSpaces() ou no URL do espaço.
    • MESSAGE_NAME: o ID do name da mensagem. É possível receber o ID do corpo da resposta retornado após a criação de uma mensagem de forma assíncrona com a API Chat ou com o nome personalizado atribuído à mensagem na criação.
  4. No diretório de trabalho, crie e execute a amostra:

    python3 chat_messages_get_admin_app.py

A API Chat retorna uma instância de Message que detalha a mensagem especificada.