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,
  "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: : (포함) 연산자를 지원하고 표시 이름의 부분 일치를 기반으로 스페이스를 필터링합니다. 결과는 상위 5개 공간 일치 항목으로 제한됩니다. 예를 들어 space.display_name:Project는 표시 이름에 'Project'라는 단어가 포함된 상위 5개 스페이스에서 메시지를 검색합니다.
  • space.space_type: 스페이스 유형입니다. =만 지원합니다. 예를 들어 space.space_type="DIRECT_MESSAGE"는 채팅 메시지의 메시지만 반환합니다. 가능한 값은 DIRECT_MESSAGE, GROUP_CHAT, SPACE입니다.
  • 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 또는 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가 지원되지 않기 때문입니다.

동일한 필드 간:

  • 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:TasksProjectTasks가 모두 포함된 표시 이름이 있는 스페이스의 메시지를 반환하는 반면 space.display_name:Project OR space.display_name:TasksProject 또는 Tasks(또는 둘 다)이 포함된 표시 이름이 있는 스페이스의 메시지를 반환합니다.
  • space.space_typeOR 연산자만 지원합니다(예: space.space_type = "DIRECT_MESSAGE" OR space.space_type = "GROUP_CHAT").
  • 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)만 지원되며 순서 속성 뒤에 지정해야 합니다.

markupSyntax

enum (MarkupSyntax)

선택사항입니다. 채팅 메시지 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

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

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