במאמר הזה מוסבר איך להשתמש ב-method search במשאב Message של Google Chat API כדי לחפש הודעות שהמשתמש המאומת יכול לגשת אליהן.
באמצעות אימות משתמשים, אתם יכולים לחפש הודעות בכל השיחות שהמשתמש הצטרף אליהן, או בשיחה ספציפית. לדוגמה, אפשר לחפש הודעות שמכילות מילות מפתח ספציפיות, מזכירות את המשתמש, לא נקראו או כוללות קבצים מצורפים.
ב-Chat API, הודעת צ'אט מיוצגת על ידי משאב 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().