Nachrichten suchen

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

Mit 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, in denen der Nutzer erwähnt wird, die ungelesen sind oder die Anhänge haben.

In der Chat API wird eine Chat-Nachricht durch die Ressource Message 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 unter Google Chat-Nachrichten – Übersicht.

Vorbereitung

Node.js

Python

Java

Apps Script

Nachrichten suchen

Wenn Sie nach Nachrichten mit Nutzerauthentifizierung suchen möchten, übergeben Sie Folgendes in Ihrer Anfrage:

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

  • Rufen Sie die Methode SearchMessages auf.

  • Legen Sie parent auf spaces/- fest, um in allen Gruppenbereichen zu suchen, in denen der Nutzer Mitglied ist. Die Verwendung eines anderen Werts führt zu einem Fehler.

  • Geben Sie im Feld filter einen Suchanfragestring an. Die Anfrage 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 Ihre Suchergebnisse mithilfe von Schlüsselwörtern, Feldern und Funktionen im Feld filter verfeinern. Weitere Informationen finden Sie unter SearchMessagesRequest.

Wenn Sie nach Nachrichten suchen möchten, die bestimmten Text enthalten, geben Sie die Suchbegriffe 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 Gruppenbereichsfeldern filtern. Beispiel:

  • create_time: Filtern Sie nach dem Zeitpunkt, zu dem die Nachricht erstellt wurde. 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: Filtert Bereiche basierend auf einer teilweisen Übereinstimmung ihres Anzeigenamens. Die Ergebnisse sind auf die fünf besten Übereinstimmungen beschränkt. Beispiel: space.display_name:Project
  • attachment: Prüfen, ob Anhänge vorhanden sind. Beispiel: attachment:*
  • annotations.user_mentions.user.name: Nach Erwähnungen filtern. Beispiel: annotations.user_mentions.user.name:"users/me"

Mit Funktionen suchen

Erweiterte Filter sind über die folgenden Funktionen verfügbar:

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

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