במאמר הזה מוסבר איך להשתמש ב-method search במשאב Message של Google Chat API כדי לחפש הודעות שהמשתמש המאומת יכול לגשת אליהן.
באמצעות אימות משתמשים, אתם יכולים לחפש הודעות בכל השיחות שהמשתמש הצטרף אליהן, או בשיחה ספציפית. לדוגמה, אפשר לחפש הודעות שמכילות מילות מפתח ספציפיות, מזכירות את המשתמש, לא נקראו או כוללות קבצים מצורפים.
ב-Chat API, הודעה ב-Chat מיוצגת על ידי משאב Message.
משתמשי Chat יכולים לשלוח רק הודעות שמכילות טקסט, אבל אפליקציות ל-Chat יכולות להשתמש בהרבה תכונות אחרות של הודעות, כולל הצגת ממשקי משתמש סטטיים או אינטראקטיביים, איסוף מידע מהמשתמשים ושליחת הודעות באופן פרטי. מידע נוסף על תכונות ההודעות שזמינות ב-Chat API מופיע בסקירה הכללית על הודעות ב-Google Chat.
דרישות מוקדמות
Node.js
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- מתקינים את ספריית הלקוח של Cloud ל-Node.js.
- בוחרים היקף הרשאה.
- מרחב ב-Google Chat. במאמר יצירת מרחב מוסבר איך ליצור מרחב באמצעות Google Chat API. כדי ליצור מרחב ב-Chat, אפשר לעיין במאמר במרכז העזרה.
Python
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- מתקינים את ספריית הלקוח של Cloud לשימוש ב-Python.
- בוחרים היקף הרשאה.
- מרחב ב-Google Chat. במאמר יצירת מרחב מוסבר איך ליצור מרחב באמצעות Google Chat API. כדי ליצור מרחב ב-Chat, אפשר לעיין במאמר במרכז העזרה.
Java
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- מתקינים את ספריית הלקוח של Cloud ל-Java.
- בוחרים היקף הרשאה.
- מרחב ב-Google Chat. במאמר יצירת מרחב מוסבר איך ליצור מרחב באמצעות Google Chat API. כדי ליצור מרחב ב-Chat, אפשר לעיין במאמר במרכז העזרה.
Apps Script
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- יוצרים פרויקט עצמאי של Apps Script ומפעילים את שירות Chat המתקדם.
- בוחרים היקף הרשאה.
- מרחב ב-Google Chat. במאמר יצירת מרחב מוסבר איך ליצור מרחב באמצעות Google Chat API. כדי ליצור מרחב ב-Chat, אפשר לעיין במאמר במרכז העזרה.
חיפוש הודעות
כדי לחפש הודעות עם אימות משתמש, צריך להעביר את הפרטים הבאים בבקשה:
מציינים את היקף ההרשאות של
chat.messages.readonlyאוchat.messages.מבצעים קריאה ל-method
SearchMessages.מגדירים את
parentלערךspaces/-כדי לחפש בכל המרחבים שהמשתמש חבר בהם. שימוש בכל ערך אחר יוביל לשגיאה.בשדה
filter, מציינים מחרוזת של שאילתת חיפוש. השאילתה יכולה לכלול מילות מפתח ומסננים.
בדוגמת הקוד הבאה מחפשים הודעות שלא נקראו שמכילות את מילת המפתח 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);
}
}
שימוש במסננים ובאופרטורים של חיפוש
כדי לצמצם את תוצאות החיפוש, אפשר להשתמש במילות מפתח, בשדות ובפונקציות בשדה filter. מידע נוסף זמין במאמר 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().
נושאים קשורים
- עיצוב הודעות
- מחיקת הודעה.
- איך מקבלים פרטים על הודעה
- הצגת רשימה של ההודעות במרחב.
- עדכון הודעה
- שולחים הודעה.