Ce document explique comment utiliser la
search
méthode sur la ressource Message de l'API Google Chat pour rechercher les messages auxquels
l'utilisateur authentifié a accès.
Avec l'authentification de l'utilisateur, vous pouvez rechercher des messages dans toutes les conversations auxquelles l'utilisateur a participé ou dans une conversation spécifique. Par exemple, vous pouvez rechercher des messages contenant des mots clés spécifiques, mentionnant l'utilisateur, non lus ou contenant des pièces jointes.
Dans l'API Chat, un message de chat est représenté par la
Message ressource.
Alors que les utilisateurs Chat ne peuvent envoyer que des messages contenant du texte, les applications Chat peuvent utiliser de nombreuses autres fonctionnalités de messagerie, y compris afficher des interfaces utilisateur statiques ou interactives, collecter des informations auprès des utilisateurs et envoyer des messages de manière privée. Pour en savoir plus sur les fonctionnalités de messagerie
disponibles pour l'API Chat, consultez la
présentation des messages Google Chat.
Prérequis
Node.js
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurez l'écran de consentement OAuth.
- Activez et configurez l'API Google Chat avec un nom, une icône et une description pour votre application Chat.
- Installez la bibliothèque cliente Cloud Node.js.
- Choisissez un champ d'application d'autorisation.
- Un espace Google Chat. Pour en créer un à l'aide de l'API Google Chat, consultez Créer un espace. Pour en créer un dans Chat, consultez la documentation du Centre d'aide.
Python
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurez l'écran de consentement OAuth.
- Activez et configurez l'API Google Chat avec un nom, une icône et une description pour votre application Chat.
- Installez la bibliothèque cliente Cloud Python.
- Choisissez un champ d'application d'autorisation.
- Un espace Google Chat. Pour en créer un à l'aide de l'API Google Chat, consultez Créer un espace. Pour en créer un dans Chat, consultez la documentation du Centre d'aide.
Java
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurez l'écran de consentement OAuth.
- Activez et configurez l'API Google Chat avec un nom, une icône et une description pour votre application Chat.
- Installez la bibliothèque cliente Cloud Java .
- Choisissez un champ d'application d'autorisation.
- Un espace Google Chat. Pour en créer un à l'aide de l'API Google Chat, consultez Créer un espace. Pour en créer un dans Chat, consultez la documentation du Centre d'aide.
Apps Script
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurez l'écran de consentement OAuth.
- Activez et configurez l'API Google Chat avec un nom, une icône et une description pour votre application Chat.
- Créez un projet Apps Script autonome, et activez le service Chat avancé.
- Choisissez un champ d'application d'autorisation.
- Un espace Google Chat. Pour en créer un à l'aide de l'API Google Chat, consultez Créer un espace. Pour en créer un dans Chat, consultez la documentation du Centre d'aide.
Rechercher des messages
Pour rechercher des messages avec l'authentification de l'utilisateur, transmettez les éléments suivants dans votre requête :
Spécifiez le champ d'application d'autorisation
chat.messages.readonlyouchat.messages.Appelez la
SearchMessagesméthode.Définissez
parentsurspaces/-pour effectuer une recherche dans tous les espaces dont l'utilisateur est membre. Toute autre valeur génère une erreur.Dans le champ
filter, spécifiez une chaîne de requête de recherche. La requête peut inclure des mots clés et des filtres.
L'exemple de code suivant recherche les messages non lus contenant le mot clé "tasks" :
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);
}
}
Utiliser des filtres et des opérateurs de recherche
Vous pouvez affiner vos résultats de recherche à l'aide de mots clés, de champs et de fonctions dans le champ filter. Pour en savoir plus, consultez
SearchMessagesRequest.
Recherche par mot clé
Pour rechercher des messages contenant un texte spécifique, saisissez les mots clés. Par exemple, pour rechercher les rapports en attente, utilisez pending reports.
Recherche par champ
Vous pouvez filtrer les résultats par message ou par champ d'espace spécifique. Exemple :
create_time: filtrez par heure de création du message. Exemple :create_time > "2023-01-01T00:00:00Z"sender.name: filtrez par nom de ressource de l'expéditeur. Exemple :sender.name = "users/1234567890"space.name: limitez la recherche à un espace spécifique. Exemple :space.name = "spaces/ABCDEFGH"space.display_name: filtrez les espaces en fonction d'une correspondance partielle de leur nom à afficher. Les résultats sont limités aux cinq premières correspondances d'espace. Exemple :space.display_name:Projectattachment: vérifiez la présence de pièces jointes. Exemple :attachment:*annotations.user_mentions.user.name: filtrez par mentions. Exemple :annotations.user_mentions.user.name:"users/me"
Rechercher à l'aide de fonctions
Le filtrage avancé est disponible via les fonctions suivantes :
has_link: renvoie les messages contenant au moins un lien hypertexte.is_unread: renvoie les messages qui n'ont pas été lus par l'utilisateur.
Seuls les opérateurs AND sont compatibles entre les différents champs. Exemple :
sender.name = "users/me" AND is_unread().
Articles associés
- Mettre un message en forme.
- Supprimer un message.
- Obtenir des informations sur un message.
- Lister les messages d'un espace.
- Mettre à jour un message.
- Envoyer un message.