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

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

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

فهرست مطالب

بازیابی نخ‌ها

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

نمونه کد زیر نحوه استفاده از هر دو روش را در نمونه‌ای که پرتکرارترین تاپیک‌ها را در صندوق ورودی شما نمایش می‌دهد، نشان می‌دهد. متد threads.list شناسه‌های همه تاپیک‌ها را دریافت می‌کند، سپس threads.get همه پیام‌های هر تاپیک را می‌گیرد. برای آنهایی که ۳ پاسخ یا بیشتر دارند، خط 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()

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

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

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

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

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

به مثال‌های ایجاد پیش‌نویس یا ارسال پیام نگاهی بیندازید. در هر دو مورد، شما به سادگی یک کلید threadId را به همراه یک شناسه thread به ابرداده پیام، یعنی شیء message ، اضافه می‌کنید.