থ্রেড পরিচালনা করুন

এই ডকুমেন্টটিতে জিমেইল এপিআই (Gmail API) ব্যবহার করে কীভাবে থ্রেড মেসেজ পুনরুদ্ধার করতে হয় এবং থ্রেডে মেসেজ যোগ করতে হয়, তা ব্যাখ্যা করা হয়েছে।

জিমেইল এপিআই (Gmail API) ইমেলের উত্তরগুলোকে মূল বার্তার সাথে একত্রিত করে একটি একক কথোপকথন বা থ্রেডে পরিণত করার জন্য threads রিসোর্সটি ব্যবহার করে। এর ফলে আপনি একটি কথোপকথনের সমস্ত বার্তা ক্রমানুসারে পেতে পারেন, যা কোনো বার্তার প্রেক্ষাপট বুঝতে বা অনুসন্ধানের ফলাফল পরিমার্জন করতে সহজ করে তোলে।

messages রিসোর্সের মতোই, থ্রেডেও লেবেল প্রয়োগ করা যায়। তবে, মেসেজের মতো নয়, থ্রেড তৈরি করা যায় না, কেবল মুছে ফেলা যায়। কিন্তু, একটি থ্রেডে মেসেজ যোগ করা যায়।

থ্রেডগুলি পুনরুদ্ধার করুন

থ্রেড একটি কথোপকথনের বার্তাগুলো ক্রমানুসারে খুঁজে বের করার একটি উপায় প্রদান করে। একগুচ্ছ থ্রেড তালিকাভুক্ত করার মাধ্যমে আপনি কথোপকথন অনুযায়ী বার্তাগুলোকে দলবদ্ধ করতে এবং অতিরিক্ত প্রাসঙ্গিক তথ্য যোগ করতে পারেন। আপনি 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 রিসোর্সের জন্য ব্যবহৃত একই কোয়েরি প্যারামিটার ব্যবহার করে থ্রেড ফিল্টার করতে পারেন। যদি কোনো থ্রেডের কোনো মেসেজ কোয়েরির সাথে মিলে যায়, তাহলে ফলাফলে সেই থ্রেডটি ফেরত দেওয়া হয়।

থ্রেডে খসড়া এবং বার্তা যোগ করুন

আপনি যদি অন্য কোনো ইমেইলের উত্তর হিসেবে বা কোনো কথোপকথনের অংশ হিসেবে বার্তা পাঠান বা স্থানান্তর করেন, তাহলে আপনার অ্যাপ্লিকেশনটির উচিত সেই বার্তাটিকে সংশ্লিষ্ট থ্রেডে যুক্ত করা। এর ফলে, কথোপকথনে অংশগ্রহণকারী জিমেইল ব্যবহারকারীদের পক্ষে বার্তাটির প্রাসঙ্গিকতা বজায় রাখা সহজ হয়।

drafts রিসোর্স ব্যবহার করে কোনো বার্তা তৈরি , আপডেট বা পাঠানোর অংশ হিসেবে একটি থ্রেডে একটি ড্রাফট যোগ করা যেতে পারে।

আপনি messages রিসোর্স ব্যবহার করে বার্তা ঢোকানো বা পাঠানোর অংশ হিসেবে কোনো থ্রেডে বার্তা যোগ করতে পারেন।

কোনো থ্রেডের অংশ হতে হলে, একটি খসড়া বা বার্তাকে অবশ্যই নিম্নলিখিত শর্তগুলো পূরণ করতে হবে:

  1. আপনার অনুরোধের সাথে সরবরাহ করা drafts.message বা messages রিসোর্সের অংশ হিসেবে অনুরোধকৃত threadId অবশ্যই উল্লেখ করতে হবে।

  2. References এবং In-Reply-To হেডার অবশ্যই RFC 2822 স্ট্যান্ডার্ড মেনে সেট করতে হবে।

  3. Subject শিরোনামগুলো অবশ্যই মিলতে হবে।

threadId কীভাবে ব্যবহার করতে হয় তার কোড নমুনার জন্য, 'Create drafts' অথবা 'Send messages' দেখুন। উভয় ক্ষেত্রেই, আপনাকে আপনার অনুরোধের messages রিসোর্সের মধ্যে টার্গেট threadId অন্তর্ভুক্ত করতে হবে।