В этом документе объясняется, как использовать метод search в ресурсе Message API Google Chat для поиска сообщений, к которым имеет доступ авторизованный пользователь.
Благодаря аутентификации пользователя вы можете искать сообщения во всех беседах, к которым он присоединился, или в рамках конкретной беседы. Например, вы можете искать сообщения, содержащие определенные ключевые слова, упоминающие пользователя, непрочитанные или имеющие вложения.
В API чата сообщение чата представлено ресурсом Message . Хотя пользователи чата могут отправлять только текстовые сообщения, приложения чата могут использовать множество других функций обмена сообщениями, включая отображение статических или интерактивных пользовательских интерфейсов, сбор информации от пользователей и доставку сообщений в приватном режиме. Чтобы узнать больше о функциях обмена сообщениями, доступных в API чата, см. обзор сообщений Google Chat .
Предварительные требования
Node.js
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект в Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения чата.
- Установите библиотеку Node.js Cloud Client .
- Выберите область действия авторизации .
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел «Создание пространства» . Чтобы создать пространство в самом чате, посетите документацию в Справочном центре .
Python
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект в Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения чата.
- Установите библиотеку Python Cloud Client .
- Выберите область действия авторизации .
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел «Создание пространства» . Чтобы создать пространство в самом чате, посетите документацию в Справочном центре .
Java
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект в Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения чата.
- Установите библиотеку Java Cloud Client Library .
- Выберите область действия авторизации .
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел «Создание пространства» . Чтобы создать пространство в самом чате, посетите документацию в Справочном центре .
Apps Script
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект в Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения чата.
- Создайте автономный проект Apps Script и включите расширенную службу чата .
- Выберите область действия авторизации .
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел «Создание пространства» . Чтобы создать пространство в самом чате, посетите документацию в Справочном центре .
Поиск сообщений
Для поиска сообщений с аутентификацией пользователя передайте в запросе следующее:
Укажите область авторизации
chat.messages.readonlyилиchat.messages.Вызовите метод
SearchMessages.Установите
parentравнымspaces/-для поиска во всех пространствах, участником которых является пользователь. Использование любого другого значения приведет к ошибке.В поле
filterукажите строку поискового запроса. Запрос может включать ключевые слова и фильтры.
Приведенный ниже пример кода выполняет поиск непрочитанных сообщений, содержащих ключевое слово "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); } }
Используйте фильтры поиска и операторы.
Вы можете уточнить результаты поиска, используя ключевые слова, поля и функции в поле filter . Для получения дополнительной информации см. SearchMessagesRequest .
Поиск по ключевому слову
Для поиска сообщений, содержащих определенный текст, введите ключевые слова. Например, для поиска ожидающих отчетов используйте запрос pending reports .
Поиск по полю
Вы можете фильтровать результаты по определенным полям сообщения или пространства. Например:
-
create_time: Фильтр по времени создания сообщения. Пример:create_time > "2023-01-01T00:00:00Z" -
sender.name: Фильтр по имени ресурса отправителя. Пример:sender.name = "users/1234567890" -
space.name: Ограничить поиск определенным пространством. Пример:space.name = "spaces/ABCDEFGH" -
space.display_name: Фильтрация пространств на основе частичного совпадения их отображаемого имени. Результаты ограничены пятью наиболее подходящими совпадениями. Пример:space.display_name:Project -
attachment: Проверка наличия вложений. Пример:attachment:* -
annotations.user_mentions.user.name: Фильтр по упоминаниям. Пример:annotations.user_mentions.user.name:"users/me"
Поиск с использованием функций
Расширенная фильтрация доступна с помощью следующих функций:
-
has_link: Возвращает сообщения, содержащие хотя бы одну гиперссылку. -
is_unread: Возвращает сообщения, которые пользователь еще не прочитал.
В разных полях поддерживаются только операторы AND Например: sender.name = "users/me" AND is_unread() .
Связанные темы
- Отформатировать сообщение .
- Удалить сообщение .
- Получить подробную информацию о сообщении .
- Список сообщений в пространстве .
- Обновить сообщение .
- Отправить сообщение .