В этом руководстве объясняется, как использовать метод search() ресурса Space в Google Chat API для поиска именованных пространств в организации Google Workspace.
Ресурс Space представляет собой место, где люди и приложения для чата могут отправлять сообщения, обмениваться файлами и сотрудничать. Существует несколько типов пространств:
- Личные сообщения (DM) — это переписка между двумя пользователями или между пользователем и приложением для чата.
- Групповые чаты — это беседы между тремя или более пользователями в чат-приложениях.
- Именованные пространства — это постоянно доступные места, где люди отправляют сообщения, обмениваются файлами и сотрудничают.
Если вы являетесь администратором Google Workspace и хотите выполнять поиск по всем пространствам в вашей организации, включая частные пространства, к которым вы не присоединились, см. раздел «Поиск и управление пространствами от имени администратора Google Workspace» , чтобы вызвать API с правами администратора ( useAdminAccess=true ).
При поиске пространств с аутентификацией пользователя без прав администратора метод выполняет поиск в именованных пространствах ( spaceType типа SPACE ), к которым имеет доступ аутентифицированный пользователь, например, в пространствах, членами которых он является, в рамках своей организации.
Предварительные требования
Node.js
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект в Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения чата.
- Установите библиотеку Node.js Cloud Client .
- Создайте учетные данные клиента OAuth для настольного приложения. Чтобы запустить пример из этого руководства, сохраните учетные данные в виде JSON-файла с именем
credentials.jsonв локальной директории.
- Выберите область авторизации , которая поддерживает аутентификацию пользователей.
Python
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект в Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения чата.
- Установите библиотеку Python Cloud Client .
- Создайте учетные данные клиента OAuth для настольного приложения. Чтобы запустить пример из этого руководства, сохраните учетные данные в виде JSON-файла с именем
credentials.jsonв локальной директории.
- Выберите область авторизации , которая поддерживает аутентификацию пользователей.
Java
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект в Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения чата.
- Установите библиотеку Java Cloud Client Library .
- Создайте учетные данные клиента OAuth для настольного приложения. Чтобы запустить пример из этого руководства, сохраните учетные данные в виде JSON-файла с именем
credentials.jsonв локальной директории.
- Выберите область авторизации , которая поддерживает аутентификацию пользователей.
Apps Script
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект в Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения чата.
- Создайте автономный проект Apps Script и включите расширенную службу чата .
- Выберите область авторизации , которая поддерживает аутентификацию пользователей.
Поиск помещений с аутентификацией пользователя
Для поиска помещений в Google Chat без прав администратора передайте в запросе следующее:
- При аутентификации пользователя укажите область авторизации
chat.spaces.readonlyилиchat.spaces. - Вызовите метод
search()для ресурсаSpace. - Установите
useAdminAccessвfalse(или опустите этот параметр). - Укажите параметры поискового
queryдля фильтрации результатов:-
spaceType = "SPACE"- обязательно, если указанquery, и единственное поддерживаемое значение —SPACE. -
displayName— фильтр по отображаемому имени пространства с использованием оператораHAS(:). Например,displayName:"Project". Текст для сопоставления токенизируется, и каждый токен сопоставляется с префиксом без учета регистра и независимо как подстрока в любом местеdisplayNameпространства. Примечание: еслиuseAdminAccessравноfalse,displayNameнеобходим в вашем запросе для получения осмысленных результатов; в противном случае метод возвращает пустой ответ. -
externalUserAllowed— опционально позволяет фильтровать данные по разрешению доступа внешних гостей в пространство (trueилиfalse).
-
- При желании укажите
pageSize, чтобы ограничить максимальное количество возвращаемых записей (до1000), илиpageToken, чтобы получить последующие страницы результатов. - При желании укажите
orderByдля сортировки результатов поиска (createTime descилиrelevance desc). Примечание:relevance descдоступен в рамках программы предварительного просмотра для разработчиков Google Workspace .
В разных полях запроса поддерживаются только операторы AND . Например: spaceType = "SPACE" AND displayName:"Hello" AND externalUserAllowed = "true" . В полях displayName и externalUserAllowed поддерживаются операторы OR , если необходимо сопоставить несколько критериев.
В следующем примере выполняется поиск именованных пространств, в отображаемом имени которых содержится слово "Project":
Node.js
/**
* This sample shows how to search for spaces without administrator privileges.
*
* It relies on the @google-apps/chat npm package.
*/
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
const {ChatServiceClient} = require('@google-apps/chat');
const {auth} = require('google-auth-library');
async function main() {
// Create a client
const chatClient = new ChatServiceClient({
authClient: await auth.getClient({
scopes: ['https://www.googleapis.com/auth/chat.spaces.readonly']
})
});
// Initialize request arguments.
// When useAdminAccess is false, spaceType and displayName are required in query.
const request = {
query: 'spaceType = "SPACE" AND displayName:"Project"',
useAdminAccess: false
};
// Call the API and iterate over the paginated response
const iterable = chatClient.searchSpacesAsync(request);
for await (const result of iterable) {
console.log('Found space:', result.space.displayName, result.space.name);
}
}
main().catch(console.error);
Python
"""
This sample shows how to search for spaces without administrator privileges.
"""
from google.apps import chat_v1
import google.auth
# Read the documentation for more details:
# https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
def search_spaces():
# Create a client
scopes = ["https://www.googleapis.com/auth/chat.spaces.readonly"]
credentials, _ = google.auth.default(scopes=scopes)
client = chat_v1.ChatServiceClient(credentials=credentials)
# Initialize request arguments.
# When use_admin_access is False, space_type and display_name are required in query.
request = chat_v1.SearchSpacesRequest(
query='spaceType = "SPACE" AND displayName:"Project"',
use_admin_access=False
)
# Make the request and iterate over the paginated results.
page_result = client.search_spaces(request)
for result in page_result.results:
print(f"Found space: {result.space.display_name} ({result.space.name})")
if __name__ == "__main__":
search_spaces()
Java
/**
* This sample shows how to search for spaces without administrator privileges.
*/
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ChatServiceClient.SearchSpacesPagedResponse;
import com.google.chat.v1.SearchSpacesRequest;
import com.google.chat.v1.SearchSpaceResult;
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
public class SearchSpaces {
public static void main(String[] args) 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 = AuthenticationUtils.createClientWithUserCredentials(
ImmutableList.of("https://www.googleapis.com/auth/chat.spaces.readonly"))) {
SearchSpacesRequest request = SearchSpacesRequest.newBuilder()
.setQuery("spaceType = \"SPACE\" AND displayName:\"Project\"")
.setUseAdminAccess(false)
.build();
SearchSpacesPagedResponse response = chatServiceClient.searchSpaces(request);
for (SearchSpaceResult result : response.iterateAll()) {
System.out.printf("Found space: %s (%s)\n", result.space.getDisplayName(), result.space.getName());
}
}
}
}
Apps Script
/**
* This sample shows how to search for spaces without administrator privileges.
*/
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
function searchSpaces() {
try {
// Call the API
// When useAdminAccess is false, spaceType and displayName are required in query.
const response = Chat.Spaces.search({
query: 'spaceType = "SPACE" AND displayName:"Project"',
useAdminAccess: false
});
if (response.results && response.results.length > 0) {
response.results.forEach(result => {
console.log('Found space: %s (%s)', result.space.displayName, result.space.name);
});
} else {
console.log('No matching spaces found.');
}
} catch (err) {
console.log('Failed to search spaces: ' + err.message);
}
}
API чата возвращает постраничный список пространств , соответствующих запросу и доступных вызывающему пользователю.
Связанные темы
- Создайте пространство
- Обустройте пространство
- Получите подробную информацию о помещении.
- Пространства списка
- Обновить пространство
- Удалите пробел
- Поиск и управление рабочими пространствами в качестве администратора Google Workspace.