Method: spaces.messages.search

پیام‌هایی را در Google Chat جستجو می‌کند که کاربر تماس‌گیرنده به آن‌ها دسترسی دارد. فهرستی از پیام‌های منطبق با معیارهای جستجو را برمی‌گرداند.

برای جستجو در همه فضاهایی که کاربر به آن‌ها دسترسی دارد، parent را روی spaces/- تنظیم کنید. استفاده از هر مقدار دیگری برای parent منجر به خطای INVALID_ARGUMENT می‌شود. فیلد name پیام‌های برگشتی با نام کامل منبع پر شده است که شامل space خاصی است که پیام در آن قرار دارد.

این API همه انواع پیام را برنمی‌گرداند. انواع پیام‌های فهرست‌شده در زیر در پاسخ گنجانده نمی‌شوند. از messages.list برای فهرست کردن همه پیام‌ها استفاده کنید.

  • پیام‌های خصوصی که برای کاربر اصالت‌سنجی‌شده قابل‌مشاهده است.
  • پیام‌هایی که برنامه‌های Chat در فضاها یا گپ‌های گروهی پست می‌کنند.
  • پیام‌ها در پیام مستقیم برنامه Chat.
  • پیام‌های کاربران مسدودشده.
  • پیام‌های موجود در فضاهایی که تماس‌گیرنده بی‌صدا کرده است.

به اصالت‌سنجی کاربر با یکی از دامنه‌های مجوز زیر نیاز دارد:

  • https://www.googleapis.com/auth/chat.messages.readonly
  • https://www.googleapis.com/auth/chat.messages

درخواست HTTP

POST https://chat.googleapis.com/v1/{parent=spaces/*}/messages:search

نشانی وب از نحو تراتبدیل gRPC استفاده می‌کند.

پارامترهای مسیر

پارامترها
parent

string

الزامی. نام منبع فضایی که باید در آن جستجو شود.

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

برای محدود کردن جستجو به یک یا چند فضا، از space.name یا space.display_name در filter استفاده کنید.

متن درخواست

بدنه درخواست حاوی داده‌هایی با ساختار زیر است:

نمایش JSON
{
  "filter": string,
  "pageSize": integer,
  "pageToken": string,
  "orderBy": string,
  "markupSyntax": enum (MarkupSyntax),
  "view": enum (SearchMessagesView)
}
فیلدها
filter

string

الزامی. پرسمان جستجو.

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

همچنین می‌توانید نتایج را بااستفاده از فیلدهای پیام زیر فیلتر کنید:

  • createTime: مُهر زمان را در قالب RFC-3339 می‌پذیرد و عملگرهای مقایسه پشتیبانی‌شده عبارت‌اند از: < و >=.
  • sender.name: نام منبع فرستنده (users/{user}). فقط از = پشتیبانی می‌کند. می‌توانید از این ایمیل به‌عنوان نام مستعار برای {user} استفاده کنید. برای مثال، users/example@gmail.com، که example@gmail.com ایمیل کاربر Google Chat است.
  • ‫space.name: نام منبع فضایی که پیام در آن پست شده است. (spaces/{space}). فقط از = پشتیبانی می‌کند. اگر این فیلتر تنظیم نشده باشد، جستجو در همه پیام‌های مستقیم و فضاهایی که کاربر به‌عنوان عضو فضا به آن‌ها دسترسی دارد انجام می‌شود.
  • space.display_name: از عملگر : (دارد) پشتیبانی می‌کند و فضاها را براساس مطابقت جزئی نام نمایشی آن‌ها فیلتر می‌کند. نتایج به پنج فضا با بیشترین مطابقت محدود می‌شود. برای مثال، space.display_name:Project پیام‌ها را در پنج فضای برتر که حاوی کلمه «پروژه» در نام نمایشی‌شان هستند جستجو می‌کند.
  • space.space_type: نوع فضا. فقط از = پشتیبانی می‌کند. برای مثال، space.space_type="DIRECT_MESSAGE" فقط پیام‌های مستقیم را برمی‌گرداند. مقادیر ممکن عبارت‌اند از DIRECT_MESSAGE، GROUP_CHAT، و SPACE.
  • attachment: از عملگر :* (دارای هرکدام) برای بررسی وجود پیوست پشتیبانی می‌کند. اگر attachment:* مشخص شده باشد، فقط پیام‌هایی که حداقل یک پیوست دارند برگردانده می‌شوند.
  • annotations.user_mentions.user.name: نام منبع کاربر نامبرده (users/{user}). فقط از : (دارد) پشتیبانی می‌کند. برای مثال: annotations.user_mentions.user.name:"users/1234567890" فقط پیام‌هایی را برمی‌گرداند که حاوی نام بردن از کاربر مشخص‌شده باشد. یا می‌توان از نام مستعار me برای فیلتر کردن پیام‌هایی که به کاربر تماس‌گیرنده اشاره می‌کنند استفاده کرد، برای مثال: annotations.user_mentions.user.name:users/me. همچنین می‌توانید از این ایمیل به‌عنوان نام مستعار برای {user} استفاده کنید، برای مثال users/example@gmail.com.

برای فیلتر کردن پیشرفته، عملکردهای زیر نیز دردسترس است:

  • ‫has_link(): فقط پیام‌هایی را برمی‌گرداند که حداقل یک اَبَرپیوند در نوشتار پیام داشته باشند.
  • ‫is_unread(): پیام‌هایی را که کاربر تماس‌گیرنده خوانده است فیلتر می‌کند.

استفاده از فیلترهای space.display_name یا space.space_type مستلزم این است که اطلاعات کاربری تماس‌گیرنده شامل یکی از گستره‌های مجوز زیر باشد:

  • https://www.googleapis.com/auth/chat.spaces.readonly
  • https://www.googleapis.com/auth/chat.spaces

استفاده از فیلتر is_unread() مستلزم این است که اطلاعات کاربری تماس‌گیرنده شامل یکی از دامنه‌های مجوز زیر باشد:

  • https://www.googleapis.com/auth/chat.users.readstate.readonly
  • https://www.googleapis.com/auth/chat.users.readstate

در فیلدهای مختلف، فقط از عملگرهای AND پشتیبانی می‌شود. نمونه معتبر sender.name = "users/1234567890" AND is_unread() است. کلمه AND اختیاری است و اگر حذف شود، به‌طور ضمنی درنظر گرفته می‌شود. برای مثال، sender.name = "users/1234567890" is_unread() معتبر است و معادل مثال قبلی است. sender.name = "users/1234567890" OR is_unread() نمونه نامعتبری است زیرا OR بین فیلدهای مختلف پشتیبانی نمی‌شود.

در همان زمینه:

  • createTime فقط از AND پشتیبانی می‌کند و فقط برای نشان دادن یک بازه، مثل createTime >= "2022-01-01T00:00:00+00:00" AND createTime < "2023-01-01T00:00:00+00:00"، قابل‌استفاده است.
  • sender.name فقط از عملگر OR پشتیبانی می‌کند، برای مثال: sender.name = "users/1234567890" OR sender.name = "users/0987654321".
  • space.name فقط از عملگر OR پشتیبانی می‌کند، برای مثال: space.name = "spaces/ABCDEFGH" OR space.name = "spaces/QWERTYUI".
  • space.display_name از عملگرهای AND و OR پشتیبانی می‌کند، اما نه از ترکیب هر دو. برای مثال: space.display_name:Project AND space.display_name:Tasks پیام‌هایی را برمی‌گرداند که در فضاهایی با نام‌های نمایشی حاوی هر دو Project و Tasks هستند، درحالی‌که space.display_name:Project OR space.display_name:Tasks پیام‌هایی را برمی‌گرداند که در فضاهایی با نام‌های نمایشی حاوی Project یا Tasks یا هر دو هستند.
  • space.space_type فقط از عملگر OR پشتیبانی می‌کند، برای مثال: space.space_type = "DIRECT_MESSAGE" OR space.space_type = "GROUP_CHAT".
  • annotations.user_mentions.user.name از اپراتورهای AND و OR پشتیبانی می‌کند، اما نه از ترکیب هر دو. برای مثال: annotations.user_mentions.user.name:"users/1234567890" AND annotations.user_mentions.user.name:"users/0987654321" فقط پیام‌هایی را برمی‌گرداند که هر دو کاربر را ذکر کرده باشند، درحالی‌که annotations.user_mentions.user.name:"users/1234567890" OR annotations.user_mentions.user.name:"users/0987654321" پیام‌هایی را برمی‌گرداند که یکی از کاربران یا هر دو را ذکر کرده باشند.

برای رفع ابهام اولویت عملگر هنگام ترکیب عملگرهای AND و OR در یک پُرسمان، پرانتز لازم است. برای مثال: (sender.name="users/me" OR sender.name="users/123456") AND is_unread(). درغیراین‌صورت، پرانتز اختیاری است.

پُرسمان‌های نمونه زیر معتبر هستند:

"Pending reports" AND createTime >= "2023-01-01T00:00:00Z"

sender.name = "users/example@gmail.com"

annotations.user_mentions.user.name:"users/0987654321"

attachment:* AND space.name = "spaces/ABCDEFGH"

tasks AND is_unread() AND sender.name = "users/1234567890"

"things to do" "urgent"

(sender.name = "users/1234567890")
AND (createTime < "2023-05-01T00:00:00Z")

tasks AND space.name = "spaces/ABCDEFGH" AND has_link()

"project one" is_unread()

space.display_name:Project tasks

حداکثر طول پُرسمان ۱۰۰۰ نویسه است.

پرس‌وجوهای نامعتبر با خطای INVALID_ARGUMENT توسط سرور رد می‌شوند.

pageSize

integer

اختیاری. حداکثر تعداد نتایج برای برگرداندن. سرویس ممکن است کمتر از این مقدار را برگرداند.

اگر مشخص نشده باشد، حداکثر ۲۵ مورد برگردانده می‌شود.

حداکثر مقدار ۱۰۰ است. اگر از مقداری بیشتر از ۱۰۰ استفاده کنید، به‌طور خودکار به ۱۰۰ تغییر می‌کند.

pageToken

string

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

هنگام صفحه‌بندی، همه پارامترهای ارائه‌شده دیگر باید با فراخوانی‌ای که کد صفحه را ارائه کرده است مطابقت داشته باشند. ارسال مقادیر مختلف به پارامترهای دیگر ممکن است به نتایج غیرمنتظره‌ای منجر شود.

orderBy

string

اختیاری. نحوه مرتب‌سازی فهرست نتایج.

مشخصه‌های پشتیبانی‌شده برای مرتب‌سازی عبارت‌اند از:

  • ‫createTime: نتایج را براساس زمان ایجاد پیام مرتب می‌کند. مقدار پیش‌فرض.
  • ‫relevance: نتایج را براساس مرتبط بودن مرتب می‌کند. ( Developer Preview)

ترتیب پیش‌فرض createTime desc است. فقط یک سفارش برای هر پُرسمان (createTime یا relevance) پشتیبانی می‌شود. فقط ترتیب نزولی (desc) پشتیبانی می‌شود و باید بعداز مشخصه ترتیب مشخص شود.

markupSyntax

enum (MarkupSyntax)

اختیاری. نحو خروجی موردنظر را برای فیلد formattedText پیام Chat مشخص می‌کند.

view

enum (SearchMessagesView)

اختیاری. مشخص می‌کند چه نوع نمای نتایج جستجویی برگردانده شود. پیش‌فرض SEARCH_MESSAGES_VIEW_BASIC است.

بدنه پاسخ

پیام پاسخ برای جستجوی پیام‌ها.

درصورت موفقیت‌آمیز بودن، بدنه پاسخ حاوی داده‌هایی با ساختار زیر است:

نمایش JSON
{
  "results": [
    {
      object (SearchMessageResult)
    }
  ],
  "nextPageToken": string
}
فیلدها
results[]

object (SearchMessageResult)

فهرست نتایج جستجویی که با پُرسمان مطابقت دارد.

nextPageToken

string

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

دامنه‌های مجوز

به یکی از دامنه‌های OAuth زیر نیاز دارد:

  • https://www.googleapis.com/auth/chat.messages
  • https://www.googleapis.com/auth/chat.messages.readonly

برای اطلاعات بیشتر، راهنمای مجوز را ببینید.

SearchMessagesView

انواع نمایی که برای نتایج جستجوی جزئی پشتیبانی می‌شود.

شمارشی‌ها
SEARCH_MESSAGES_VIEW_UNSPECIFIED مقدار پیش‌فرض / تنظیم‌نشده. API به‌طور پیش‌فرض روی نمای BASIC تنظیم می‌شود.
SEARCH_MESSAGES_VIEW_BASIC فقط پیام‌های منطبق را در نتایج شامل می‌شود، اما فراداده اضافی ندارد. این مقدار پیش‌فرض است.
SEARCH_MESSAGES_VIEW_FULL شامل همه موارد موجود در نتایج می‌شود: پیام‌های منطبق و فراداده‌های تکمیلی.

SearchMessageResult

یک مورد نتیجه از جستجوی پیام.

نمایش JSON
{
  "message": {
    object (Message)
  },
  "spaceMuteSetting": enum (MuteSetting),
  "read": boolean
}
فیلدها
message

object (Message)

پیام مطابقت‌داده‌شده.

spaceMuteSetting

enum (MuteSetting)

تنظیم بی‌صدا کردن کاربر تماس‌گیرنده برای فضایی که پیام در آن پست شده است. برنامه فراخواننده می‌تواند از این اطلاعات برای تصمیم‌گیری درباره نحوه پردازش پیام استفاده کند، بسته به اینکه فضا برای کاربر بی‌صدا شده است یا نه.

فقط درصورتی برگردانده می‌شود که نمای درخواست SEARCH_MESSAGES_VIEW_FULL باشد و اطلاعات کاربری تماس‌گیرنده شامل گستره مجوز زیر باشد:

  • https://www.googleapis.com/auth/chat.users.spacesettings
read

boolean

نشان می‌دهد که آیا پیام منطبق توسط کاربر تماس‌گیرنده خوانده شده است یا نه.

فقط درصورتی برگردانده می‌شود که نمای درخواست SEARCH_MESSAGES_VIEW_FULL باشد و اطلاعات کاربری تماس‌گیرنده شامل یکی از گستره‌های مجوز زیر باشد:

  • https://www.googleapis.com/auth/chat.users.readstate.readonly
  • https://www.googleapis.com/auth/chat.users.readstate