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,
  "view": enum (SearchMessagesView)
}
फ़ील्ड
filter

string

ज़रूरी है. खोज क्वेरी.

क्वेरी में, खोज के एक या उससे ज़्यादा कीवर्ड तय किए जा सकते हैं. इनका इस्तेमाल, नतीजों को फ़िल्टर करने के लिए किया जाता है,

नतीजों को इन मैसेज फ़ील्ड का इस्तेमाल करके भी फ़िल्टर किया जा सकता है:

  • 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" शब्द शामिल है.
  • 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 फ़िल्टर का इस्तेमाल करने के लिए, ज़रूरी है कि कॉल करने वाले व्यक्ति की क्रेडेंशियल में, अनुमति के इन दायरों में से कोई एक शामिल हो:

  • 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

क्वेरी की ज़्यादा से ज़्यादा लंबाई 1,000 वर्ण हो सकती है.

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

pageSize

integer

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

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

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

pageToken

string

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

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

orderBy

string

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

क्रम से लगाने के लिए, इन एट्रिब्यूट का इस्तेमाल किया जा सकता है:

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

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

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 डिफ़ॉल्ट / सेट न की गई वैल्यू. एपीआई, डिफ़ॉल्ट रूप से 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