Mengelola Rangkaian Pesan

Gmail API menggunakan Thread resource untuk mengelompokkan balasan email dengan pesan aslinya ke dalam satu percakapan atau rangkaian. Dengan begitu, Anda dapat mengambil semua pesan dalam percakapan, secara berurutan, sehingga lebih mudah mendapatkan konteks pesan atau menyaring hasil penelusuran.

Seperti pesan, rangkaian pesan juga dapat diberi label. Namun, tidak seperti pesan, rangkaian pesan tidak dapat dibuat, hanya dapat dihapus. Namun, pesan dapat disisipkan ke dalam rangkaian pesan.

Daftar Isi

Mengambil rangkaian pesan

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

Contoh kode di bawah menunjukkan cara menggunakan kedua metode dalam contoh yang menampilkan rangkaian pesan yang paling aktif di kotak masuk Anda. Metode threads.list mengambil semua ID rangkaian pesan, lalu threads.get mengambil semua pesan di setiap rangkaian pesan. Untuk rangkaian pesan dengan 3 balasan atau lebih, kami mengekstrak baris Subject dan menampilkan baris yang tidak kosong beserta jumlah pesan dalam rangkaian pesan. Anda juga akan menemukan contoh kode ini yang 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 terhadap email lain atau bagian dari percakapan, aplikasi Anda harus menambahkan pesan tersebut ke rangkaian pesan terkait. Hal ini memudahkan pengguna Gmail yang berpartisipasi dalam percakapan untuk menjaga pesan tetap dalam konteks.

Draf dapat ditambahkan ke rangkaian pesan sebagai bagian dari pembuatan, pembaruan, atau pengiriman pesan draf. Anda juga dapat menambahkan pesan ke rangkaian pesan sebagai bagian dari penyisipan atau pengiriman pesan.

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

  1. threadId yang diminta harus ditentukan pada Message atau Draft.Message yang Anda berikan bersama 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. Dalam kedua kasus, Anda cukup menambahkan kunci threadId yang dipasangkan dengan ID thread ke metadata pesan, yaitu objek message.