فهم مربعات الحوار

مكتمل

قبل البدء في تطوير روبوت باستخدام Bot Framework Composer، فمن المفيد أن نستوعب مفهوم رئيسي في تصميم روبوت - الحوارات.

في جميع الحالات باستثناء أبسطها، من المحتمل أن يستخدم الروبوت خاصتك حوارات متعددة لتنفيذ محادثات متعددة الأدوار حيث يجمع الروبوت معلومات من المستخدم، ويخزن الحالة بين الأدوار. بشكل عام، يبدأ تفاعل الروبوت بمربع حوار رئيسي يرحب فيه الروبوت بالمستخدم وينشئ المحادثة الأولية، ثم يشغل مربعات الحوار التابعة.

تدفق الحوارات

قد يكون من المفيد مقارنة تدفق التفاعلات في التطبيق التقليدي بتلك الخاصة بالروبوت. راجع تطبيق طلب البيتزا.

في تطبيق تقليدي، يميل المستخدمون إلى التفكير في التفاعلات على أنها سلسلة من "الشاشات" أو "الصفحات". على سبيل المثال، على موقع ويب طلب البيتزا، قد يبدأ المستخدم على الشاشة Home. بعد ذلك، يمكن للمستخدم تحديد خيار لعرض خيارات البيتزا المتوفرة، ونقل التطبيق على شاشة تحديد البيتزا، حيث يمكن للمستخدم تحديد البيتزا وتخصيصها. وأخيرًا، قد يقرر المستخدم سحبها، وأخذها إلى شاشة Place Order حيث يمكنهم تقديم تفاصيل الدفع والتسليم.

Diagram that shows a traditional application flow for ordering a pizza.

قد يتبع الروبوت نمطًا تسلسليًا مشابهًا تُستبدَل كل "شاشة" بحوار يجمع المعلومات المطلوبة قبل نقل المستخدم إلى المرحلة التالية.

Diagram that shows a bot application flow for ordering a pizza.

الشيء المهم هو النظر في الغرض من روبوتك - ما الذي يجب أن يساعد المستخدم على تحقيقه؟ ثم صمم تدفق محادثة بناءً على الحوارات التي ستجمع المعلومات المطلوبة وتصل إلى حلٍ فعال.

تنفيذ الحوارات باستخدام Bot Framework Composer

يقوم Bot Framework Composer بتنفيذ مربعات الحوار (التي كانت تسمى سابقا مربعات الحوار التكيفية، والتي لا تزال يشار إليها أحيانا) لبناء محادثة الروبوت. تحتوي مربعات الحوار على تدفق محادثة مرن، مما يسمح بالمقاطعات والإلغاءات ومفاتيح تبديل السياق في أي وقت من المحادثة. يتكون كل مربع حوار من:

  • واحد أو أكثر من الإجراءات التي تحدد تدفق أنشطة الرسالة في الحوار. وتشمل هذه إرسال رسالة، ومطالبة المستخدم بإدخالها، وطرح سؤال، وتفريعي المحادثة.
  • المشغل، الذي يستدعي منطق مربع الحوار لشروط معينة أو استنادا إلى الهدف الذي تم اكتشافه.
  • أداة التعرف، التي تفسر إدخال المستخدم لتحديد الهدف. تعتمد أدوات التعرف على خدمة Language Understanding افتراضيًا، ولكن يمكنك أيضًا استخدام أنواع أخرى من أدوات التعرف؛ مثل خدمة QnA أو مطابقات التعبير العادي البسيطة.

يمكن أن تحتوي الرسالة أو الاستجابة للروبوت الخاص بك على استجابة واحدة أو أكثر للاختيار من بينها، والتي يتم اختيارها عشوائيا لمحادثة أكثر ديناميكية.

بالإضافة إلى هذه العناصر، يحتوي الحوار على ذاكرة تُخزن القيم فيها باعتبارها خصائص. يمكن تعريف الخصائص في نطاقات مختلفة، بما في ذلك نطاق المستخدم (المتغيرات التي تخزن المعلومات طوال مدة جلسة عمل المستخدم مع الروبوت، مثل user.greeted) ونطاق الحوار (المتغيرات التي تستمر طوال مدة بقاء مربع الحوار، مثل dialog.response).

في هذا النمط من المحادثة، يبدأ الروبوت مربع حوار رئيسي ، والذي يحتوي على تدفق من الإجراءات (التي يمكن أن تتضمن الفروع والحلقات). داخل مربع الحوار، يتم تحليل الإدخال من المستخدمين بواسطة أداة التعرف، ويتم إرجاع الاستجابات اعتمادا على حدث الإدخال. تحلل أداة التعرف إدخال الحدث أو اللغة الطبيعية للكشف عن الأهداف، والتي يمكن تعيينها إلى المشغلات التي تغير تدفق المحادثة. غالبا ما يبدأ هذا التغيير في التدفق مربعات حوار تابعة جديدة، والتي تحتوي على إجراءاتها ومشغلاتها ومتعرفيها.

على سبيل المثال، عند إضافة مستخدم جديد إلى المحادثة وتشغيل ConversationUpdate نشاط، يمكن للروبوت الترحيب به بردود ترحيب مختلفة، ثم طرح سؤال عليه.

على سبيل المثال آخر، قد يبدأ روبوت طلب البيتزا بمربع حوار رئيسي يرحب بالمستخدم ببساطة. عندما يُدخل المستخدم رسالة تُشير إلى أنه يريد طلب بيتزا، تكتشف أداة التعرّف هذا المقصد وتستخدم مشغلاً لبدء مربع حوار آخر يحتوي على تدفق الإجراءات المطلوبة لجمع معلومات حول طلب البيتزا.

Diagram that shows an adaptive dialog for ordering a pizza.