Este documento explica como usar o
search
método no recurso Message da API Google Chat para pesquisar mensagens que
o usuário autenticado pode acessar.
Com a autenticação do usuário, é possível pesquisar mensagens em todas as conversas em que o usuário participou ou em uma conversa específica. Por exemplo, você pode pesquisar mensagens que contenham palavras-chave específicas, mencionem o usuário, não tenham sido lidas ou tenham anexos.
Na API Chat, uma mensagem de chat é representada pelo
Message recurso.
Embora os usuários do Chat só possam enviar mensagens que contenham texto, os apps do Chat podem usar muitos outros recursos de mensagens, incluindo a exibição de interfaces estáticas ou interativas, a coleta de informações dos usuários e o envio de 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
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.
- Configure seu ambiente:
- Crie um projeto na nuvem do Google Cloud.
- Configure a tela de permissão OAuth.
- Ative e configure a API Google Chat com um nome, ícone e descrição para seu app do Chat.
- Instale a biblioteca de cliente do Cloud para Node.js .
- Escolha um escopo de autorização.
- Um espaço do Google Chat. Para criar um usando a API Google Chat, consulte Criar um espaço. Para criar um no Chat, acesse a documentação da Central de Ajuda.
Python
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.
- Configure seu ambiente:
- Crie um projeto na nuvem do Google Cloud.
- Configure a tela de permissão OAuth.
- Ative e configure a API Google Chat com um nome, ícone e descrição para seu app do Chat.
- Instale a biblioteca de cliente do Cloud para Python.
- Escolha um escopo de autorização.
- Um espaço do Google Chat. Para criar um usando a API Google Chat, consulte Criar um espaço. Para criar um no Chat, acesse a documentação da Central de Ajuda.
Java
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.
- Configure seu ambiente:
- Crie um projeto na nuvem do Google Cloud.
- Configure a tela de permissão OAuth.
- Ative e configure a API Google Chat com um nome, ícone e descrição para seu app do Chat.
- Instale a biblioteca de cliente do Cloud para Java.
- Escolha um escopo de autorização.
- Um espaço do Google Chat. Para criar um usando a API Google Chat, consulte Criar um espaço. Para criar um no Chat, acesse a documentação da Central de Ajuda.
Apps Script
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.
- Configure seu ambiente:
- Crie um projeto na nuvem do Google Cloud.
- Configure a tela de permissão OAuth.
- Ative e configure a API Google Chat com um nome, ícone e descrição para seu app do Chat.
- Crie um projeto independente do Apps Script, e ative o serviço avançado do Chat.
- Escolha um escopo de autorização.
- Um espaço do Google Chat. Para criar um usando a API Google Chat, consulte Criar um espaço. Para criar um no Chat, acesse a documentação da Central de Ajuda.
Pesquisar mensagens
Para pesquisar mensagens com usuário autenticação, transmita o seguinte na sua solicitação:
Especifique o escopo de autorização
chat.messages.readonlyouchat.messages.Chame o
SearchMessagesmétodo.Defina
parentcomospaces/-para pesquisar em todos os espaços em que o usuário é membro. O uso de qualquer outro valor resulta em um erro.No campo
filter, especifique uma string de consulta de pesquisa. A consulta pode incluir palavras-chave e filtros.
O exemplo de código a seguir pesquisa mensagens não lidas que contêm a palavra-chave "tarefas":
Node.js
/**
* Searches for messages in Google Chat.
* @param {string} filter The search query.
*/
async function searchMessages(filter) {
const {ChatServiceClient} = require('@google-apps/chat').v1;
// Instantiates a client
const chatClient = new ChatServiceClient();
// See https://github.com/googleworkspace/node-samples/blob/main/chat/client-libraries/cloud/authentication-utils.js
// for an example of how to authenticate the request.
// Construct request
const request = {
// Parent must be "spaces/-" to search across all spaces.
parent: 'spaces/-',
filter: filter,
};
// Run request
const iterable = await chatClient.searchMessagesAsync(request);
for await (const response of iterable) {
console.log(response);
}
}
searchMessages('tasks AND is_unread()');
Python
from google.apps import chat_v1
def search_messages(filter_str: str):
"""
Searches for messages in Google Chat.
Args:
filter_str: The search query.
"""
# Create a client
client = chat_v1.ChatServiceClient()
# See https://github.com/googleworkspace/python-samples/blob/main/chat/client-libraries/cloud/authentication_utils.py
# for an example of how to authenticate the request.
# Initialize request argument
request = chat_v1.SearchMessagesRequest(
# Parent must be "spaces/-" to search across all spaces.
parent="spaces/-",
filter=filter_str
)
# Make the request
page_result = client.search_messages(request=request)
# Handle the response
for response in page_result:
print(response)
search_messages('tasks AND is_unread()')
Java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.SearchMessageResult;
import com.google.chat.v1.SearchMessagesRequest;
public class SearchMessages {
public static void main(String[] args) throws Exception {
searchMessages("tasks AND is_unread()");
}
/**
* Searches for messages in Google Chat.
*
* @param filter The search query.
*/
public static void searchMessages(String filter) throws Exception {
// See https://github.com/googleworkspace/java-samples/blob/main/chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/AuthenticationUtils.java
// for an example of how to authenticate the request.
try (ChatServiceClient chatServiceClient = ChatServiceClient.create()) {
SearchMessagesRequest request =
SearchMessagesRequest.newBuilder()
.setParent("spaces/-")
.setFilter(filter)
.build();
for (SearchMessageResult result : chatServiceClient.searchMessages(request).iterateAll()) {
System.out.println(result.getMessage().getText());
}
}
}
}
Apps Script
javascript
/**
* Searches for messages in Google Chat.
*/
function searchMessages() {
const filter = 'tasks AND is_unread()';
const url = 'https://chat.googleapis.com/v1/spaces/-/messages:search';
const request_payload = {
filter: filter
};
try {
const response = UrlFetchApp.fetch(url, {
method: 'post',
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
},
contentType: 'application/json',
payload: JSON.stringify(request_payload)
});
if (response.results) {
for (const result of response.results) {
console.log('Message text: %s', result.message.text);
}
} else {
console.log('No messages found.');
}
} catch (err) {
console.log('Failed to search messages with error: %s', err.message);
}
}
Usar filtros e operadores de pesquisa
É possível refinar os resultados da pesquisa usando palavras-chave, campos e funções no campo filter. Para mais informações, consulte
SearchMessagesRequest.
Pesquisar por palavra-chave
Para pesquisar mensagens que contenham um texto específico, insira as palavras-chave. Por exemplo, para pesquisar relatórios pendentes, use pending reports.
Pesquisar por campo
É possível filtrar os resultados por campos específicos de mensagens ou espaços. Por exemplo:
create_time: filtra pelo horário em que a mensagem foi criada. Exemplo:create_time > "2023-01-01T00:00:00Z"sender.name: filtra pelo nome do recurso do remetente. Exemplo:sender.name = "users/1234567890"space.name: limita a pesquisa a um espaço específico. Exemplo:space.name = "spaces/ABCDEFGH"space.display_name: filtra espaços com base em uma correspondência parcial do nome de exibição. Os resultados são limitados às cinco principais correspondências de espaço. Exemplo:space.display_name:Projectattachment: verifica a presença de anexos. Exemplo:attachment:*annotations.user_mentions.user.name: filtra por menções. Exemplo:annotations.user_mentions.user.name:"users/me"
Pesquisar usando funções
A filtragem avançada está disponível nas seguintes funções:
has_link: retorna mensagens que contêm pelo menos um hiperlink.is_unread: retorna mensagens que não foram lidas pelo usuário.
Em diferentes campos, apenas os operadores AND são aceitos. Por exemplo:
sender.name = "users/me" AND is_unread().
Temas relacionados
- Formatar uma mensagem.
- Excluir uma mensagem.
- Receber detalhes sobre uma mensagem.
- Listar mensagens em um espaço.
- Atualizar uma mensagem.
- Enviar uma mensagem.