การจัดการชุดข้อความ

Gmail API ใช้ทรัพยากร Thread รายการเพื่อจัดกลุ่มการตอบกลับอีเมลที่มีข้อความต้นฉบับไว้ในการสนทนาหรือชุดข้อความเดียว ซึ่งจะช่วยให้คุณเรียกข้อความทั้งหมดในการสนทนาได้ตามลำดับ ทำให้มีบริบทสำหรับข้อความหรือปรับแต่งผลการค้นหาได้ง่ายขึ้น

ชุดข้อความอาจมีป้ายกำกับติดอยู่ด้วย เช่นเดียวกับข้อความ แต่ชุดข้อความต่างจากข้อความตรงที่สร้างไม่ได้ ทำได้เพียงลบเท่านั้น แต่แทรกข้อความในชุดข้อความได้

เนื้อหา

กำลังดึงข้อมูลชุดข้อความ

โดยชุดข้อความเป็นวิธีง่ายๆ ในการเรียกข้อความในการสนทนาให้เรียงตามลำดับ การระบุชุดข้อความเป็นชุดจะช่วยให้คุณเลือกจัดกลุ่มข้อความตามการสนทนาและให้บริบทเพิ่มเติมได้ คุณเรียกข้อมูลรายการชุดข้อความได้โดยใช้เมธอด threads.list หรือดึงข้อมูลชุดข้อความที่เฉพาะเจาะจงด้วย threads.get นอกจากนี้ คุณยังกรองชุดข้อความโดยใช้พารามิเตอร์การค้นหาเดียวกันกับทรัพยากร Message ได้ด้วย หากมีข้อความในชุดข้อความตรงกับคำค้นหา ชุดข้อความนั้นจะแสดงผลในผลลัพธ์

ตัวอย่างโค้ดด้านล่างแสดงวิธีใช้ทั้ง 2 วิธีในตัวอย่างที่แสดงชุดข้อความที่แชทบ่อยที่สุดในกล่องจดหมายของคุณ เมธอด threads.list จะดึงข้อมูลรหัสชุดข้อความทั้งหมด จากนั้น threads.get จะดึงข้อความทั้งหมดในแต่ละชุดข้อความ สำหรับรายการที่มีการตอบกลับ 3 รายการขึ้นไป เราจะแยกบรรทัด Subject และแสดงบรรทัดที่ไม่ว่างเปล่าพร้อมกับจำนวนข้อความในชุดข้อความ และคุณยังจะเห็นตัวอย่างโค้ดนี้ ในวิดีโอ DevByte ที่เกี่ยวข้องด้วย

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

การเพิ่มฉบับร่างและข้อความไปยังชุดข้อความ

หากคุณกำลังส่งหรือย้ายข้อความที่เป็นการตอบกลับไปยังอีเมลอื่นหรือส่วนหนึ่งของการสนทนา แอปพลิเคชันของคุณควรเพิ่มข้อความนั้นในชุดข้อความที่เกี่ยวข้อง วิธีนี้จะช่วยให้ผู้ใช้ Gmail ที่เข้าร่วมในบทสนทนาสามารถเก็บข้อความให้อยู่ในบริบทได้ง่ายขึ้น

คุณเพิ่มฉบับร่างไปยังชุดข้อความได้โดยเป็นส่วนหนึ่งของการสร้าง การอัปเดต หรือการส่งข้อความร่าง นอกจากนี้ คุณยังเพิ่มข้อความลงในชุดข้อความในฐานะการแทรกหรือการส่งข้อความได้ด้วย

หากต้องการเป็นส่วนหนึ่งของชุดข้อความ ข้อความหรือข้อความร่างจะต้องเป็นไปตามเกณฑ์ต่อไปนี้

  1. ต้องระบุ threadId ที่ขอใน Message หรือ Draft.Message ที่คุณระบุในคำขอ
  2. ส่วนหัว References และ In-Reply-To ต้องตั้งค่าตามมาตรฐาน RFC 2822
  3. ส่วนหัว Subject ต้องตรงกัน

ดูตัวอย่างการสร้างข้อความร่างหรือการส่งข้อความ ในทั้ง 2 กรณี คุณเพียงแค่เพิ่มคีย์ threadId ที่จับคู่กับรหัสชุดข้อความลงในข้อมูลเมตาของข้อความ ซึ่งก็คือออบเจ็กต์ message