En este documento, se explica cómo usar el
search
método en el recurso Message de la API de Google Chat para buscar mensajes a los que
el usuario autenticado tiene acceso.
Con la autenticación de usuarios, puedes buscar mensajes en todas las conversaciones a las que se unió el usuario o en una conversación específica. Por ejemplo, puedes buscar mensajes que contengan palabras clave específicas, mencionen al usuario, no se hayan leído o tengan archivos adjuntos.
En la API de Chat, un mensaje de Chat se representa con el
Message recurso.
Si bien los usuarios de Chat solo pueden enviar mensajes que contienen 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 entregar 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
- 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, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de Cloud para Node.js .
- Elige un alcance de autorización.
- Un espacio de Google Chat. Para crear uno con la API de Google Chat, consulta Crea un espacio. Para crear uno en Chat, visita la documentación del Centro de ayuda.
Python
- 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, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de Cloud para Python.
- Elige un alcance de autorización.
- Un espacio de Google Chat. Para crear uno con la API de Google Chat, consulta Crea un espacio. Para crear uno en Chat, visita la documentación del Centro de ayuda.
Java
- 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, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de Cloud para Java.
- Elige un alcance de autorización.
- Un espacio de Google Chat. Para crear uno con la API de Google Chat, consulta Crea un espacio. Para crear uno en Chat, visita la documentación del Centro de ayuda.
Apps Script
- 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, ícono y descripción para tu app de Chat.
- Crea un proyecto independiente de Apps Script, y activa el servicio avanzado de Chat.
- Elige un alcance de autorización.
- Un espacio de Google Chat. Para crear uno con la API de Google Chat, consulta Crea un espacio. Para crear uno en Chat, visita la documentación del Centro de ayuda.
Buscar mensajes
Para buscar mensajes con la autenticación de usuarios, pasa lo siguiente en tu solicitud:
Especifica el alcance de autorización
chat.messages.readonlyochat.messages.Llama al
SearchMessagesmétodo.Establece
parentenspaces/-para buscar en todos los espacios de los que el usuario es miembro. Si usas cualquier otro valor, se generará un error.En el campo
filter, especifica una cadena de consulta de búsqueda. La consulta puede incluir palabras clave y filtros.
En la siguiente muestra de código, se buscan mensajes no leídos que contienen la palabra clave "tareas":
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 y operadores de búsqueda
Puedes refinar los resultados de la búsqueda con palabras clave, campos y funciones en el campo filter. Para obtener más información, consulta
SearchMessagesRequest.
Buscar por palabra clave
Para buscar mensajes que contengan texto específico, ingresa las palabras clave. Por ejemplo, para buscar informes pendientes, usa pending reports.
Buscar por campo
Puedes filtrar los resultados por campos específicos de mensajes o espacios. Por ejemplo:
create_time: Filtra por la hora en que se creó el mensaje. Ejemplo:create_time > "2023-01-01T00:00:00Z"sender.name: Filtra por el nombre del recurso del remitente. Ejemplo:sender.name = "users/1234567890"space.name: Limita la búsqueda a un espacio específico. Ejemplo:space.name = "spaces/ABCDEFGH"space.display_name: Filtra espacios según una coincidencia parcial de su nombre visible. Los resultados se limitan a las cinco coincidencias principales de espacios. Ejemplo:space.display_name:Projectattachment: Verifica la presencia de archivos adjuntos. Ejemplo:attachment:*annotations.user_mentions.user.name: Filtra por menciones. Ejemplo:annotations.user_mentions.user.name:"users/me"
Buscar con funciones
El filtrado avanzado está disponible a través de las siguientes funciones:
has_link: Muestra los mensajes que contienen al menos un hipervínculo.is_unread: Muestra los mensajes que el usuario no leyó.
En diferentes campos, solo se admiten operadores AND. Por ejemplo:
sender.name = "users/me" AND is_unread().
Temas relacionados
- Dar formato a un mensaje.
- Borrar un mensaje.
- Obtener detalles sobre un mensaje.
- Mostrar mensajes en un espacio.
- Actualizar un mensaje.
- Enviar un mensaje.