جستجو برای فضاها

این راهنما نحوه استفاده از متد search() در منبع Space از API چت گوگل را برای جستجوی فضاهای نامگذاری شده در یک سازمان Google Workspace توضیح می‌دهد.

منبع Space مکانی را نشان می‌دهد که افراد و برنامه‌های چت می‌توانند در آن پیام ارسال کنند، فایل‌ها را به اشتراک بگذارند و با یکدیگر همکاری کنند. چندین نوع Space وجود دارد:

  • پیام‌های مستقیم (DM) مکالماتی بین دو کاربر یا یک کاربر و یک برنامه چت هستند.
  • چت‌های گروهی، مکالماتی بین سه یا چند کاربر و برنامه‌های چت هستند.
  • فضاهای نامگذاری شده مکان‌های پایداری هستند که افراد در آنها پیام می‌فرستند، فایل‌ها را به اشتراک می‌گذارند و با یکدیگر همکاری می‌کنند.

اگر مدیر Google Workspace هستید و می‌خواهید در تمام فضاهای سازمان خود، از جمله فضاهای خصوصی که به آنها ملحق نشده‌اید، جستجو کنید، برای فراخوانی API با امتیازات مدیر ( useAdminAccess=true )، به بخش «جستجو و مدیریت فضاها به عنوان مدیر Google Workspace» مراجعه کنید.

هنگام جستجوی فضاهایی با احراز هویت کاربر بدون امتیازات مدیر، این روش فضاهای نامگذاری شده ( spaceType از SPACE ) را که کاربر احراز هویت شده به آنها دسترسی دارد، مانند فضاهایی که عضو آنها است، در سازمان خود جستجو می‌کند.

پیش‌نیازها

نود جی اس

پایتون

جاوا

اسکریپت برنامه‌ها

جستجوی فضاهایی با احراز هویت کاربر

برای جستجوی فضاهای خالی در گوگل چت بدون دسترسی ادمین، موارد زیر را در درخواست خود وارد کنید:

  • با احراز هویت کاربر ، دامنه مجوز 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 پشتیبانی می‌شوند.

مثال زیر فضاهای نامگذاری شده‌ای را جستجو می‌کند که شامل "پروژه" در نام نمایشی خود هستند:

نود جی اس

/**
 * 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);

پایتون

"""
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()

جاوا

/**
 * 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());
      }
    }
  }
}

اسکریپت برنامه‌ها

/**
 * 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 چت، فهرستی صفحه‌بندی‌شده از فضاهایی را برمی‌گرداند که با پرس‌وجو مطابقت دارند و برای کاربر فراخواننده قابل دسترسی هستند.