Nachrichten suchen

In diesem Dokument wird erläutert, wie Sie mit der search Methode für die Message Ressource der Google Chat API nach Nachrichten suchen, auf die der authentifizierte Nutzer Zugriff hat.

Bei der Nutzerauthentifizierung, können Sie in allen Unterhaltungen, an denen der Nutzer teilgenommen hat, oder in einer bestimmten Unterhaltung nach Nachrichten suchen. Sie können beispielsweise nach Nachrichten suchen, die bestimmte Keywords enthalten, den Nutzer erwähnen, ungelesen sind oder Anhänge haben.

In der Chat API wird eine Chat-Nachricht durch die Message Ressource dargestellt. Während Chat-Nutzer nur Nachrichten mit Text senden können, können Chat-Apps viele andere Messaging-Funktionen nutzen, darunter das Anzeigen statischer oder interaktiver Benutzeroberflächen, das Erfassen von Informationen von Nutzern und das private Senden von Nachrichten. Weitere Informationen zu den Messaging Funktionen, die für die Chat API verfügbar sind, finden Sie in der Übersicht zu Google Chat-Nachrichten.

Vorbereitung

Node.js

  • Ein Google Chat-Bereich. Informationen zum Erstellen eines Bereichs mit der Google Chat API finden Sie unter Bereiche erstellen. Informationen zum Erstellen eines Bereichs in Chat, finden Sie in der Hilfe.

Python

  • Ein Google Chat-Bereich. Informationen zum Erstellen eines Bereichs mit der Google Chat API finden Sie unter Bereiche erstellen. Informationen zum Erstellen eines Bereichs in Chat, finden Sie in der Hilfe.

Java

  • Ein Google Chat-Bereich. Informationen zum Erstellen eines Bereichs mit der Google Chat API finden Sie unter Bereiche erstellen. Informationen zum Erstellen eines Bereichs in Chat, finden Sie in der Hilfe.

Apps Script

  • Ein Google Chat-Bereich. Informationen zum Erstellen eines Bereichs mit der Google Chat API finden Sie unter Bereiche erstellen. Informationen zum Erstellen eines Bereichs in Chat, finden Sie in der Hilfe.

Nachrichten suchen

Wenn Sie mit der Nutzer authentifizierung nach Nachrichten suchen möchten, übergeben Sie das Folgende in Ihrer Anfrage:

  • Geben Sie den chat.messages.readonly oder chat.messages Autorisierungsumfang an.

  • Rufen Sie die SearchMessages Methode auf.

  • Legen Sie parent auf spaces/- fest, um in allen Bereichen zu suchen, in denen der Nutzer Mitglied ist. Jeder andere Wert führt zu einem Fehler.

  • Geben Sie im Feld filter einen Abfragestring an. Die Abfrage kann Keywords und Filter enthalten.

Im folgenden Codebeispiel wird nach ungelesenen Nachrichten gesucht, die das Keyword „tasks“ enthalten:

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); } }

Suchfilter und -operatoren verwenden

Sie können die Suchergebnisse verfeinern, indem Sie im Feld filter Keywords, Felder und Funktionen verwenden. Weitere Informationen finden Sie unter SearchMessagesRequest.

Wenn Sie nach Nachrichten suchen möchten, die bestimmten Text enthalten, geben Sie die Keywords ein. Wenn Sie beispielsweise nach ausstehenden Berichten suchen möchten, verwenden Sie pending reports.

Nach Feld suchen

Sie können die Ergebnisse nach bestimmten Nachrichten- oder Bereichsfeldern filtern. Beispiel:

  • create_time: Nach der Erstellungszeit der Nachricht filtern. Beispiel: create_time > "2023-01-01T00:00:00Z"
  • sender.name: Nach dem Ressourcennamen des Absenders filtern. Beispiel: sender.name = "users/1234567890"
  • space.name: Die Suche auf einen bestimmten Bereich beschränken. Beispiel: space.name = "spaces/ABCDEFGH"
  • space.display_name: Bereiche nach einer teilweisen Übereinstimmung ihres Anzeigenamens filtern. Die Ergebnisse sind auf die fünf besten Bereichsübereinstimmungen beschränkt. Beispiel: space.display_name:Project
  • attachment: Auf das Vorhandensein von Anhängen prüfen. Beispiel: attachment:*
  • annotations.user_mentions.user.name: Nach Erwähnungen filtern. Beispiel: annotations.user_mentions.user.name:"users/me"

Mit Funktionen suchen

Über die folgenden Funktionen ist eine erweiterte Filterung möglich:

  • has_link: Gibt Nachrichten zurück, die mindestens einen Hyperlink enthalten.
  • is_unread: Gibt Nachrichten zurück, die vom Nutzer nicht gelesen wurden.

Für verschiedene Felder werden nur AND-Operatoren unterstützt. Beispiel: sender.name = "users/me" AND is_unread().