Z tego dokumentu dowiesz się, jak używać metody
search
w zasobie Message interfejsu Google Chat API do wyszukiwania wiadomości, do których
ma dostęp uwierzytelniony użytkownik.
Dzięki uwierzytelnianiu użytkowników, 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 zawierające określone słowa kluczowe, wzmianki o użytkowniku, nieprzeczytane wiadomości lub wiadomości z załącznikami.
W interfejsie Chat API wiadomość w Google Chat jest reprezentowana przez zasób
Message.
Użytkownicy Google Chat mogą wysyłać tylko wiadomości tekstowe, ale aplikacje Google Chat mogą korzystać z wielu innych funkcji przesyłania wiadomości, w tym wyświetlania statycznych lub interaktywnych interfejsów użytkownika, zbierania informacji od użytkowników i dostarczania 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
- 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 Google Chat.
- Zainstaluj bibliotekę klienta Cloud dla Node.js .
- Wybierz zakres autoryzacji.
- Pokój czatu 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 Google Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Python
- 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 Google Chat.
- Zainstaluj bibliotekę klienta Cloud dla Pythona.
- Wybierz zakres autoryzacji.
- Pokój czatu 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 Google Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Java
- 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 Google Chat.
- Zainstaluj bibliotekę klienta Cloud dla Javy .
- Wybierz zakres autoryzacji.
- Pokój czatu 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 Google Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Apps Script
- 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 Google Chat.
- Utwórz samodzielny projekt Apps Script, i włącz zaawansowaną usługę Google Chat.
- Wybierz zakres autoryzacji.
- Pokój czatu 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 Google Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Wyszukiwanie wiadomości
Aby wyszukać wiadomości za pomocą uwierzytelniania użytkowników, w żądaniu podaj te informacje:
Określ zakres autoryzacji
chat.messages.readonlylubchat.messages.Wywołaj
SearchMessagesmetodę.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.
Ten przykładowy kod wyszukuje nieprzeczytane wiadomości zawierające słowo kluczowe „zadania”:
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);
}
}
Używanie filtrów i operatorów wyszukiwania
Wyniki wyszukiwania możesz zawęzić, używając słów kluczowych, pól i funkcji w polu filter. Więcej informacji znajdziesz w artykule
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ć oczekujące raporty, użyj zapytania 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: filtruj 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 pokoje na podstawie częściowego dopasowania ich nazwy wyświetlanej. 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.name: filtruj według wzmianek. Przykład:annotations.user_mentions.user.name:"users/me"
Wyszukiwanie za pomocą funkcji
Filtrowanie zaawansowane jest dostępne dzięki tym funkcjom:
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 różnych polach obsługiwane są tylko operatory AND. Przykład:
sender.name = "users/me" AND is_unread().
Powiązane artykuły
- Formatowanie wiadomości.
- Usuwanie wiadomości.
- Uzyskiwanie szczegółowych informacji o wiadomości.
- Wyświetlanie listy wiadomości w pokoju.
- Aktualizowanie wiadomości.
- Wysyłanie wiadomości.