En este documento, se explica cómo usar el método search en el recurso Message de la API de Google Chat para buscar mensajes a los que tiene acceso el usuario autenticado.
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 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 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
- Una cuenta de Google Workspace para empresas o Enterprise 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, un ícono y una descripción para tu app de Chat.
- Instala la biblioteca cliente de Cloud de Node.js.
- Elige un alcance de autorización.
- Es un espacio de Chat de Google. 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
- Una cuenta de Google Workspace para empresas o Enterprise 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, un ícono y una descripción para tu app de Chat.
- Instala la biblioteca cliente de Cloud de Python.
- Elige un alcance de autorización.
- Es un espacio de Chat de Google. 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
- Una cuenta de Google Workspace para empresas o Enterprise 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, un ícono y una descripción para tu app de Chat.
- Instala la biblioteca cliente de Cloud de Java.
- Elige un alcance de autorización.
- Es un espacio de Chat de Google. 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
- Una cuenta de Google Workspace para empresas o Enterprise 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, un ícono y una descripción para tu app de Chat.
- Crea un proyecto independiente de Apps Script y activa el servicio de Chat avanzado.
- 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 autenticación del usuario, pasa lo siguiente en tu solicitud:
Especifica el alcance de autorización
chat.messages.readonlyochat.messages.Realiza una llamada al método
SearchMessages.Establece
parentenspaces/-para buscar en todos los espacios de los que el usuario es miembro. Si se usa cualquier otro valor, se producirá un error.En el campo
filter, especifica una cadena de consulta. La búsqueda 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);
}
}
Cómo usar filtros y operadores de búsqueda
Puedes definir mejor 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 fecha y 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 los espacios en función de una coincidencia parcial de su nombre visible. Los resultados se limitan a las cinco coincidencias de espacio más relevantes. Ejemplo:space.display_name:Projectattachment: Comprueba la presencia de archivos adjuntos. Ejemplo:attachment:*annotations.user_mentions.user.name: Filtra por menciones. Ejemplo:annotations.user_mentions.user.name:"users/me"
Cómo 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: Devuelve los mensajes que el usuario no leyó.
En diferentes campos, solo se admiten los operadores AND. Por ejemplo: sender.name = "users/me" AND is_unread()
Temas relacionados
- Dar formato a un mensaje
- Borrar un mensaje
- Obtén detalles sobre un mensaje.
- Enumera los mensajes en un espacio.
- Actualiza un mensaje.
- Envíeles un mensaje.