Method: spaces.messages.search

搜尋通話使用者可存取的 Google Chat 訊息。傳回符合搜尋條件的郵件清單。

如要搜尋使用者有權存取的所有聊天室,請將 parent 設為 spaces/-。如果 parent 使用任何其他值,就會導致 INVALID_ARGUMENT 錯誤。傳回的郵件會填入 name 欄位,其中包含完整資源名稱,包括郵件所在的特定 space

這個 API 不會傳回所有訊息類型。回應中不會包含下列類型的訊息。使用 messages.list 列出所有訊息。

  • 經過驗證的使用者可查看的私人訊息。
  • Chat 應用程式在聊天室或群組通訊中張貼的訊息。
  • Chat 應用程式即時訊息中的訊息。
  • 封鎖對象傳送的訊息。
  • 來電者已將聊天室訊息設為靜音。

需要使用者驗證,並使用下列其中一個授權範圍

  • 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

這個網址使用 gRPC 轉碼語法。

路徑參數

參數
parent

string

必填。要在其中搜尋的聊天室資源名稱。

如要搜尋使用者可存取的所有聊天室,請將這個欄位設為 spaces/-。如果 parent 使用任何其他值,就會導致 INVALID_ARGUMENT 錯誤。

如要將搜尋範圍限制在一或多個空間,請在 filter 中使用 space.namespace.display_name

要求主體

要求主體會包含結構如下的資料:

JSON 表示法
{
  "filter": string,
  "pageSize": integer,
  "pageToken": string,
  "orderBy": string,
  "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 會搜尋前五個空間中,顯示名稱含有「專案」一詞的訊息。
  • 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()。「the」一字為選用,如省略則為隱含。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 支援 ANDOR 運算子,但無法混用。舉例來說:space.display_name:Project AND space.display_name:Tasks 會傳回顯示名稱同時包含 ProjectTasks 的即時通訊空間中的郵件,而 space.display_name:Project OR space.display_name:Tasks 則會傳回顯示名稱包含 ProjectTasks 或兩者的即時通訊空間中的郵件。
  • annotations.user_mentions.user.name 支援 ANDOR 運算子,但無法混用。舉例來說,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" 則會傳回提及其中一位使用者或兩位使用者的訊息。

在同一個查詢中合併 ANDOR 運算子時,必須使用括號來消除運算子優先順序的歧義。例如:(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。每個查詢 (createTimerelevance) 僅支援單一順序。系統僅支援遞減順序 (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

支援顯示部分搜尋結果的檢視畫面類型。

列舉
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