Tài liệu này giải thích cách sử dụng phương thức search trên tài nguyên Message của Google Chat API để tìm kiếm những tin nhắn mà người dùng đã xác thực có quyền truy cập.
Với tính năng xác thực người dùng, bạn có thể tìm kiếm tin nhắn trong tất cả cuộc trò chuyện mà người dùng đã tham gia hoặc trong một cuộc trò chuyện cụ thể. Ví dụ: bạn có thể tìm kiếm những tin nhắn chứa từ khoá cụ thể, đề cập đến người dùng, chưa đọc hoặc có tệp đính kèm.
Trong Chat API, tin nhắn trên Chat được biểu thị bằng tài nguyên Message.
Mặc dù người dùng Chat chỉ có thể gửi tin nhắn chứa văn bản, nhưng các ứng dụng Chat có thể sử dụng nhiều tính năng nhắn tin khác, bao gồm cả việc hiển thị giao diện người dùng tĩnh hoặc tương tác, thu thập thông tin từ người dùng và gửi tin nhắn riêng tư. Để tìm hiểu thêm về các tính năng nhắn tin có trong API Chat, hãy xem Tổng quan về tin nhắn trên Google Chat.
Điều kiện tiên quyết
Node.js
- Tài khoản Google Workspace Business hoặc Enterprise có quyền truy cập vào Google Chat.
- Thiết lập môi trường:
- Tạo một dự án trên Google Cloud.
- Định cấu hình màn hình xin phép bằng OAuth.
- Bật và định cấu hình Google Chat API bằng tên, biểu tượng và nội dung mô tả cho ứng dụng Chat của bạn.
- Cài đặt Thư viện ứng dụng đám mây Node.js.
- Chọn phạm vi uỷ quyền.
- Một phòng Chat trong Google Chat. Để tạo một không gian bằng Google Chat API, hãy xem phần Tạo không gian. Để tạo một tài liệu trong Chat, hãy truy cập vào tài liệu trong Trung tâm trợ giúp.
Python
- Tài khoản Google Workspace Business hoặc Enterprise có quyền truy cập vào Google Chat.
- Thiết lập môi trường:
- Tạo một dự án trên Google Cloud.
- Định cấu hình màn hình xin phép bằng OAuth.
- Bật và định cấu hình Google Chat API bằng tên, biểu tượng và nội dung mô tả cho ứng dụng Chat của bạn.
- Cài đặt Thư viện ứng dụng đám mây Python.
- Chọn phạm vi uỷ quyền.
- Một phòng Chat trong Google Chat. Để tạo một không gian bằng Google Chat API, hãy xem phần Tạo không gian. Để tạo một tài liệu trong Chat, hãy truy cập vào tài liệu trong Trung tâm trợ giúp.
Java
- Tài khoản Google Workspace Business hoặc Enterprise có quyền truy cập vào Google Chat.
- Thiết lập môi trường:
- Tạo một dự án trên Google Cloud.
- Định cấu hình màn hình xin phép bằng OAuth.
- Bật và định cấu hình Google Chat API bằng tên, biểu tượng và nội dung mô tả cho ứng dụng Chat của bạn.
- Cài đặt Thư viện ứng dụng đám mây Java.
- Chọn phạm vi uỷ quyền.
- Một phòng Chat trong Google Chat. Để tạo một không gian bằng Google Chat API, hãy xem phần Tạo không gian. Để tạo một tài liệu trong Chat, hãy truy cập vào tài liệu trong Trung tâm trợ giúp.
Apps Script
- Tài khoản Google Workspace Business hoặc Enterprise có quyền truy cập vào Google Chat.
- Thiết lập môi trường:
- Tạo một dự án trên Google Cloud.
- Định cấu hình màn hình xin phép bằng OAuth.
- Bật và định cấu hình Google Chat API bằng tên, biểu tượng và nội dung mô tả cho ứng dụng Chat của bạn.
- Tạo một dự án Apps Script độc lập và bật Dịch vụ Chat nâng cao.
- Chọn phạm vi uỷ quyền.
- Một phòng Chat trong Google Chat. Để tạo một không gian bằng Google Chat API, hãy xem phần Tạo không gian. Để tạo một tài liệu trong Chat, hãy truy cập vào tài liệu trong Trung tâm trợ giúp.
Tìm kiếm thư
Để tìm kiếm thư có xác thực người dùng, hãy truyền nội dung sau trong yêu cầu của bạn:
Chỉ định phạm vi uỷ quyền
chat.messages.readonlyhoặcchat.messages.Gọi phương thức
SearchMessages.Đặt
parentthànhspaces/-để tìm kiếm trong tất cả không gian mà người dùng là thành viên. Việc sử dụng bất kỳ giá trị nào khác sẽ dẫn đến lỗi.Trong trường
filter, hãy chỉ định một chuỗi truy vấn tìm kiếm. Cụm từ tìm kiếm có thể bao gồm từ khoá và bộ lọc.
Mã mẫu sau đây tìm kiếm những thư chưa đọc có chứa từ khoá "tasks":
Node.js
/**
* Searches for messages in Google Chat.
* @param {string} filter The search query.
*/
async function searchMessages(filter) {
const {ChatServiceClient} = require('@google-apps/chat').v1;
// Instantiates a client
const chatClient = new ChatServiceClient();
// See https://github.com/googleworkspace/node-samples/blob/main/chat/client-libraries/cloud/authentication-utils.js
// for an example of how to authenticate the request.
// Construct request
const request = {
// Parent must be "spaces/-" to search across all spaces.
parent: 'spaces/-',
filter: filter,
};
// Run request
const iterable = await chatClient.searchMessagesAsync(request);
for await (const response of iterable) {
console.log(response);
}
}
searchMessages('tasks AND is_unread()');
Python
from google.apps import chat_v1
def search_messages(filter_str: str):
"""
Searches for messages in Google Chat.
Args:
filter_str: The search query.
"""
# Create a client
client = chat_v1.ChatServiceClient()
# See https://github.com/googleworkspace/python-samples/blob/main/chat/client-libraries/cloud/authentication_utils.py
# for an example of how to authenticate the request.
# Initialize request argument
request = chat_v1.SearchMessagesRequest(
# Parent must be "spaces/-" to search across all spaces.
parent="spaces/-",
filter=filter_str
)
# Make the request
page_result = client.search_messages(request=request)
# Handle the response
for response in page_result:
print(response)
search_messages('tasks AND is_unread()')
Java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.SearchMessageResult;
import com.google.chat.v1.SearchMessagesRequest;
public class SearchMessages {
public static void main(String[] args) throws Exception {
searchMessages("tasks AND is_unread()");
}
/**
* Searches for messages in Google Chat.
*
* @param filter The search query.
*/
public static void searchMessages(String filter) throws Exception {
// See https://github.com/googleworkspace/java-samples/blob/main/chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/AuthenticationUtils.java
// for an example of how to authenticate the request.
try (ChatServiceClient chatServiceClient = ChatServiceClient.create()) {
SearchMessagesRequest request =
SearchMessagesRequest.newBuilder()
.setParent("spaces/-")
.setFilter(filter)
.build();
for (SearchMessageResult result : chatServiceClient.searchMessages(request).iterateAll()) {
System.out.println(result.getMessage().getText());
}
}
}
}
Apps Script
javascript
/**
* Searches for messages in Google Chat.
*/
function searchMessages() {
const filter = 'tasks AND is_unread()';
const url = 'https://chat.googleapis.com/v1/spaces/-/messages:search';
const request_payload = {
filter: filter
};
try {
const response = UrlFetchApp.fetch(url, {
method: 'post',
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
},
contentType: 'application/json',
payload: JSON.stringify(request_payload)
});
if (response.results) {
for (const result of response.results) {
console.log('Message text: %s', result.message.text);
}
} else {
console.log('No messages found.');
}
} catch (err) {
console.log('Failed to search messages with error: %s', err.message);
}
}
Sử dụng bộ lọc và toán tử tìm kiếm
Bạn có thể tinh chỉnh kết quả tìm kiếm bằng cách sử dụng từ khoá, trường và hàm trong trường filter. Để biết thêm thông tin, hãy xem SearchMessagesRequest.
Tìm kiếm theo từ khoá
Để tìm tin nhắn có chứa văn bản cụ thể, hãy nhập từ khoá. Ví dụ: để tìm báo cáo đang chờ xử lý, hãy sử dụng pending reports.
Tìm kiếm theo trường
Bạn có thể lọc kết quả theo các trường cụ thể của tin nhắn hoặc không gian. Ví dụ:
create_time: Lọc theo thời gian tạo thư. Ví dụ:create_time > "2023-01-01T00:00:00Z"sender.name: Lọc theo tên tài nguyên của người gửi. Ví dụ:sender.name = "users/1234567890"space.name: Giới hạn phạm vi tìm kiếm trong một không gian cụ thể. Ví dụ:space.name = "spaces/ABCDEFGH"space.display_name: Lọc không gian dựa trên một phần tên hiển thị trùng khớp. Kết quả chỉ bao gồm 5 không gian phù hợp nhất. Ví dụ:space.display_name:Projectattachment: Kiểm tra xem có tệp đính kèm hay không. Ví dụ:attachment:*annotations.user_mentions.user.name: Lọc theo lượt đề cập. Ví dụ:annotations.user_mentions.user.name:"users/me"
Tìm kiếm bằng hàm
Bạn có thể dùng tính năng lọc nâng cao thông qua các hàm sau:
has_link: Trả về những thông báo có chứa ít nhất một siêu liên kết.is_unread: Trả về những thông báo mà người dùng chưa đọc.
Trên nhiều trường, hệ thống chỉ hỗ trợ toán tử AND. Ví dụ:sender.name = "users/me" AND is_unread().
Chủ đề có liên quan
- Định dạng tin nhắn.
- Xoá tin nhắn.
- Xem thông tin chi tiết về một tin nhắn.
- Liệt kê tin nhắn trong một không gian.
- Chỉnh sửa tin nhắn.
- Gửi tin nhắn.