أهلاً بك في هذا الدرس الجديد!
في الدرس السابق، قمنا ببناء "آذان" وكيلنا. تعلمنا كيف ننشئ نقطة نهاية (Endpoint) باستخدام Flask ونجعلها متاحة للإنترنت عبر ngrok. أصبح وكيلنا الآن قادرًا على "الاستماع" واستقبال الرسائل من واتساب في الوقت الفعلي. هذه خطوة تقنية هائلة!
ولكن، ماذا بعد أن تصل الرسالة؟ ماذا يجب على الوكيل أن يقول أو يفعل؟ هذا هو جوهر درسنا اليوم. قبل أن نكتب سطراً واحداً من منطق المحادثة، يجب أن نصممه. هدفنا هو تصميم مخطط تدفق لمحادثة وكيل مبيعات بسيط عبر واتساب. سنتعلم كيف نخطط للمحادثة مثل مهندس معماري يخطط لمبنى، لنتأكد من أن التجربة ستكون سلسة ومنطقية للمستخدم.
1. ما هو تصميم المحادثات (Conversation Design)؟
عندما نبني وكيلاً ذكياً، نحن لا نكتب برنامجاً فقط، بل نصمم تجربة تفاعلية. تصميم المحادثات هو فن وعلم التخطيط لهذه التجربة. إنه لا يقتصر على كتابة الردود، بل يشمل التفكير في كل مسار ممكن يمكن أن تسلكه المحادثة، وكيف يشعر المستخدم في كل خطوة، وكيف يمكن توجيهه بسلاسة نحو هدفه.
يشبه مصمم المحادثات المهندس المعماري. فهو لا يضع الطوب بشكل عشوائي، بل يرسم مخططاً كاملاً يحدد الغرف، والممرات، وكيف يتنقل الناس داخل المبنى. مخططنا اليوم سيكون هو المخطط الهندسي لمحادثة وكيلنا.
2. أسس المحادثة الجيدة
لكي تبدو محادثة الوكيل طبيعية ومفيدة، يجب أن تتبع بعض المبادئ الأساسية التي تحكم تفاعلنا البشري. لفهم هذه المبادئ بعمق، أدعوك لقراءة المادة التالية التي تشرحها بشكل ممتاز.
Conversation Design for Chatbots: The Ultimate Guide
هذا المقال من موقع Landbot بعنوان "دليل تصميم المحادثات" هو مرجع رائع. سنركز على الأجزاء التي تشرح المبادئ الأساسية والعناصر الشائعة في تصميم واجهات المحادثة.
يرجى قراءة قسم "3. The Three Pillars of Conversation Design" لفهم المبادئ التعاونية، وتبادل الأدوار، والسياق. ثم تصفح قسم "4. Common Elements of Conversational UI" للتعرف على المكونات التي يمكنك استخدامها لبناء محادثتك.
بعد قراءة المادة، دعنا نلخص أهم الأفكار:
- المبدأ التعاوني (Cooperative Principle): تفترض المحادثات الناجحة أن كلا الطرفين يتعاونان لتحقيق هدف مشترك. هذا يعني أن الوكيل يجب أن يقدم معلومات:
- بالكمية المناسبة: لا ترسل فقرات طويلة من النص. قسم المعلومات إلى رسائل قصيرة.
- بجودة عالية: يجب أن تكون المعلومات صحيحة ومحدثة.
- ذات صلة: لا تحاول بيع شيء لا علاقة له بسؤال المستخدم.
- بوضوح: تجنب الغموض أو الكلام المتناقض.
- تبادل الأدوار (Turn-Taking): المحادثة هي حوار، وليست محاضرة. يجب أن يتحدث الوكيل ثم يمنح المستخدم فرصة للرد.
- السياق (Context): يجب أن يكون تصميم المحادثة ملائماً للمنصة (واتساب) ولحالة المستخدم (قد يكون مشغولاً أو يستخدم الهاتف أثناء التنقل).
3. بناء مخطط التدفق (Flowchart)
أفضل طريقة لتصميم المحادثة هي من خلال مخطط تدفق. وهو رسم بياني يوضح تسلسل الخطوات والقرارات في المحادثة. كل شكل في المخطط يمثل نوعاً مختلفاً من الإجراءات:
- الشكل البيضاوي (Oval): يمثل نقطة البداية أو النهاية للمحادثة.
- المستطيل (Rectangle): يمثل إجراءً أو عملية يقوم بها الوكيل (مثل إرسال رسالة).
- المعين (Diamond): يمثل نقطة قرار، حيث يتفرع المسار بناءً على إجابة المستخدم (مثل
if/elseفي البرمجة).
شاهد هذا المثال البسيط لمخطط تدفق لمحادثة خدمة عملاء.

وهذا مثال آخر من منصة Manychat يوضح كيف يبدو تدفق المحادثة لوكيل واتساب باللغة العربية.
4. تصميم مخطط تدفق لوكيل المبيعات الخاص بنا
الآن، لنطبق ما تعلمناه. سنقوم بتصميم مخطط تدفق لوكيل مبيعات بسيط لمتجر إلكتروني يبيع منتجاً واحداً، لنقل "قهوة مختصة".
هدف الوكيل: الترحيب بالعميل، تقديم معلومات عن القهوة، ومعرفة ما إذا كان مهتماً بالشراء.
لنرسم معاً هذا التدفق خطوة بخطوة:
1. البداية (Start)
- (شكل بيضاوي): تبدأ المحادثة عندما يرسل العميل أي رسالة.
2. الترحيب وتقديم الخيارات (Process & Decision)
- (مستطيل): الوكيل يرسل رسالة ترحيب: "مرحباً بك في محمصة بن! أنا مساعدك الآلي. كيف يمكنني خدمتك؟"
- (مستطيل): الوكيل يقدم خيارين واضحين (يمكن تنفيذها لاحقاً كأزرار أو قائمة مرقمة):
- معرفة المزيد عن قهوتنا.
- التحدث مع موظف.
3. تحليل استجابة المستخدم (Decision)
- (معين): هل اختار المستخدم الخيار "1"؟
4. المسار الأول: معرفة المزيد (Path 1)
- إذا كانت الإجابة "نعم":
- (مستطيل): الوكيل يرسل وصفاً قصيراً للقهوة: "قهوتنا 'إشراقة الصباح' من حبوب الأرابيكا الكولومبية، تتميز بإيحاءات الشوكولاتة والكراميل. هل تود معرفة أسعارنا؟"
- (معين): هل استجاب المستخدم بـ "نعم" أو ما يدل على ذلك؟
- إذا "نعم":
- (مستطيل): الوكيل يرسل السعر: "سعر الكيس (250 جرام) هو 60 ريالاً. هل تود إضافته إلى سلتك؟" (هنا يمكن أن تبدأ عملية الطلب الفعلية، لكننا سنتوقف عند هذا الحد في تصميمنا البسيط).
- (مستطيل): الوكيل ينتظر الرد ويقدم مساعدة إضافية.
- إذا "لا":
- (مستطيل): الوكيل يرد بلطف: "حسناً. هل هناك أي شيء آخر أستطيع مساعدتك به؟" ثم يعود إلى قائمة الخيارات الرئيسية.
- إذا "نعم":
5. المسار الثاني: التحدث مع موظف (Path 2)
- إذا كانت الإجابة "لا" (أي اختار الخيار "2"):
- (مستطيل): الوكيل يرد: "بالتأكيد. سيقوم أحد أفراد فريقنا بالرد عليك في أقرب وقت ممكن خلال ساعات العمل."
- (في الخلفية، يمكن للوكيل إرسال إشعار للفريق البشري).
6. التعامل مع المدخلات غير المفهومة (Error Handling)
- إذا لم يختر المستخدم أياً من الخيارين:
- (مستطيل): الوكيل يرسل رسالة خطأ لطيفة: "عفواً، لم أفهم طلبك. يرجى الاختيار بين الخيارين: (1) لمعرفة المزيد عن القهوة، أو (2) للتحدث مع موظف."
7. النهاية (End)
- (شكل بيضاوي): تنتهي المحادثة عندما يغادر المستخدم أو عندما يتم حل استفساره.
اختبر فهمك!
في مخطط التدفق الذي صممناه، ماذا لو أرسل العميل رسالة "كم سعر القهوة؟" كأول رسالة بدلاً من اتباع الخيارات؟ كيف سيتصرف وكيلنا البسيط الحالي؟ وما الذي نحتاجه لجعله أذكى؟
Show answer
وفقًا لمخططنا البسيط، سيعجز الوكيل عن فهم الرسالة. سيعتبرها مدخلاً غير مفهوم وسيرد برسالة الخطأ: "عفواً، لم أفهم طلبك..." لأنه مبرمج فقط للتعامل مع الخيارات "1" و "2".
لجعله أذكى، سنحتاج إلى استخدام نموذج لغوي كبير (LLM) لتحليل نية المستخدم من النص الحر. بدلاً من الاعتماد على الأزرار فقط، يمكن للـ LLM أن يفهم أن "كم سعر القهوة؟" تعني أن المستخدم يريد معرفة السعر، ومن ثم يوجه المحادثة مباشرة إلى خطوة عرض السعر في مخطط التدفق. هذا ما سنعمل عليه في الدروس المتقدمة.
خلاصة الدرس
في هذا الدرس، انتقلنا من "كيف" نستقبل الرسائل إلى "ماذا" نقول عند استقبالها. لقد أنجزنا:
- فهمنا مبادئ تصميم المحادثات: تعلمنا أن المحادثات الجيدة تكون تعاونية، منظمة، وواعية بالسياق.
- تعرفنا على مخططات التدفق: رأينا كيف أنها أداة أساسية لتخطيط مسارات المحادثة وتصورها بشكل واضح.
- صممنا أول مخطط تدفق: قمنا بوضع المخطط الهندسي لمحادثة وكيل مبيعات بسيط، مع تحديد المسارات الرئيسية ونقاط القرار.
هذا المخطط هو خريطتنا للمرحلة القادمة. إنه يخبرنا بالضبط ما هي الوظائف والمنطق الذي نحتاج إلى برمجته.
ماذا بعد؟
الآن بعد أن أصبح لدينا مخطط واضح، نحن مستعدون لتحويله إلى كود. في الدرس القادم، سنبدأ بتنفيذ هذا المنطق. سنتعلم كيفية توسيع قدرات الوكيل للتعامل مع خطوات متعددة في محادثة المبيعات، وسنبدأ في كتابة الكود الذي يجعل وكيلنا يتبع المسارات التي صممناها اليوم.