إدارة سلاسل المحادثات

تستخدم واجهة برمجة التطبيقات Gmail API Thread موارد لتجميع الردود على الرسائل الإلكترونية مع رسالتها الأصلية في محادثة واحدة أو سلسلة محادثات واحدة. ويتيح لك هذا استرداد جميع الرسائل في المحادثة بالترتيب، مما يسهل الحصول على سياق للرسالة أو تحسين نتائج البحث.

مثل الرسائل، قد تحتوي سلاسل المحادثات أيضًا على تصنيفات تم تطبيقها عليها. ومع ذلك، على عكس الرسائل، لا يمكن إنشاء سلاسل المحادثات، بل يتم حذفها فقط. ومع ذلك، يمكن إدراج الرسائل في سلسلة محادثات.

الفهرس

جارٍ استرداد سلاسل المحادثات

توفّر سلاسل المحادثات طريقة بسيطة لاسترداد الرسائل في محادثة بالترتيب. ومن خلال إدراج مجموعة من سلاسل المحادثات، يمكنك اختيار تجميع الرسائل حسب المحادثة وتوفير سياق إضافي. يمكنك استرداد قائمة بسلاسل المحادثات باستخدام طريقة threads.list أو استرداد سلسلة محادثات معيّنة باستخدام threads.get. يمكنك أيضًا فلترة سلاسل المحادثات باستخدام معلَمات طلب البحث نفسها المستخدَمة في مورد Message. إذا كانت أي رسالة في سلسلة محادثات تطابق الاستعلام، فسيتم عرض سلسلة المحادثات هذه في النتيجة.

يوضح نموذج الرمز البرمجي أدناه كيفية استخدام كلتا الطريقتين في نموذج يعرض سلاسل المحادثات الأكثر تداولاً في البريد الوارد. تجلب طريقة threads.list جميع أرقام تعريف سلاسل المحادثات، ثم تجلب threads.get جميع الرسائل في كل سلسلة محادثات. بالنسبة إلى المستخدمين الذين لديهم 3 ردود أو أكثر، نستخرج السطر 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 بما يتوافق مع معيار RFC 2822.
  3. يجب أن تتطابق عناوين Subject.

ألقِ نظرة على أمثلة إنشاء مسودة أو إرسال رسالة. في كلتا الحالتين، يمكنك ببساطة إضافة مفتاح threadId مقترنًا بمعرّف سلسلة محادثات إلى البيانات الوصفية للرسالة، وهو الكائن message.