رشته ها را مدیریت کنید

این سند نحوه بازیابی پیام‌های رشته و افزودن پیام به رشته‌ها با استفاده از API جیمیل را توضیح می‌دهد.

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

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

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

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

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

پایتون

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 ، به ایجاد پیش‌نویس‌ها یا ارسال پیام‌ها مراجعه کنید. در هر دو مورد، باید threadId هدف را در منبع messages درخواست خود قرار دهید.