Mengelola rangkaian pesan

Dokumen ini menjelaskan cara mengambil pesan rangkaian pesan dan menambahkan pesan ke rangkaian pesan menggunakan Gmail API.

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

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

Mengambil rangkaian pesan

Rangkaian pesan menyediakan cara 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 metode threads.get.

Contoh kode berikut menunjukkan cara menggunakan metode threads.get dan threads.list dalam contoh yang mengambil rangkaian pesan yang paling aktif di kotak masuk Anda. Metode threads.list mengambil semua ID thread, lalu threads.get mengambil semua pesan di setiap thread. Untuk pesan dengan tiga balasan atau lebih, kami mengekstrak baris Subject dan menampilkan baris yang tidak kosong beserta jumlah pesan dalam rangkaian pesan.

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()

Anda juga dapat memfilter rangkaian pesan menggunakan parameter kueri yang sama dengan yang digunakan untuk resource messages. Jika ada pesan dalam rangkaian pesan yang cocok dengan kueri, rangkaian pesan tersebut akan ditampilkan dalam hasil.

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 menggunakan resource drafts.

Anda juga dapat menambahkan pesan ke rangkaian pesan sebagai bagian dari penyisipan atau pengiriman pesan menggunakan resource messages.

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

  1. threadId yang diminta harus ditentukan sebagai bagian dari drafts.message atau resource messages 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.

Untuk contoh kode cara menggunakan threadId, lihat Membuat draf atau Mengirim pesan. Dalam kedua kasus tersebut, Anda harus menyertakan threadId target dalam resource messages permintaan Anda.