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

يوضّح هذا المستند كيفية استرداد رسائل السلسلة وإضافة رسائل إلى السلاسل باستخدام 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، يمكنك الرجوع إلى إنشاء مسودات أو إرسال رسائل. في كلتا الحالتَين، عليك تضمين threadId المستهدَف ضمن مصدر messages في طلبك.