جستجوی پیام‌ها

این سند نحوه استفاده از روش search در منبع Message از API چت گوگل را برای جستجوی پیام‌هایی که کاربر احراز هویت شده به آنها دسترسی دارد، توضیح می‌دهد.

با احراز هویت کاربر ، می‌توانید پیام‌ها را در تمام مکالماتی که کاربر به آنها پیوسته است یا در یک مکالمه خاص جستجو کنید. به عنوان مثال، می‌توانید پیام‌هایی را جستجو کنید که حاوی کلمات کلیدی خاصی هستند، کاربر را منشن می‌کنند، خوانده نشده‌اند یا پیوست دارند.

در API چت، یک پیام چت توسط منبع Message نمایش داده می‌شود. در حالی که کاربران چت فقط می‌توانند پیام‌هایی حاوی متن ارسال کنند، برنامه‌های چت می‌توانند از بسیاری از ویژگی‌های پیام‌رسانی دیگر، از جمله نمایش رابط‌های کاربری ایستا یا تعاملی، جمع‌آوری اطلاعات از کاربران و ارسال پیام‌ها به صورت خصوصی، استفاده کنند. برای کسب اطلاعات بیشتر در مورد ویژگی‌های پیام‌رسانی موجود برای API چت، به نمای کلی پیام‌های Google Chat مراجعه کنید.

پیش‌نیازها

نود جی اس

پایتون

جاوا

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

جستجوی پیام‌ها

برای جستجوی پیام‌هایی که احراز هویت کاربر در آنها لحاظ شده است، کد زیر را در درخواست خود وارد کنید:

  • دامنه مجوز chat.messages.readonly یا chat.messages را مشخص کنید.

  • متد SearchMessages را فراخوانی کنید.

  • برای جستجو در تمام فضاهایی که کاربر عضو آنهاست، parent برابر با spaces/- قرار دهید. استفاده از هر مقدار دیگری منجر به خطا می‌شود.

  • در فیلد filter ، یک رشته پرس‌وجوی جستجو مشخص کنید. پرس‌وجو می‌تواند شامل کلمات کلیدی و فیلترها باشد.

نمونه کد زیر پیام‌های خوانده نشده‌ای را که حاوی کلمه کلیدی "tasks" هستند، جستجو می‌کند:

نود جی اس

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

پایتون

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

جاوا

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

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

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); } }

استفاده از فیلترها و عملگرهای جستجو

You can refine your search results by using keywords, fields, and functions in the filter field. For more information, see 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() .