Mengelola Rangkaian Pesan

Gmail API menggunakan resource Thread untuk mengelompokkan balasan email dengan pesan asli ke dalam satu percakapan atau rangkaian pesan. Hal ini memungkinkan Anda mengambil semua pesan dalam percakapan, secara berurutan, sehingga memudahkan pemahaman konteks pesan atau untuk menyaring hasil penelusuran.

Seperti pesan, thread mungkin juga memiliki label yang diterapkan padanya. Namun, tidak seperti pesan, rangkaian pesan tidak dapat dibuat, hanya dihapus. Namun, pesan dapat disisipkan ke dalam rangkaian pesan.

Daftar Isi

Mengambil rangkaian pesan

Thread memberikan cara sederhana untuk mengambil pesan dalam percakapan secara berurutan. Dengan mencantumkan kumpulan rangkaian pesan, Anda dapat memilih untuk mengelompokkan pesan berdasarkan percakapan dan memberikan konteks tambahan. Anda dapat mengambil daftar thread menggunakan metode threads.list, atau mengambil thread tertentu dengan threads.get. Anda juga dapat memfilter thread menggunakan parameter kueri yang sama seperti untuk resource Message. Jika ada pesan dalam thread yang cocok dengan kueri, thread tersebut akan ditampilkan dalam hasil.

Contoh kode di bawah ini menunjukkan cara menggunakan kedua metode tersebut dalam contoh yang menampilkan thread paling banyak chat di kotak masuk Anda. Metode threads.list mengambil semua ID thread, lalu threads.get akan mengambil semua pesan di setiap rangkaian pesan. Untuk 3 balasan atau lebih, kita akan mengekstrak baris Subject dan menampilkan baris yang tidak kosong ditambah jumlah pesan dalam thread. Anda juga akan menemukan contoh kode ini ditampilkan dalam video DevByte yang sesuai.

Python

gmail/snippet/thread/threads.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def show_chatty_threads():
  """Display threads with long conversations(>= 3 messages)
  Return: None

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create gmail api client
    service = build("gmail", "v1", credentials=creds)

    # pylint: disable=maybe-no-member
    # pylint: disable:R1710
    threads = (
        service.users().threads().list(userId="me").execute().get("threads", [])
    )
    for thread in threads:
      tdata = (
          service.users().threads().get(userId="me", id=thread["id"]).execute()
      )
      nmsgs = len(tdata["messages"])

      # skip if <3 msgs in thread
      if nmsgs > 2:
        msg = tdata["messages"][0]["payload"]
        subject = ""
        for header in msg["headers"]:
          if header["name"] == "Subject":
            subject = header["value"]
            break
        if subject:  # skip if no Subject line
          print(f"- {subject}, {nmsgs}")
    return threads

  except HttpError as error:
    print(f"An error occurred: {error}")


if __name__ == "__main__":
  show_chatty_threads()

Menambahkan draf dan pesan ke rangkaian pesan

Jika Anda mengirim atau memigrasikan pesan yang merupakan respons ke email lain atau bagian dari percakapan, aplikasi Anda harus menambahkan pesan tersebut ke thread terkait. Hal ini memudahkan pengguna Gmail yang berpartisipasi dalam percakapan untuk menjaga pesan dalam konteks.

Draf dapat ditambahkan ke thread sebagai bagian dari pembuatan, update, atau pengiriman draf pesan. Anda juga dapat menambahkan pesan ke rangkaian pesan sebagai bagian dari menyisipkan atau mengirim pesan.

Agar dapat menjadi bagian dari rangkaian pesan, pesan atau draf harus memenuhi kriteria berikut:

  1. threadId yang diminta harus ditentukan dalam Message atau Draft.Message yang Anda berikan dengan permintaan Anda.
  2. Header References dan In-Reply-To harus ditetapkan sesuai dengan standar RFC 2822.
  3. Header Subject harus cocok.

Lihat contoh membuat draf atau mengirim pesan. Pada kedua kasus tersebut, Anda cukup menambahkan kunci threadId yang dipasangkan dengan ID thread ke metadata pesan, objek message.