W tym dokumencie wyjaśniamy, jak używać metody
search
w zasobie Message interfejsu Google Chat API do wyszukiwania wiadomości, do których uwierzytelniony użytkownik ma dostęp.
Dzięki uwierzytelnianiu użytkownika możesz wyszukiwać wiadomości we wszystkich rozmowach, w których uczestniczy użytkownik, lub w konkretnej rozmowie. Możesz na przykład wyszukiwać wiadomości, które zawierają określone słowa kluczowe, wspominają użytkownika, są nieprzeczytane lub mają załączniki.
W interfejsie Chat API wiadomość na czacie jest reprezentowana przez
Messagezasób.
Użytkownicy Google Chat mogą wysyłać tylko wiadomości tekstowe, ale aplikacje na czacie mogą korzystać z wielu innych funkcji przesyłania wiadomości, w tym wyświetlać statyczne lub interaktywne interfejsy użytkownika, zbierać informacje od użytkowników i dostarczać wiadomości prywatnie. Więcej informacji o funkcjach przesyłania wiadomości dostępnych w interfejsie Chat API znajdziesz w artykule Omówienie wiadomości w Google Chat.
Wymagania wstępne
Node.js
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat.
- Skonfiguruj środowisko:
- Utwórz projekt Google Cloud.
- Skonfiguruj ekran zgody OAuth.
- Włącz i skonfiguruj interfejs Google Chat API, podając nazwę, ikonę i opis aplikacji do Google Chat.
- Zainstaluj bibliotekę klienta Cloud Node.js.
- Wybierz zakres autoryzacji
- pokoju w Google Chat, Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć pokój w Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Python
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat.
- Skonfiguruj środowisko:
- Utwórz projekt Google Cloud.
- Skonfiguruj ekran zgody OAuth.
- Włącz i skonfiguruj interfejs Google Chat API, podając nazwę, ikonę i opis aplikacji do Google Chat.
- Zainstaluj bibliotekę klienta Cloud w Pythonie.
- Wybierz zakres autoryzacji
- pokoju w Google Chat, Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć pokój w Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Java
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat.
- Skonfiguruj środowisko:
- Utwórz projekt Google Cloud.
- Skonfiguruj ekran zgody OAuth.
- Włącz i skonfiguruj interfejs Google Chat API, podając nazwę, ikonę i opis aplikacji do Google Chat.
- Zainstaluj bibliotekę klienta Cloud w języku Java.
- Wybierz zakres autoryzacji
- pokoju w Google Chat, Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć pokój w Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Google Apps Script
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat.
- Skonfiguruj środowisko:
- Utwórz projekt Google Cloud.
- Skonfiguruj ekran zgody OAuth.
- Włącz i skonfiguruj interfejs Google Chat API, podając nazwę, ikonę i opis aplikacji do Google Chat.
- Utwórz samodzielny projekt Apps Script i włącz zaawansowaną usługę Google Chat.
- Wybierz zakres autoryzacji
- pokoju w Google Chat, Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć pokój w Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Wyszukiwanie wiadomości
Aby wyszukać wiadomości z uwierzytelnianiem użytkownika, w żądaniu podaj te informacje:
Określ zakres autoryzacji
chat.messages.readonlylubchat.messages.Wywołaj metodę
SearchMessages.Ustaw
parentnaspaces/-, aby wyszukiwać we wszystkich pokojach, w których użytkownik jest członkiem. Użycie innej wartości spowoduje błąd.W polu
filterokreśl ciąg zapytania. Zapytanie może zawierać słowa kluczowe i filtry.
Poniższy przykładowy kod wyszukuje nieprzeczytane wiadomości zawierające słowo kluczowe „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());
}
}
}
}
Google 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);
}
}
Używanie filtrów i operatorów wyszukiwania
Wyniki wyszukiwania możesz doprecyzować, używając słów kluczowych, pól i funkcji w polu filter. Więcej informacji znajdziesz w sekcji SearchMessagesRequest.
Wyszukiwanie według słowa kluczowego
Aby wyszukać wiadomości zawierające określony tekst, wpisz słowa kluczowe. Aby na przykład wyszukać raporty oczekujące, użyj pending reports.
Wyszukiwanie według pola
Wyniki możesz filtrować według określonych pól wiadomości lub pokoju. Na przykład:
create_time: filtruj według czasu utworzenia wiadomości. Przykład:create_time > "2023-01-01T00:00:00Z"sender.name: filtrowanie według nazwy zasobu nadawcy. Przykład:sender.name = "users/1234567890"space.name: ogranicz wyszukiwanie do konkretnego pokoju. Przykład:space.name = "spaces/ABCDEFGH"space.display_name: Filtruj przestrzenie na podstawie częściowego dopasowania ich wyświetlanej nazwy. Wyniki są ograniczone do 5 najlepiej pasujących pokoi. Przykład:space.display_name:Projectattachment: sprawdź, czy są załączniki. Przykład:attachment:*annotations.user_mentions.user.nameFiltruj według wzmianek. Przykład:annotations.user_mentions.user.name:"users/me"
Wyszukiwanie za pomocą funkcji
Filtrowanie zaawansowane jest dostępne w tych funkcjach:
has_link: zwraca wiadomości zawierające co najmniej 1 hiperlink.is_unread: zwraca wiadomości, które nie zostały przeczytane przez użytkownika.
W przypadku różnych pól obsługiwane są tylko operatory AND. Na przykład:
sender.name = "users/me" AND is_unread().
Powiązane artykuły
- Formatowanie wiadomości
- Usuwanie wiadomości
- Wyświetlanie szczegółowych informacji o wiadomości
- Wyświetlanie listy wiadomości w pokoju
- Aktualizowanie wiadomości
- Wyślij wiadomość.