Skip to main content

محادثة واحدة لكل مستخدم خارجي

تُحدَّد المحادثة بشيئين: مفتاح API وexternal_user_id الذي ترسله. أنت لا تنشئ المحادثة صراحةً أبدًا؛ أول طلب دردشة لـ external_user_id جديد ينشئها، وكل رسالة لاحقة من المستخدم الخارجي نفسه عبر المفتاح نفسه تواصلها. النتائج التي تستحق المعرفة:
  • العزل لكل مفتاح. نفس external_user_id عبر مفتاحين مختلفين هو محادثتان مختلفتان، حتى عندما ينتمي المفتاحان إلى الوكيل نفسه. لا يرى المفتاح أبدًا حوارات مفتاح آخر أو قناة أخرى (Telegram، الودجت، وهكذا).
  • التدوير يحفظ السجل. تدوير المفتاح يغيّر سره لا معرّفه، لذلك تبقى محادثاته مرتبطة به.
  • external_user_id ملك لك. استخدم معرّفًا ثابتًا من نظامك، من 1-255 حرفًا. لا تضع فيه بيانات شخصية لا تريد تخزينها مع الحوار.
  • رد واحد في كل مرة. إذا وصلت رسالة لمستخدم خارجي بينما ردّه السابق ما زال قيد التوليد، تجيب API بـ 409 conversation_busy مع Retry-After: 2. انتظر ثم أعد الإرسال.

عرض المحادثات

GET /v1/agents/{agent_id}/conversations يُرجع محادثات المفتاح، الأحدث تحديثًا أولًا. يمكن لمفاتيح read-only وfull استدعاؤه.
last_message_preview هو آخر نص من المستخدم أو المساعد، مقتطعًا إلى 160 حرفًا، أو null للمحادثة الفارغة.

قراءة الرسائل

GET /v1/agents/{agent_id}/conversations/{conversation_id}/messages يُرجع رسائل محادثة واحدة، الأحدث أولًا. تُرجع رسائل user وassistant فقط؛ أما تبادلات الأدوات وصفوف نشاط الأدوات وموجّه النظام فلا تُكشف أبدًا. لكل رسالة id وrole (user أو assistant) وtype (text أو image أو file…) وcontent (نص؛ الحمولات غير النصية تُعرض بنصها أو اسمها) وcreated_at. معرّف المحادثة الذي ينتمي إلى مفتاح أو قناة أخرى، أو غير الموجود، يُرجع 404 conversation_not_found. لا تفرّق API بين الحالتين.

التصفّح

كل قائمة هي {"data": [...], "next_cursor": "..." | null}. أعد تمرير next_cursor في cursor لجلب الصفحة التالية، وتوقف عندما يصبح null. المؤشرات معتمة؛ المؤشر المشوّه يُرجع 422 validation_error.

التواريخ

التواريخ بصيغة ISO-8601. القيم التي تحمل منطقة زمنية تُحوَّل إلى UTC، والقيم بلا منطقة زمنية تُقرأ على أنها UTC، وdate_to غير شامل. قيمة date_to أسبق من date_from تُرجع 422 validation_error.