Quản lý luồng

Gmail API sử dụng tài nguyên Thread để nhóm các thư trả lời email với thư gốc của chúng thành một cuộc trò chuyện hoặc chuỗi duy nhất. Điều này cho phép bạn truy xuất tất cả tin nhắn trong một cuộc trò chuyện theo thứ tự, giúp bạn dễ dàng nắm được bối cảnh của một tin nhắn hoặc tinh chỉnh kết quả tìm kiếm.

Giống như tin nhắn, các chuỗi cũng có thể được gắn nhãn. Tuy nhiên, không giống như tin nhắn, bạn không thể tạo mà chỉ có thể xoá chuỗi tin nhắn. Tuy nhiên, bạn có thể chèn tin nhắn vào một chuỗi.

Nội dung

Truy xuất các luồng

Luồng cung cấp một cách đơn giản để truy xuất các tin nhắn trong một cuộc trò chuyện theo thứ tự. Bằng cách liệt kê một bộ luồng, bạn có thể chọn nhóm các thư theo cuộc trò chuyện và cung cấp thêm ngữ cảnh. Bạn có thể truy xuất danh sách các luồng bằng phương thức threads.list hoặc truy xuất một luồng cụ thể bằng threads.get. Bạn cũng có thể lọc các chuỗi bằng cách sử dụng các tham số truy vấn tương tự như đối với tài nguyên Message. Nếu có tin nhắn nào trong một chuỗi khớp với truy vấn, thì chuỗi đó sẽ được trả về trong kết quả.

Mã mẫu bên dưới minh hoạ cách sử dụng cả hai phương thức trong một mẫu hiển thị các chuỗi trò chuyện sôi nổi nhất trong hộp thư đến của bạn. Phương thức threads.list tìm nạp tất cả mã nhận dạng luồng, sau đó threads.get lấy tất cả thông báo trong mỗi luồng. Đối với những người có từ 3 câu trả lời trở lên, chúng tôi sẽ trích xuất dòng Subject và hiển thị những dòng không trống cùng với số lượng tin nhắn trong chuỗi. Bạn cũng sẽ tìm thấy mã mẫu này trong video DevByte tương ứng.

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

Thêm thư nháp và thư vào chuỗi thư

Nếu bạn đang gửi hoặc di chuyển những thư là thư trả lời cho một email khác hoặc là một phần của cuộc trò chuyện, thì ứng dụng của bạn nên thêm thư đó vào chuỗi thư liên quan. Nhờ đó, những người dùng Gmail đang tham gia cuộc trò chuyện sẽ dễ dàng nắm được ngữ cảnh của tin nhắn.

Bạn có thể thêm bản nháp vào một chuỗi tin nhắn trong quá trình tạo, cập nhật hoặc gửi tin nhắn nháp. Bạn cũng có thể thêm tin nhắn vào một chuỗi khi chèn hoặc gửi tin nhắn.

Để thuộc một chuỗi, thư hoặc bản nháp phải đáp ứng các tiêu chí sau:

  1. Bạn phải chỉ định threadId được yêu cầu trên Message hoặc Draft.Message mà bạn cung cấp cùng với yêu cầu.
  2. Bạn phải đặt tiêu đề ReferencesIn-Reply-To theo tiêu chuẩn RFC 2822.
  3. Tiêu đề Subject phải khớp.

Hãy xem ví dụ về tạo bản nháp hoặc gửi tin nhắn. Trong cả hai trường hợp, bạn chỉ cần thêm một khoá threadId được ghép nối với một mã nhận dạng luồng vào siêu dữ liệu của thông báo, tức là đối tượng message.