Method: spaces.messages.search

Google Chat-এ মেসেজ সার্চ করে যেটিতে কলিং ব্যবহারকারীর অ্যাক্সেস আছে। সার্চের মাপকাঠির সাথে মেলে এমন মেসেজের তালিকা দেখায়।

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

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

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

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

  • 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,
  "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 এমন সেরা পাঁচটি স্পেসে মেসেজ সার্চ করে যেগুলির ডিসপ্লে নামে "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: প্রাসঙ্গিকতা অনুযায়ী ফলাফল সাজায়। ( ডেভেলপার প্রিভিউ)

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

markupSyntax

enum (MarkupSyntax)

ঐচ্ছিক। Chat মেসেজের formattedText ফিল্ডের জন্য পছন্দসই আউটপুট সিনট্যাক্স নির্দিষ্ট করে।

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

আংশিক সার্চ ফলাফলের জন্য যে ধরনের ভিউ কাজ করে।

Enums
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