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` और 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) काम करता है. इसे क्रम के एट्रिब्यूट के बाद तय करना ज़रूरी है.

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