Threads को मैनेज करना

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

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

विषय सूची

थ्रेड फ़ेच की जा रही हैं

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

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

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

थ्रेड में ड्राफ़्ट और मैसेज जोड़ना

अगर किसी ऐसे मैसेज को भेजा या माइग्रेट किया जा रहा है जो किसी दूसरे ईमेल का जवाब है या बातचीत का हिस्सा है, तो आपके ऐप्लिकेशन को उस मैसेज को उससे जुड़े थ्रेड में जोड़ना चाहिए. इससे बातचीत में हिस्सा लेने वाले Gmail उपयोगकर्ताओं के लिए, मैसेज को कॉन्टेक्स्ट में रखना आसान हो जाता है.

थ्रेड में ड्राफ़्ट मैसेज बनाने, अपडेट करने या भेजने के दौरान ड्राफ़्ट जोड़ा जा सकता है. आपके पास थ्रेड में मैसेज शामिल करने या भेजने के दौरान भी मैसेज जोड़ने का विकल्प होता है.

किसी थ्रेड का हिस्सा बनने के लिए, किसी मैसेज या ड्राफ़्ट को ये शर्तें पूरी करनी होंगी:

  1. अनुरोध किए गए threadId के बारे में, Message या Draft.Message पर बताया जाना चाहिए.
  2. References और In-Reply-To हेडर, आरएफ़सी 2822 स्टैंडर्ड के मुताबिक सेट होने चाहिए.
  3. Subject हेडर का मेल खाना ज़रूरी है.

ड्राफ़्ट बनाने या मैसेज भेजने के उदाहरणों पर एक नज़र डालें. दोनों मामलों में, आपको मैसेज के मेटाडेटा message ऑब्जेक्ट में, थ्रेड आईडी के साथ जोड़ी गई threadId कुंजी जोड़नी होगी.