Method: spaces.messages.search

호출 사용자가 액세스할 수 있는 Google Chat의 메시지를 검색합니다. 검색 기준과 일치하는 메시지 목록을 반환합니다.

사용자가 액세스할 수 있는 모든 스페이스를 검색하려면 parentspaces/-로 설정합니다. 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,
  "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)를 지원하며 표시 이름의 부분 일치를 기반으로 스페이스를 필터링합니다. 결과는 상위 5개 스페이스 일치 항목으로 제한됩니다. 예를 들어 space.display_name:Project는 표시 이름에 "Project"라는 단어가 포함된 상위 5개 스페이스에서 메시지를 검색합니다.
  • attachment: 첨부파일의 존재 여부를 확인하는 연산자 :* (has any)를 지원합니다. 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()입니다. AND라는 단어는 선택사항이며 생략하면 암시됩니다. 예를 들어 sender.name = "users/1234567890" is_unread()는 유효하며 이전 예와 동일합니다. OR은 서로 다른 필드 간에 지원되지 않으므로 sender.name = "users/1234567890" OR is_unread()는 잘못된 예입니다.

동일한 필드 중에서:

  • createTimeAND만 지원하며 createTime >= "2022-01-01T00:00:00+00:00" AND createTime < "2023-01-01T00:00:00+00:00"과 같은 간격을 나타내는 데만 사용할 수 있습니다.
  • sender.nameOR 연산자만 지원합니다(예: sender.name = "users/1234567890" OR sender.name = "users/0987654321").
  • space.nameOR 연산자만 지원합니다(예: space.name = "spaces/ABCDEFGH" OR space.name = "spaces/QWERTYUI").
  • space.display_nameANDOR 연산자를 지원하지만 둘 다 혼합해서는 지원하지 않습니다. 예를 들어 space.display_name:Project AND space.display_name:Tasks는 표시 이름에 ProjectTasks가 모두 포함된 스페이스의 메시지를 반환하는 반면 space.display_name:Project OR space.display_name:Tasks는 표시 이름에 Project 또는 Tasks 또는 둘 다 포함된 스페이스의 메시지를 반환합니다.
  • annotations.user_mentions.user.nameANDOR 연산자를 지원하지만 둘 다 혼합해서는 지원하지 않습니다. 예를 들어 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입니다. 쿼리당 하나의 순서 (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

부분 검색 결과에 지원되는 뷰의 종류입니다.

열거형
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