Method: spaces.messages.search

कॉल करने वाले व्यक्ति के पास जिन Google Chat मैसेज का ऐक्सेस है उन्हें खोजता है. यह फ़ंक्शन, खोज के लिए इस्तेमाल किए गए शब्दों से मेल खाने वाले मैसेज की सूची दिखाता है.

उपयोगकर्ता के पास जिन स्पेस का ऐक्सेस है उनमें खोजने के लिए, parent को spaces/- पर सेट करें. parent के लिए किसी अन्य वैल्यू का इस्तेमाल करने पर, INVALID_ARGUMENT गड़बड़ी होती है. जवाब में मिले मैसेज के name फ़ील्ड में, संसाधन का पूरा नाम होता है. इसमें वह space भी शामिल होता है जिसमें मैसेज मौजूद है.

यह एपीआई, सभी तरह के मैसेज नहीं दिखाता. यहां दिए गए मैसेज के टाइप, जवाब में शामिल नहीं किए जाते. सभी मैसेज की सूची बनाने के लिए, messages.list का इस्तेमाल करें.

  • ऐसे निजी मैसेज जो पुष्टि किए गए उपयोगकर्ता को दिखते हैं.
  • स्पेस या ग्रुप चैट में Chat ऐप्लिकेशन से पोस्ट किए गए मैसेज.
  • Chat ऐप्लिकेशन के डीएम में मौजूद मैसेज.
  • ब्लॉक किए गए उपयोगकर्ताओं के मैसेज.
  • स्पेस में मौजूद ऐसे मैसेज जिन्हें कॉल करने वाले व्यक्ति ने म्यूट किया है.

इसके लिए, उपयोगकर्ता की पुष्टि करना ज़रूरी है. साथ ही, इनमें से किसी एक अनुमति के दायरे का इस्तेमाल करना ज़रूरी है:

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

एचटीटीपी अनुरोध

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

यह यूआरएल, 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: यह ऑपरेटर : (has) के साथ काम करता है. साथ ही, डिसप्ले नेम के कुछ हिस्से के मैच होने के आधार पर स्पेस को फ़िल्टर करता है. नतीजे, सबसे मिलते-जुलते पांच स्पेस तक सीमित होते हैं. उदाहरण के लिए, 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}) का संसाधन नाम होता है. यह सिर्फ़ : (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 या 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

क्वेरी में ज़्यादा से ज़्यादा 1,000 वर्ण इस्तेमाल किए जा सकते हैं.

अमान्य क्वेरी को सर्वर, INVALID_ARGUMENT गड़बड़ी के साथ अस्वीकार कर देता है.

pageSize

integer

ज़रूरी नहीं. ज़्यादा से ज़्यादा कितने नतीजे दिखाने हैं. ऐसा हो सकता है कि सेवा इस वैल्यू से कम नतीजे दिखाए.

अगर इसे तय नहीं किया गया है, तो ज़्यादा से ज़्यादा 25 नतीजे दिखते हैं.

ज़्यादा से ज़्यादा वैल्यू 100 हो सकती है. अगर 100 से ज़्यादा वैल्यू का इस्तेमाल किया जाता है, तो उसे अपने-आप 100 पर सेट कर दिया जाता है.

pageToken

string

ज़रूरी नहीं. यह टोकन, खोज के नतीजों में दिखने वाले मैसेज से जुड़े पिछले कॉल से मिला है. अगला पेज पाने के लिए, यह पैरामीटर दें.

पेज नंबर के हिसाब से नतीजे दिखाने के दौरान, दिए गए अन्य सभी पैरामीटर, पेज टोकन देने वाले कॉल से मेल खाने चाहिए. अन्य पैरामीटर को अलग-अलग वैल्यू पास करने से, अनचाहे नतीजे मिल सकते हैं.

orderBy

string

ज़रूरी नहीं. नतीजों की सूची को किस क्रम में लगाया गया है.

इन एट्रिब्यूट के हिसाब से ऑर्डर किया जा सकता है:

  • createTime: इससे नतीजों को मैसेज बनाए जाने के समय के हिसाब से क्रम में लगाया जाता है. डिफ़ॉल्ट मान.
  • relevance: नतीजों को इस आधार पर क्रम से लगाता है कि वे कितने काम के हैं. ( डेवलपर प्रीव्यू)

डिफ़ॉल्ट क्रम createTime desc है. हर क्वेरी (createTime या relevance) के लिए, सिर्फ़ एक ऑर्डर का इस्तेमाल किया जा सकता है. सिर्फ़ घटते क्रम (desc) का इस्तेमाल किया जा सकता है. इसे क्रम एट्रिब्यूट के बाद तय किया जाना चाहिए.

markupSyntax

enum (MarkupSyntax)

ज़रूरी नहीं. इस फ़ील्ड में, Chat message 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 डिफ़ॉल्ट / सेट नहीं की गई वैल्यू. एपीआई, डिफ़ॉल्ट रूप से बुनियादी व्यू पर सेट होगा.
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