Method: spaces.messages.search

কলকারী ব্যবহারকারীর অ্যাক্সেস আছে এমন গুগল চ্যাট মেসেজগুলো অনুসন্ধান করে। অনুসন্ধানের শর্তের সাথে মিলে যাওয়া মেসেজগুলোর একটি তালিকা ফেরত দেয়।

ব্যবহারকারীর অ্যাক্সেস আছে এমন সমস্ত স্পেস জুড়ে অনুসন্ধান করতে, parent কে spaces/- এ সেট করুন। parent জন্য অন্য কোনো মান ব্যবহার করলে একটি INVALID_ARGUMENT ত্রুটি দেখা দেবে। ফেরত আসা মেসেজগুলির name ফিল্ডে সম্পূর্ণ রিসোর্স name পূরণ করা থাকে, যার মধ্যে মেসেজটি যে নির্দিষ্ট space রয়েছে তার নামও অন্তর্ভুক্ত থাকে।

এই API সব ধরনের মেসেজ ফেরত দেয় না। নিচে তালিকাভুক্ত মেসেজের ধরনগুলো রেসপন্সে অন্তর্ভুক্ত নয়। সব মেসেজের তালিকা দেখতে messages.list ব্যবহার করুন।

  • ব্যক্তিগত বার্তা যা প্রমাণীকৃত ব্যবহারকারী দেখতে পান।
  • চ্যাট অ্যাপের মাধ্যমে স্পেস বা গ্রুপ চ্যাটে পোস্ট করা বার্তা।
  • চ্যাট অ্যাপের ডিএম-এ বার্তা।
  • ব্লক করা ব্যবহারকারীদের বার্তা।
  • যেসব স্পেস কলার মিউট করে রেখেছেন, সেগুলোর মেসেজ।

নিম্নলিখিত অনুমোদন পরিধিগুলির মধ্যে যেকোনো একটির মাধ্যমে ব্যবহারকারীর প্রমাণীকরণ প্রয়োজন:

  • 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

URL-টিতে gRPC ট্রান্সকোডিং সিনট্যাক্স ব্যবহার করা হয়েছে।

পথের পরামিতি

প্যারামিটার
parent

string

আবশ্যক। যে স্থানের মধ্যে অনুসন্ধান করতে হবে, তার রিসোর্স নাম।

ব্যবহারকারীর অ্যাক্সেস আছে এমন সমস্ত স্পেসে অনুসন্ধান করার জন্য, এই ফিল্ডটি spaces/- এ সেট করুন। parent এর জন্য অন্য কোনো মান ব্যবহার করলে INVALID_ARGUMENT ত্রুটি দেখা দেবে।

অনুসন্ধানকে এক বা একাধিক স্পেসে সীমাবদ্ধ করতে, filter space.name বা space.display_name ব্যবহার করুন।

অনুরোধকারী শরীর

অনুরোধের মূল অংশে নিম্নলিখিত কাঠামোসহ ডেটা থাকে:

JSON উপস্থাপনা
{
  "filter": string,
  "pageSize": integer,
  "pageToken": string,
  "orderBy": string,
  "view": enum (SearchMessagesView)
}
ক্ষেত্র
filter

string

আবশ্যক। একটি অনুসন্ধান ক্যোয়ারি।

কোয়েরিতে এক বা একাধিক সার্চ কীওয়ার্ড নির্দিষ্ট করা যেতে পারে, যা ফলাফল ফিল্টার করতে ব্যবহৃত হয়।

এছাড়াও আপনি নিম্নলিখিত মেসেজ ফিল্ডগুলো ব্যবহার করে ফলাফল ফিল্টার করতে পারেন:

  • createTime : এটি RFC-3339 ফরম্যাটে একটি টাইমস্ট্যাম্প গ্রহণ করে এবং সমর্থিত তুলনা অপারেটরগুলো হলো: < এবং >=
  • sender.name : প্রেরকের রিসোর্স নাম ( users/{user} )। শুধুমাত্র = সমর্থিত। আপনি {user} এর জন্য ই-মেইলটিকে একটি উপনাম (alias) হিসেবে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, users/example@gmail.com , যেখানে example@gmail.com হলো গুগল চ্যাট ব্যবহারকারীর ই-মেইল।
  • space.name : যে স্পেসে বার্তাটি পোস্ট করা হয়েছে, তার রিসোর্স নাম। ( spaces/{space} )। শুধুমাত্র = সমর্থিত। যদি এই ফিল্টারটি সেট করা না থাকে, তাহলে ব্যবহারকারীর স্পেস সদস্য হিসেবে অ্যাক্সেস আছে এমন সমস্ত সরাসরি বার্তা এবং স্পেস জুড়ে অনুসন্ধানটি করা হয়।
  • space.display_name : অপারেটর : (has) সমর্থন করে এবং তাদের ডিসপ্লে নামের আংশিক মিলের ভিত্তিতে স্পেসগুলোকে ফিল্টার করে। ফলাফল শীর্ষ পাঁচটি স্পেস ম্যাচের মধ্যে সীমাবদ্ধ থাকে। উদাহরণস্বরূপ, space.display_name:Project শীর্ষ পাঁচটি স্পেসের মধ্যে সেইসব মেসেজ অনুসন্ধান করে, যেগুলোর ডিসপ্লে নামে "Project" শব্দটি রয়েছে।
  • attachment : অ্যাটাচমেন্ট আছে কিনা তা পরীক্ষা করার জন্য :* (হ্যাজ এনি) অপারেটরটি সাপোর্ট করে। যদি attachment:* নির্দিষ্ট করা হয়, তবে শুধুমাত্র সেই মেসেজগুলোই ফেরত দেওয়া হবে যেগুলোতে অন্তত একটি অ্যাটাচমেন্ট আছে।
  • annotations.user_mentions.user.name : উল্লিখিত ব্যবহারকারীর রিসোর্স নাম ( users/{user} )। শুধুমাত্র : (has) সমর্থন করে। উদাহরণস্বরূপ: 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 ফিল্টারটি ব্যবহার করার জন্য কলিং ক্রেডেনশিয়ালগুলিতে নিম্নলিখিত অথরাইজেশন স্কোপগুলির মধ্যে একটি অন্তর্ভুক্ত থাকা আবশ্যক:

  • 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 অথবা উভয়ই আছে।
  • 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 : ফলাফলগুলোকে প্রাসঙ্গিকতা অনুসারে সাজায়।

ডিফল্ট ক্রম হলো createTime desc । প্রতি কোয়েরিতে শুধুমাত্র একটি ক্রম ( createTime অথবা relevance ) সমর্থিত। শুধুমাত্র অবরোহী ক্রম ( desc ) সমর্থিত, এবং এটি অবশ্যই order অ্যাট্রিবিউটের পরে উল্লেখ করতে হবে।

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

আরও তথ্যের জন্য, অনুমোদন নির্দেশিকা দেখুন।

সার্চমেসেজভিউ

আংশিক অনুসন্ধানের ফলাফলের জন্য যে ধরনের দৃশ্য সমর্থিত।

এনাম
SEARCH_MESSAGES_VIEW_UNSPECIFIED ডিফল্ট / অনির্ধারিত মান। এপিআই ডিফল্টরূপে বেসিক ভিউ ব্যবহার করবে।
SEARCH_MESSAGES_VIEW_BASIC ফলাফলে শুধুমাত্র মিলে যাওয়া বার্তাগুলো অন্তর্ভুক্ত করা হয়, কিন্তু কোনো অতিরিক্ত মেটাডেটা যোগ করা হয় না। এটিই ডিফল্ট মান।
SEARCH_MESSAGES_VIEW_FULL ফলাফলের মধ্যে সবকিছু অন্তর্ভুক্ত থাকে: মিলে যাওয়া বার্তা এবং অতিরিক্ত মেটাডেটা।

অনুসন্ধানবার্তার ফলাফল

বার্তা অনুসন্ধানের একটিমাত্র ফলাফল।

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