Ce document explique comment utiliser la méthode search sur la ressource Message de l'API Google Chat pour rechercher les messages auxquels l'utilisateur authentifié a accès.
Avec l'authentification des utilisateurs, 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 les messages qui contiennent des mots clés spécifiques, mentionnent l'utilisateur, sont non lus ou comportent des pièces jointes.
Dans l'API Chat, un message Chat est représenté par la ressource Message.
Alors que les utilisateurs de 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 Présentation des messages Google Chat.
Prérequis
Node.js
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat.
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurer l'écran de consentement OAuth
- Activez et configurez l'API Google Chat en attribuant un nom, une icône et une description à votre application Chat.
- Installez la bibliothèque cliente Cloud Node.js.
- Choisissez un champ d'application de l'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
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat.
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurer l'écran de consentement OAuth
- Activez et configurez l'API Google Chat en attribuant un nom, une icône et une description à votre application Chat.
- Installez la bibliothèque cliente Cloud Python.
- Choisissez un champ d'application de l'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
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat.
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurer l'écran de consentement OAuth
- Activez et configurez l'API Google Chat en attribuant un nom, une icône et une description à votre application Chat.
- Installez la bibliothèque cliente Cloud Java.
- Choisissez un champ d'application de l'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
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat.
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurer l'écran de consentement OAuth
- Activez et configurez l'API Google Chat en attribuant un nom, une icône et une description à votre application Chat.
- Créez un projet Apps Script autonome et activez le service Chat avancé.
- Choisissez un champ d'application de l'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 authentification de l'utilisateur, transmettez les éléments suivants dans votre requête :
Indiquez le champ d'application de l'autorisation
chat.messages.readonlyouchat.messages.Appelez la méthode
SearchMessages.Définissez
parentsurspaces/-pour effectuer une recherche dans tous les espaces dont l'utilisateur est membre. Toute autre valeur entraînera 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 en utilisant des mots clés, des champs et des 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.
Rechercher par champ
Vous pouvez filtrer les résultats par champ de message ou d'espace spécifique. Exemple :
create_time: filtrez par date de création du message. Exemple :create_time > "2023-01-01T00:00:00Z"sender.name: filtre par nom de ressource de l'expéditeur. Exemple :sender.name = "users/1234567890"space.name: limite 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 espaces les plus pertinents. Exemple :space.display_name:Projectattachment: vérifie 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 que l'utilisateur n'a pas lus.
Seuls les opérateurs AND sont acceptés dans les différents champs. Exemple : sender.name = "users/me" AND is_unread().
Articles associés
- Mettre en forme un message
- Supprimer un message
- Obtenir des informations sur un message
- Lister les messages d'un espace
- Modifier un message
- Envoyer un message.