مدیریت موضوعات

Gmail API از منابع Thread برای گروه بندی پاسخ های ایمیل با پیام اصلی خود در یک گفتگو یا رشته استفاده می کند. این به شما امکان می‌دهد همه پیام‌های موجود در یک مکالمه را به ترتیب بازیابی کنید، و داشتن زمینه یک پیام یا اصلاح نتایج جستجو را آسان‌تر می‌کند.

مانند پیام‌ها ، رشته‌ها نیز ممکن است دارای برچسب‌هایی باشند. با این حال، برخلاف پیام‌ها، رشته‌ها را نمی‌توان ایجاد کرد، فقط حذف می‌شوند. با این حال، پیام ها را می توان در یک موضوع درج کرد.

فهرست

در حال بازیابی رشته ها

موضوعات راه ساده ای برای بازیابی پیام ها در یک مکالمه به ترتیب ارائه می دهند. با فهرست کردن مجموعه‌ای از رشته‌ها، می‌توانید پیام‌ها را بر اساس مکالمه گروه‌بندی کنید و زمینه بیشتری را ارائه دهید. می‌توانید فهرستی از رشته‌ها را با استفاده از روش threads.list بازیابی کنید یا یک رشته خاص را با threads.get بازیابی کنید. همچنین می توانید رشته ها را با استفاده از همان پارامترهای پرس و جو که برای منبع Message وجود دارد فیلتر کنید. اگر هر پیامی در یک رشته با پرس و جو مطابقت داشته باشد، آن رشته در نتیجه برگردانده می شود.

نمونه کد زیر نحوه استفاده از هر دو روش را در نمونه ای نشان می دهد که بیشترین گفتگوها را در صندوق ورودی شما نشان می دهد. روش threads.list همه شناسه‌های رشته را واکشی می‌کند، سپس threads.get همه پیام‌های هر رشته را می‌گیرد. برای کسانی که 3 یا بیشتر پاسخ دارند، خط Subject را استخراج می کنیم و موارد خالی را به اضافه تعداد پیام های موجود در رشته نمایش می دهیم. این نمونه کد را نیز در ویدیوی DevByte مربوطه خواهید دید.

پایتون

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

افزودن پیش‌نویس‌ها و پیام‌ها به موضوعات

اگر در حال ارسال یا انتقال پیام هایی هستید که پاسخی به ایمیل دیگری یا بخشی از یک مکالمه است، برنامه شما باید آن پیام را به رشته مرتبط اضافه کند. این کار باعث می‌شود تا کاربران جی‌میل که در مکالمه شرکت می‌کنند، راحت‌تر پیام را در متن نگه دارند.

یک پیش نویس را می توان به عنوان بخشی از ایجاد ، به روز رسانی یا ارسال یک پیام پیش نویس به یک رشته اضافه کرد. همچنین می توانید پیامی را به عنوان بخشی از درج یا ارسال پیام به یک رشته اضافه کنید.

برای اینکه بخشی از یک موضوع باشد، یک پیام یا پیش نویس باید معیارهای زیر را داشته باشد:

  1. threadId درخواستی باید در Message یا Draft.Message که با درخواست خود ارائه می کنید مشخص شود.
  2. هدرهای References و In-Reply-To باید مطابق با استاندارد RFC 2822 تنظیم شوند.
  3. سرصفحه های Subject باید مطابقت داشته باشند.

به ایجاد یک پیش نویس یا ارسال یک پیام نمونه نگاه کنید. در هر دو مورد، شما به سادگی یک کلید threadId جفت شده با شناسه رشته را به ابرداده پیام، شی message اضافه می کنید.