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

تستخدم واجهة برمجة التطبيقات 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.