إدارة سلاسل المحادثات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تستخدم واجهة برمجة التطبيقات Gmail API موارد Thread
لتجميع الردود على الرسائل الإلكترونية مع الرسالة الأصلية في محادثة أو سلسلة محادثات واحدة. يتيح لك ذلك استرداد جميع الرسائل في محادثة بترتيبها، ما يسهّل فهم سياق الرسالة أو تحسين نتائج البحث.
مثل الرسائل، قد يتم أيضًا تطبيق تصنيفات على سلاسل المحادثات. ومع ذلك، على عكس الرسائل، لا يمكن إنشاء سلاسل محادثات، بل يمكن حذفها فقط. ومع ذلك، يمكن إدراج الرسائل في سلسلة محادثات.
المحتويات
جارٍ استرداد سلاسل المحادثات
توفّر سلاسل المحادثات طريقة بسيطة لاسترداد الرسائل في محادثة بترتيبها.
من خلال إدراج مجموعة من سلاسل المحادثات، يمكنك اختيار تجميع الرسائل حسب المحادثة وتقديم سياق إضافي. يمكنك استرداد قائمة سلاسل محادثات باستخدام الطريقة threads.list
، أو استرداد سلسلة محادثات معيّنة باستخدام threads.get
. يمكنك أيضًا فلترة سلاسل المحادثات باستخدام مَعلمات طلب البحث نفسها المستخدَمة مع المرجع Message
. إذا تطابقت أي رسالة في سلسلة محادثات مع طلب البحث، سيتم عرض سلسلة المحادثات هذه في النتيجة.
يوضّح نموذج الرمز البرمجي أدناه كيفية استخدام كلتا الطريقتين في نموذج يعرض سلاسل المحادثات الأكثر نشاطًا في صندوق الوارد. تجلب الطريقة threads.list
جميع معرّفات سلاسل المحادثات، ثم تسترد الطريقة threads.get
جميع الرسائل في كل سلسلة محادثات.
بالنسبة إلى المحادثات التي تتضمّن 3 ردود أو أكثر، نستخرج السطر Subject
ونعرض الردود غير الفارغة بالإضافة إلى عدد الرسائل في سلسلة المحادثات. يمكنك أيضًا العثور على نموذج الرمز البرمجي هذا في فيديو DevByte ذي الصلة.
إضافة مسودات ورسائل إلى سلاسل المحادثات
إذا كنت بصدد إرسال رسائل أو نقلها وهي عبارة عن رد على رسالة إلكترونية أخرى أو جزء من محادثة، يجب أن يضيف تطبيقك هذه الرسالة إلى سلسلة المحادثات ذات الصلة. يسهّل ذلك على مستخدمي Gmail المشاركين في المحادثة الحفاظ على سياق الرسالة.
يمكن إضافة مسودة إلى سلسلة محادثات كجزء من
إنشاء أو
تعديل أو
إرسال مسودة رسالة.
يمكنك أيضًا إضافة رسالة إلى سلسلة محادثات كجزء من عملية
إدراج رسالة أو
إرسال رسالة.
لكي تكون الرسالة أو المسودة جزءًا من سلسلة محادثات، يجب أن تستوفي المعايير التالية:
- يجب تحديد
threadId
المطلوب في Message
أو Draft.Message
الذي تقدّمه مع طلبك.
- يجب ضبط العنوانَين
References
وIn-Reply-To
بما يتوافق مع معيار RFC 2822.
- يجب أن تتطابق عناوين
Subject
.
اطّلِع على أمثلة إنشاء مسودة أو إرسال رسالة. في كلتا الحالتَين، ما عليك سوى إضافة مفتاح threadId
مقترن بمعرّف سلسلة محادثات إلى البيانات الوصفية للرسالة، أي الكائن message
.
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-29 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-29 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Managing Threads\n\nThe Gmail API uses [`Thread` resources](/workspace/gmail/api/v1/reference/users/threads)\nto group email replies with their original message into a single conversation or\nthread. This allows you to retrieve all messages in a conversation, in order,\nmaking it easier to have context for a message or to refine search results.\n\nLike [messages](/workspace/gmail/api/v1/reference/users/messages), threads may also have\nlabels applied to them. However, unlike messages, threads cannot be created,\nonly deleted. Messages can, however, be inserted into a thread.\n\nContents\n--------\n\nRetrieving threads\n------------------\n\nThreads provide a simple way of retrieving messages in a conversation in order.\nBy listing a set of threads you can choose to group messages by conversation\nand provide additional context. You can retrieve a list of threads using the\n[`threads.list`](/workspace/gmail/api/v1/reference/users/threads/list) method, or retrieve\na specific thread with\n[`threads.get`](/workspace/gmail/api/v1/reference/users/threads/list). You can also\n[filter threads](/workspace/gmail/api/guides/filtering) using the same query parameters as\nfor the [`Message` resource](/workspace/gmail/api/v1/reference/users/messages). If any\nmessage in a thread matches the query, that thread is returned in the result. \n\nThe code sample below demonstrates how to use both methods in a sample that\ndisplays the most chatty threads in your inbox. The `threads.list` method\nfetches all thread IDs, then `threads.get` grabs all messages in each thread.\nFor those with 3 or more replies, we extract the `Subject` line and display the\nnon-empty ones plus the number of messages in the thread. You'll also find this\ncode sample featured in the corresponding DevByte video.\n\n### Python\n\ngmail/snippet/thread/threads.py \n[View on GitHub](https://github.com/googleworkspace/python-samples/blob/main/gmail/snippet/thread/threads.py) \n\n```python\nimport google.auth\nfrom googleapiclient.discovery import build\nfrom googleapiclient.errors import HttpError\n\n\ndef show_chatty_threads():\n \"\"\"Display threads with long conversations(\u003e= 3 messages)\n Return: None\n\n Load pre-authorized user credentials from the environment.\n TODO(developer) - See https://developers.google.com/identity\n for guides on implementing OAuth2 for the application.\n \"\"\"\n creds, _ = google.auth.default()\n\n try:\n # create gmail api client\n service = build(\"gmail\", \"v1\", credentials=creds)\n\n # pylint: disable=maybe-no-member\n # pylint: disable:R1710\n threads = (\n service.users().threads().list(userId=\"me\").execute().get(\"threads\", [])\n )\n for thread in threads:\n tdata = (\n service.users().threads().get(userId=\"me\", id=thread[\"id\"]).execute()\n )\n nmsgs = len(tdata[\"messages\"])\n\n # skip if \u003c3 msgs in thread\n if nmsgs \u003e 2:\n msg = tdata[\"messages\"][0][\"payload\"]\n subject = \"\"\n for header in msg[\"headers\"]:\n if header[\"name\"] == \"Subject\":\n subject = header[\"value\"]\n break\n if subject: # skip if no Subject line\n print(f\"- {subject}, {nmsgs}\")\n return threads\n\n except HttpError as error:\n print(f\"An error occurred: {error}\")\n\n\nif __name__ == \"__main__\":\n show_chatty_threads()\n```\n\nAdding drafts and messages to threads\n-------------------------------------\n\nIf you are sending or migrating messages that are a response to another email\nor part of a conversation, your application should add that message to the\nrelated thread. This makes it easier for Gmail users who are participating in\nthe conversation to keep the message in context.\n\nA draft can be added to a thread as part of\n[creating](/workspace/gmail/api/v1/reference/users/drafts/create),\n[updating](/workspace/gmail/api/v1/reference/users/drafts/update), or\n[sending](/workspace/gmail/api/v1/reference/users/drafts/send) a draft message.\nYou can also add a message to a thread as part of\n[inserting](/workspace/gmail/api/v1/reference/users/messages/insert) or\n[sending](/workspace/gmail/api/v1/reference/users/messages/send) a message.\n\nIn order to be part of a thread, a message or draft must meet the following\ncriteria:\n\n1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request.\n2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822#appendix-A.2) standard.\n3. The `Subject` headers must match.\n\nTake a look at the [creating a draft](/workspace/gmail/api/guides/drafts) or [sending a\nmessage](/workspace/gmail/api/guides/sending) examples. In both cases, you would simply\nadd a `threadId` key paired with a thread ID to a message's metadata, the\n`message` object."]]