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 कुंजी जोड़नी होगी.