İletilerde ara

Bu belgede, kimliği doğrulanmış kullanıcının erişebildiği mesajları aramak için Google Chat API'nin Message kaynağında search yönteminin nasıl kullanılacağı açıklanmaktadır.

Kullanıcı kimlik doğrulaması ile kullanıcının katıldığı tüm görüşmelerde veya belirli bir görüşmede ileti arayabilirsiniz. Örneğin, belirli anahtar kelimeler içeren, kullanıcıdan bahseden, okunmamış veya ek içeren iletileri arayabilirsiniz.

Chat API'de Chat mesajı, Message kaynağı ile temsil edilir. Chat kullanıcıları yalnızca metin içeren mesajlar gönderebilirken Chat uygulamaları, statik veya etkileşimli kullanıcı arayüzleri görüntüleme, kullanıcılardan bilgi toplama ve mesajları gizli olarak iletme gibi birçok başka mesajlaşma özelliğini kullanabilir. Chat API'de kullanılabilen mesajlaşma özellikleri hakkında daha fazla bilgi edinmek için Google Chat mesajlarına genel bakış başlıklı makaleyi inceleyin.

Ön koşullar

Node.js

Python

Java

Apps Komut Dosyası

İleti ara

Kullanıcı kimlik doğrulaması içeren iletileri aramak için isteğinizde aşağıdakileri iletin:

  • chat.messages.readonly veya chat.messages yetkilendirme kapsamını belirtin.

  • SearchMessages yöntemini çağırın.

  • Kullanıcının üyesi olduğu tüm alanlarda arama yapmak için parentspaces/- olarak ayarlayın. Başka bir değer kullanmak hataya neden olur.

  • filter alanında bir arama sorgusu dizesi belirtin. Sorgu anahtar kelimeler ve filtreler içerebilir.

Aşağıdaki kod örneği, "tasks" anahtar kelimesini içeren okunmamış iletileri arar:

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 Komut Dosyası

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

Arama filtrelerini ve operatörlerini kullanma

filter alanındaki anahtar kelimeleri, alanları ve işlevleri kullanarak arama sonuçlarınızı daraltabilirsiniz. Daha fazla bilgi için SearchMessagesRequest konusuna bakın.

Belirli bir metni içeren iletileri aramak için anahtar kelimeleri girin. Örneğin, bekleyen raporları aramak için pending reports kullanın.

Alana göre arama

Sonuçları belirli ileti veya alan alanlarına göre filtreleyebilirsiniz. Örneğin:

  • create_time: İletinin oluşturulma zamanına göre filtreleyin. Örnek: create_time > "2023-01-01T00:00:00Z"
  • sender.name: Gönderenin kaynak adına göre filtreleme yapar. Örnek: sender.name = "users/1234567890"
  • space.name: Aramayı belirli bir alanla sınırlandırın. Örnek: space.name = "spaces/ABCDEFGH"
  • space.display_name: Alanları, görünen adlarının kısmi eşleşmesine göre filtreleyin. Sonuçlar, en iyi beş alan eşleşmesiyle sınırlıdır. Örnek: space.display_name:Project
  • attachment: Eklerin varlığını kontrol edin. Örnek: attachment:*
  • annotations.user_mentions.user.name: Bahsetmelere göre filtreleyin. Örnek: annotations.user_mentions.user.name:"users/me"

İşlevleri kullanarak arama yapma

Gelişmiş filtreleme, aşağıdaki işlevler aracılığıyla kullanılabilir:

  • has_link: En az bir köprü içeren mesajları döndürür.
  • is_unread: Kullanıcı tarafından okunmamış iletileri döndürür.

Farklı alanlarda yalnızca AND operatörleri desteklenir. Örneğin: sender.name = "users/me" AND is_unread().