تخطٍ إلى المحتوى

تعريف زمن استجابة الوكيل

🧭 1. فهم السياق

هناك ثلاثة أنواع من الرسائل:

  • TYPE_USER_IN → المستخدم يرسل رسالة (عميل).
  • TYPE_BOT_OUT يرد → البوت.
  • TYPE_AGENT_OUT → الوكيل المباشر يرد.

قد ينضم العملاء إلى منتصف المحادثة، حيث يرد الروبوت تلقائيا. عندما يرد الوكيل، يتوقف الروبوت مؤقتا.

الهدف هو القياس:

"كم يستغرق العميل للرد على رسالة مستخدم تحتاج إلى اهتمام بشري."

🧩 2. التعريف الأساسي لزمن استجابة الوكيل

زمن استجابة الوكيل (ART) =

فرق الوقت بين آخر رسالة للمستخدم تتطلب استجابة بشرية وأول رسالة صادرة للوكيل بعد ذلك.

ومع ذلك، بما أن البوت قد يرد تلقائيا قبل أن يتولى الوكيل القيادة، يجب أن نتجاهل رسائل البوت عند حساب ART.

وهذا يعني:

  • قم بالقياس فقط من رسالة المستخدم (TYPE_USER_IN)
  • إلى رد الوكيل التالي (TYPE_AGENT_OUT)
  • مع تجاهل رسائل البوتات الوسيطة (TYPE_BOT_OUT)

🧠 3. قواعد القياس الدقيق

القضية | الوصف | هل يجب أن تحتسب كوقت استجابة؟

يرسل المستخدم رسالة → يرد الوكيل مباشرة | الحالة القياسية | ✅ نعم

يرسل المستخدم رسالة → يرد الروبوت → ينضم الوكيل لاحقا | تولى العميل المهمة بعد الروبوت | ✅ نعم (ابدأ من رسالة المستخدم، وليس من البوت)

الروبوت يرسل رسالة استباقية → يرد الوكيل | لم تفعل أي رسالة مستخدم | ❌ لا

يرد الوكيل على وكيل آخر | التعاون الداخلي | ❌ لا

يرد الوكيل بعد رسالة المستخدم ولكن بعد فترة طويلة (البوت توقف مؤقتا، ينتظر الوكيل) | لا يزال يحتسب | ✅ نعم

يرسل المستخدم عدة رسائل قبل الرد على الوكيل | استخدم آخر رسالة مستخدم قبل رد الوكيل | ✅ نعم

🧮 4. تدفق الخوارزمية / المنطق

يمكنك حساب زمن استجابة الوكيل بهذه الطريقة:

  1. لكل رسالة TYPE_AGENT_OUT:
    • انظر إلى الوراء بالزمن لأحدث رسالة TYPE_USER_IN .
    • تجاهل أي TYPE_BOT_OUT رسائل TYPE_AGENT_OUT أو رسائل بينهما.
    • احسب فرق التوقيت: ART = agent_out.timestamp - user_in.timestamp
  2. استثناء:
    • إذا لم يكن هناك TYPE_USER_IN سابق.
    • إذا كانت آخر رسالة قبل رد الوكيل هي رسالة وكيل آخر.
    • إذا كانت رسالة الوكيل جزءا من تسلسل سريع (نفس الوكيل يواصل المحادثة).

إذا أرسل الوكيل عدة رسائل متتالية، فإن أول رسالة بعد إدخال المستخدم فقط تحتسب ك "استجابة".

🧾 5. السيناريوهات والأمثلة

🧩 السيناريو أ: الحالة الأساسية

الطابع الزمني | النوع | الرسالة

10:00:00 | TYPE_USER_IN | "مرحبا، أحتاج مساعدة"

10:00:05 | TYPE_BOT_OUT | "مرحبا! كيف يمكنني مساعدتك؟"

10:00:20 | TYPE_AGENT_OUT | "مرحبا جون، سأساعدك في ذلك."

زمن استجابة العميل = 10:00:20 − 10:00:00 = 20 ثانية

✅ تم العد — رغم أن الروبوت رد أولا.

🧩 السيناريو ب: الروبوت يتعامل أولا، ثم ينضم العميل لاحقا

الزمن | النوع | الرسالة

11:00:00 | TYPE_USER_IN | "هل يمكنني استرداد المبلغ؟"

11:00:03 | TYPE_BOT_OUT | "يرجى تقديم هوية طلبك."

11:00:10 | TYPE_USER_IN | "الأمر #12345"

11:00:12 | TYPE_BOT_OUT | "طلبات الاسترداد عادة ما تستغرق 3 أيام... "

11:00:40 | TYPE_AGENT_OUT | "مرحبا، يمكنني تأكيد أن استرداد أموالك قد تم معالجته."

✅ زمن الاستجابة = 11:00:40 − 11:00:10 = 30 ثانية
(آخر رسالة مستخدم قبل رد الوكيل)

🧩 السيناريو ج: الوكيل يرد على العميل

الزمن | النوع | الرسالة

12:00:00 | TYPE_AGENT_OUT | "يرجى التعامل مع هذه التذكرة."

12:00:05 | TYPE_AGENT_OUT | "أكيد، سأفعل."

❌ لم يتم تسجيل وقت استجابة — من وكيل إلى وكيل داخلي.

🧩 السيناريو د: رسائل مستخدم متعددة قبل الوكيل

الزمن | النوع | الرسالة

13:00:00 | TYPE_USER_IN | "مرحبا"

13:00:05 | TYPE_USER_IN | "هل هناك أحد؟"

13:00:10 | TYPE_AGENT_OUT | "نعم، أنا هنا."

✅ زمن الاستجابة = 13:00:10 − 13:00:05 = 5 ثوان

(استخدم أحدث رسالة مستخدم)

🧩 السيناريو ه: رسالة المستخدم بعد أن يكون الوكيل نشطا بالفعل

الزمن | النوع | الرسالة

14:00:00 | TYPE_AGENT_OUT | "مرحبا! كيف يمكنني المساعدة؟"

14:00:05 | TYPE_USER_IN | "أحتاج لتغيير بريدي الإلكتروني."

14:00:10 | TYPE_AGENT_OUT | "أكيد، أستطيع فعل ذلك."

✅ زمن الاستجابة = 14:00:10 − 14:00:05 = 5 ثوان