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

เอกสารนี้อธิบายวิธีดึงข้อมูลข้อความในเธรดและเพิ่มข้อความลงในเธรดโดยใช้ Gmail API

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

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

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

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

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

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

นอกจากนี้ คุณยังกรองเธรดได้โดยใช้พารามิเตอร์การค้นหาเดียวกันกับที่ใช้สำหรับทรัพยากร messages หากมีข้อความใดในชุดข้อความตรงกับการค้นหา ระบบจะแสดงชุดข้อความนั้นในผลการค้นหา

เพิ่มฉบับร่างและข้อความลงในชุดข้อความ

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

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

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

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

  1. ต้องระบุ threadId ที่ขอเป็นส่วนหนึ่งของ drafts.message หรือทรัพยากร messages ที่คุณระบุในคำขอ

  2. ต้องตั้งค่าส่วนหัว References และ In-Reply-To ให้เป็นไปตามมาตรฐาน RFC 2822

  3. ส่วนหัว Subject ต้องตรงกัน

ดูตัวอย่างโค้ดวิธีใช้ threadId ได้ที่สร้างฉบับร่างหรือส่งข้อความ ในทั้ง 2 กรณี คุณต้องระบุthreadIdเป้าหมายภายในทรัพยากร messages ของคำขอ