थ्रेड मैनेज करना

इस दस्तावेज़ में, Gmail API का इस्तेमाल करके थ्रेड के मैसेज वापस पाने और थ्रेड में मैसेज जोड़ने का तरीका बताया गया है.

Gmail API, threads संसाधन का इस्तेमाल करता है. इससे ईमेल के जवाबों को उनके ओरिजनल मैसेज के साथ एक बातचीत या थ्रेड में ग्रुप किया जा सकता है. इससे आपको किसी बातचीत के सभी मैसेज क्रम से मिलते हैं. इससे किसी मैसेज का कॉन्टेक्स्ट समझना या खोज के नतीजों को बेहतर बनाना आसान हो जाता है.

messages संसाधन की तरह, थ्रेड पर भी लेबल लागू किए जा सकते हैं. हालांकि, मैसेज के उलट थ्रेड बनाई नहीं जा सकतीं. इन्हें सिर्फ़ मिटाया जा सकता है. हालांकि, मैसेज को थ्रेड में डाला जा सकता है.

थ्रेड वापस पाना

थ्रेड की मदद से, किसी बातचीत में मौजूद मैसेज को क्रम से वापस लाया जा सकता है. थ्रेड का सेट लिस्ट करके, बातचीत के हिसाब से मैसेज ग्रुप किए जा सकते हैं. साथ ही, ज़्यादा जानकारी दी जा सकती है. threads.list तरीके का इस्तेमाल करके, थ्रेड की सूची वापस पाई जा सकती है. इसके अलावा, threads.get तरीके का इस्तेमाल करके, किसी खास थ्रेड को वापस पाया जा सकता है.

नीचे दिए गए कोड सैंपल में, threads.get और threads.list तरीकों का इस्तेमाल करने का तरीका बताया गया है. इस सैंपल में, आपके इनबॉक्स में सबसे ज़्यादा बातचीत वाले थ्रेड वापस पाने का तरीका बताया गया है. threads.list तरीके से सभी थ्रेड आईडी फ़ेच किए जाते हैं. इसके बाद, threads.get हर थ्रेड में मौजूद सभी मैसेज को इकट्ठा करता है. जिन मैसेज के तीन या उससे ज़्यादा जवाब होते हैं उनके लिए, हम 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 का इस्तेमाल करने के तरीके के कोड सैंपल के लिए, ड्राफ़्ट बनाना या मैसेज भेजना लेख पढ़ें. दोनों ही मामलों में, आपको अपने अनुरोध के messages संसाधन में टारगेट threadId को शामिल करना होगा.