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

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