این سند نحوه استفاده از روش search در منبع Message از API چت گوگل را برای جستجوی پیامهایی که کاربر احراز هویت شده به آنها دسترسی دارد، توضیح میدهد.
با احراز هویت کاربر ، میتوانید پیامها را در تمام مکالماتی که کاربر به آنها پیوسته است یا در یک مکالمه خاص جستجو کنید. به عنوان مثال، میتوانید پیامهایی را جستجو کنید که حاوی کلمات کلیدی خاصی هستند، کاربر را منشن میکنند، خوانده نشدهاند یا پیوست دارند.
در API چت، یک پیام چت توسط منبع Message نمایش داده میشود. در حالی که کاربران چت فقط میتوانند پیامهایی حاوی متن ارسال کنند، برنامههای چت میتوانند از بسیاری از ویژگیهای پیامرسانی دیگر، از جمله نمایش رابطهای کاربری ایستا یا تعاملی، جمعآوری اطلاعات از کاربران و ارسال پیامها به صورت خصوصی، استفاده کنند. برای کسب اطلاعات بیشتر در مورد ویژگیهای پیامرسانی موجود برای API چت، به نمای کلی پیامهای Google Chat مراجعه کنید.
پیشنیازها
نود جی اس
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- محیط خود را تنظیم کنید:
- یک محدوده مجوز انتخاب کنید .
- یک فضای چت گوگل. برای ایجاد آن با استفاده از API چت گوگل، به بخش ایجاد فضا مراجعه کنید. برای ایجاد آن در چت، به مستندات مرکز راهنما مراجعه کنید.
پایتون
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- محیط خود را تنظیم کنید:
- یک محدوده مجوز انتخاب کنید .
- یک فضای چت گوگل. برای ایجاد آن با استفاده از API چت گوگل، به بخش ایجاد فضا مراجعه کنید. برای ایجاد آن در چت، به مستندات مرکز راهنما مراجعه کنید.
جاوا
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- محیط خود را تنظیم کنید:
- یک محدوده مجوز انتخاب کنید .
- یک فضای چت گوگل. برای ایجاد آن با استفاده از API چت گوگل، به بخش ایجاد فضا مراجعه کنید. برای ایجاد آن در چت، به مستندات مرکز راهنما مراجعه کنید.
اسکریپت برنامهها
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- محیط خود را تنظیم کنید:
- یک محدوده مجوز انتخاب کنید .
- یک فضای چت گوگل. برای ایجاد آن با استفاده از API چت گوگل، به بخش ایجاد فضا مراجعه کنید. برای ایجاد آن در چت، به مستندات مرکز راهنما مراجعه کنید.
جستجوی پیامها
برای جستجوی پیامهایی که احراز هویت کاربر در آنها لحاظ شده است، کد زیر را در درخواست خود وارد کنید:
دامنه مجوز
chat.messages.readonlyیاchat.messagesرا مشخص کنید.متد
SearchMessagesرا فراخوانی کنید.برای جستجو در تمام فضاهایی که کاربر عضو آنهاست،
parentبرابر باspaces/-قرار دهید. استفاده از هر مقدار دیگری منجر به خطا میشود.در فیلد
filter، یک رشته پرسوجوی جستجو مشخص کنید. پرسوجو میتواند شامل کلمات کلیدی و فیلترها باشد.
نمونه کد زیر پیامهای خوانده نشدهای را که حاوی کلمه کلیدی "tasks" هستند، جستجو میکند:
نود جی اس
/**
* 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()');
پایتون
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()')
جاوا
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());
}
}
}
}
اسکریپت برنامهها
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); } }
استفاده از فیلترها و عملگرهای جستجو
You can refine your search results by using keywords, fields, and functions in the filter field. For more information, see SearchMessagesRequest .
جستجو بر اساس کلمه کلیدی
برای جستجوی پیامهایی که حاوی متن خاصی هستند، کلمات کلیدی را وارد کنید. به عنوان مثال، برای جستجوی گزارشهای در حال انتظار، pending reports استفاده کنید.
جستجو بر اساس فیلد
شما میتوانید نتایج را بر اساس پیام خاص یا فیلدهای فاصله فیلتر کنید. برای مثال:
-
create_time: فیلتر بر اساس زمان ایجاد پیام. مثال:create_time > "2023-01-01T00:00:00Z" -
sender.name: فیلتر بر اساس نام منبع فرستنده. مثال:sender.name = "users/1234567890" -
space.name: جستجو را به یک فضای خاص محدود میکند. مثال:space.name = "spaces/ABCDEFGH" -
space.display_name: فضاها را بر اساس تطابق جزئی با نام نمایشی آنها فیلتر میکند. نتایج به پنج مورد برتر از تطابقهای فضا محدود میشوند. مثال:space.display_name:Project -
attachment: وجود پیوستها را بررسی میکند. مثال:attachment:* -
annotations.user_mentions.user.name: فیلتر بر اساس منشنها. مثال:annotations.user_mentions.user.name:"users/me"
جستجو با استفاده از توابع
فیلتر پیشرفته از طریق توابع زیر در دسترس است:
-
has_link: پیامهایی را برمیگرداند که حداقل حاوی یک هایپرلینک باشند. -
is_unread: پیامهایی را که توسط کاربر خوانده نشدهاند، برمیگرداند.
در فیلدهای مختلف، فقط عملگرهای AND پشتیبانی میشوند. برای مثال: sender.name = "users/me" AND is_unread() .
مباحث مرتبط
- یک پیام را قالببندی کنید .
- حذف یک پیام .
- دریافت جزئیات مربوط به یک پیام
- پیامها را در یک فاصله فهرست کنید .
- بهروزرسانی یک پیام
- پیام ارسال کنید .