
منذ بداية الألفينيات من القرن الماضي ، ظهرت أخبار حول إدخال برامج الدردشة في العمل بتردد يحسد عليه. سأخبرك في هذه المقالة من أين تبدأ وإعطاء نظرة عامة على الحلول الحالية ، بالإضافة إلى مشاركة تجربتي في إنشاء روبوت لـ Selectel.
نطاق التطبيق
غالبًا ما يصاحب تطوير الأعمال ليس فقط توسيع نطاق الأعمال الأساسية ، ولكن أيضًا عن طريق تصحيح العمليات الداعمة. تعد Chatbots جزءًا فقط من النشاط التجاري كجزء من التشغيل التلقائي الروتيني. التواصل وتنفيذ المهام البسيطة من نفس النوع تكمن وراء عمل روبوت الدردشة. مع ذلك ، لا يمكنك القيام بالمهام المتكررة فقط ، ولكن أيضًا المهام التي لا يستطيع الشخص القيام بها ، على سبيل المثال ، مراقبة النشاط على الشبكات الاجتماعية.
أرغب في تقديم مجموعة متنوعة من مجالات تطبيق برامج الروبوت باستخدام مثال عملي الخاص في Selectel. المفسد المصغر: بدأت عملي ككاتب تقني ، والآن أنا مهندس في قسم الحلول السحابية. بدأ الطريق إلى تنفيذ المساعدين الإفتراضيين مع روبوت لقسم التسويق ، الذي يتتبع تعليقات وإشارات الشركة على الشبكات الاجتماعية. هذا التطوير بسيط للغاية ، لكنه يكمل بفعالية الحلول الحالية في السوق ، على سبيل المثال ،
خدمة IFTTT .
التطورات التالية في ممارستي هي chatbot داخلي لقسم الموارد البشرية وروبوت للتواصل مع العملاء ، تم تقديمه كموقف تجريبي خلال مؤتمرات SelectelTechDay في
سان بطرسبرغ وموسكو . يتم إنشاء كلا الروبوتات باستخدام خدمات وتقنيات مختلفة. وقبل الغوص في التفاصيل التقنية ، فكر في مخطط المستوى الأعلى لبرامج الروبوت.
المبادئ الأساسية لعلم النبات

يعتمد نشاط Chatbot على 3 إجراءات رئيسية:
- يتم تلقي المعلومات أو عرضها من خلال قنوات اتصال معينة ، على سبيل المثال ، في مربعات حوار Slack أو Vk.com.
- الاعتراف بالنوايا هو تحليل شامل للمعلومات الواردة لتشكيل إجابة
- معالجة الإجراء - أي عمل يتم تنفيذه على جانب الخادم ، ضروري لإعداد الإجابة الصحيحة. على سبيل المثال ، إذا تم طلب تنبؤ بالطقس ، فسيتم تقديم طلب إلى واجهة برمجة تطبيقات معينة حول الطقس في المدينة N ، وسيتم إرسال نتائج هذا الأمر إلى المستخدم
يتم دمج الإجراءات الرئيسية لـ chatbots في إطار مهمة الحفاظ على السياق من أجل إنشاء شكل من أشكال التواصل الإنساني ودعم الحوار. يجب على chatbot "تذكر" موضوع المحادثة وتكييف إجاباته وفقًا لذلك.
تبرز مشكلة توصيل chatbot بالمنصات الاجتماعية بشكل منفصل. يمكن تنفيذ الروابط بالرسائل الفورية والشبكات الاجتماعية بشكل مستقل أو دعمها في إطار المنتجات الحالية لإنشاء برامج الدردشة.
في الوقت الحالي ، هناك العديد من الحلول التي تقدم خدمة جاهزة لأتمتة عمليات الدعم الفني أو المبيعات. سأولي المزيد من الاهتمام للأدوات التي تتيح لك إنشاء خدمة تلبي المتطلبات الداخلية لأمان الشركة دون تعقيد عملية التطوير.
البناء النباتي
يمكن تطبيق المبادئ الثلاثة المذكورة أعلاه لبرامج الدردشة (القناة ، التحليل ، الإجراء) بطرق مختلفة. الخيار الأسهل هو مقارنة النص الوارد وإرسال الإجابات المقابلة للمستخدم.

هدفنا أعلى قليلاً - للحصول على نظام يمكنك من خلاله إضافة نصوص جديدة بسرعة وفهم المستخدم في معظم الحالات.
للقيام بذلك ، نحتاج إلى فهم ما يتحدث عنه المستخدم ، والتحكم في تقدم الحوار ، وفي بعض الحالات ، تنفيذ إجراءات معينة (على سبيل المثال ، غرف اجتماعات الكتاب). يمكن تحقيق ذلك باستخدام الأدوات التالية:
- DialogFlow (Google)
- Wit.ai (Facebook)
- خدمة Azure Bot (Microsoft)
- راسا كور (المصدر المفتوح)
عند اختيار المنتج ، تؤخذ العوامل التالية في الاعتبار:
- ما مدى أهمية وضع الكود القابل للتنفيذ الخاص بالبوت ضمن الأنظمة الحالية
على سبيل المثال ، في حالة Wit.ai و Dialogflow ، نحن لا نتحكم بشكل كامل في العملية برمتها - نحن نعطي النص لهذه التطبيقات ونحصل على إجابة جاهزة. باستخدام Rasa Core أو Azure BotBuilder SDK ، يمكننا تخزين جميع المراسلات داخل حدود الأنظمة الداخلية - كم عدد قنوات الاتصال التي تحتاجها للاتصال
يوفر Dialogflow القدرة على استخدام عدد محدود من الموصلات التي تتصل بالمراسلات الفورية والشبكات الاجتماعية من خلال تحديد مفاتيح الوصول. يمكنك استخدام أي عدد من القنوات لـ Wit.ai و Rasa Core ، ولكن يجب تنفيذ منطق الاتصال بها بشكل مستقل (غالبًا ما تكون هذه مهمة تافهة للغاية). تتمتع خدمة Azure Bot Service بالقدرة على استخدام الموصلات لقنوات معينة ، ولكنها لا تقتصر عليها ، ويمكن أيضًا توصيلها بمصادر أخرى بشكل مستقل - كم هو سهل لإجراء تغييرات على قاعدة المعرفة بوت
عند إنشاء روبوت في شكل رمز البرنامج دون استخدام واجهة مرئية للتفاعل معه ، فإننا نقيّد دائرة الأشخاص الذين يمكنهم إجراء تغييرات على مربعات حوار وردات الروبوت. يجب أن تكون وظيفة إضافة وتحرير العبارات متاحة للجميع
بالنسبة إلى مساعدنا الظاهري الداخلي لبرنامج الدردشة bot Tirex ، تم اختيار منصة من Google Dialogflow ، والتي توفر القدرة على تعديل النوايا بصريًا ، ويتم تنفيذ الإجراءات داخل
سحابة خاصة في Selectel . كانت العوامل المحددة هي سرعة بدء العمل مع الروبوت ، والأمن عند إرسال الرسائل ووجود قناة سلاك في قائمة تلك المدعومة.

لطالما كانت فكرة إنشاء روبوت دردشة في جو الشركة ، لا سيما بالنظر إلى المشكلات التي يمكن حلها بها:
- زيادة في عدد موظفي الشركة ، ومعها تدفق متزايد من الأسئلة المماثلة مثل "كيفية استخدام مكتبة الشركة؟" و "أين تناول الغداء؟"
- الحجز المنتظم لغرف الاجتماعات وإصدار التصاريح
- ابحث عن المعلومات والمستندات في قاعدة معارف الشركات

يستغرق إنشاء روبوت وربطه في Dialogflow عدة دقائق. في البداية ، سننظر في مبادئ برنامج الدردشة في النظام ، ثم نضيف تطبيق الإجراءات المعقدة.
إنشاء روبوت في Dialogflow
خلق العمارة
كذلك في النص سوف نعمل مع مفاهيم مثل:
- النية هي مهمة رسمية يريد المستخدم تنفيذها.
- المعلمات - مجموعة من البيانات اللازمة لإكمال المهمة
- الإجابة - وظيفة أو برنامج ينفذ استجابة لنية معترف بها
- عبارة تدريب - مثال على رسالة من المستخدم الذي يتعلم chatbot عليه
Dialogflow يعالج اللغة الطبيعية ويستخرج جميع البيانات اللازمة لتنفيذ الأوامر المعقدة. لهذا ، يتم إنشاء
وكلاء تحتوي على عدة
نوايا . كل
نوايا تسمح لك بإعداد chatbot لفهم الفروق الدقيقة والفروق الدقيقة عند صياغة الطلبات.
النية تشمل
عبارات التدريب ،
المعلمات ، والإجابات . داخل عبارة التدريب ، نسلط الضوء على المعلمات (على سبيل المثال ، الوقت أو المكان) اللازمة لتشكيل الإجابة الصحيحة.
يشار إلى الإجابة إما في
نية ، أو ترسل Dialogflow طلبًا إلى خادمنا ، والذي يقوم بتنفيذ العمل الضروري ويعيد
الرد مرة أخرى باستخدام مثال روبوت الدردشة لدينا:
- بالنسبة للأسئلة البسيطة (على سبيل المثال ، "هل لدينا برنامج تأمين في الخارج؟" ، تكمن الإجابة في النية
- لمزيد من المهام المعقدة مثل "هل هناك غرفة مكالمات مجانية الآن؟" يتم تشكيل الاستجابة باستخدام طلب إضافي للخادم ، والذي يحدد وقت الفراغ لجميع المشاركين والغرف

العمل مع النوايا
النظر في العمل مع Dialoglow كمثال للحجز التفاوض. نقوم بإنشاء وكيل لإدارة الحجز وتحديد النوايا التالية:
- عرض الحجوزات الحالية
- حجز غرفة اجتماعات
يتم الاحتجاج بكل نوايا من خلال عبارات التدريب. وكلما تمت إضافتها ، زاد احتمال تنفيذ الإجراء المطلوب. في المثال الخاص بنا ، ستعزى عبارة "Book a meeting room" إلى العبارات التالية:
- كتاب لهذا اليوم في 23.15 لمدة 30 دقيقة على لي
- مرحبا يرجى حجز غرفة اجتماعات في 08/08/2018 من الساعة 15:00 إلى الساعة 16:00
- كتاب
- أحتاج إلى قاعة اجتماعات

مبدأ جمع البيانات في نية ما يلي:
- بناءً على المدخلات المستلمة ، فإن Dialogflow تتفهم النية المقصودة. في مثالنا - الحجز التفاوض
- إذا لم يتم تحديد المعلمات المطلوبة في الرسالة الأولى (على سبيل المثال ، وقت الاجتماع) ، فسيقوم برنامج الدردشة بطرح أسئلة توضيحية
- بعد تلقي جميع البيانات ، سيرسل Dialogflow طلبًا إلى خادمنا في VPC لحجز الغرفة المطلوبة
دعونا نلقي نظرة على هذه العملية في العمل:

تتم معالجة الإجراء عن طريق إرسال طلب به جميع البيانات إلى العنوان الذي تمت إضافته مسبقًا لخادم الإجراء (URL Webhook):

يوجد خادم على
website.ru/webhook يعالج الأوامر المعقدة (في مثالنا ، يُرجع السلسلة "Hello from the server!").
Github Gist لبداية سريعة:
إنشاء روبوت باستخدام RASA
لاستخدام chatbot بدون خدمات تابعة لجهة خارجية للتعرف على النص ، يمكنك استخدام أدوات مثل
Rasa ، والتي تتيح لك التحكم الكامل في عملية الروبوت بالكامل. Rasa عبارة عن مجموعة من مكونات البرامج مفتوحة المصدر التي تحتوي على التعرف على الكلام وإدارة الحوار. يمكنك الآن الاطلاع على
Boilerplate ، التي أعددتها للتعرف على المنصة ، وسنقوم بنشر تعليمات أكثر تفصيلًا إذا كانت هناك طلبات من مجتمع Habr.
Chatbots والأعمال
إذا كان استخدام خدمات الأتمتة لخدمة العملاء ليس بالأمر السهل. توفر الأدوات الحديثة العديد من الحلول عند الاختيار بين المرونة وسرعة العمل والأمان. تتوفر الآن أنظمة التعرف على النوايا بلغة طبيعية ليس فقط في شكل ملكية ، ولكن أيضًا موزعة مجانًا ، مما يفتح فرصًا كبيرة لتجاربهم الخاصة. لقد أخذنا في الاعتبار أحد الخيارات التي تتيح لك تنفيذ برامج الدردشة على نحو سريع لأتمتة نفس المهام في عملك دون نفقات رأسمالية وبحد أدنى من تكاليف العمالة. إذا كنت تستخدم بالفعل روبوتات الدردشة في عملك ، فقم بمشاركة التعليقات في التعليقات حول انطباعاتك وبالطبع انطباعات عملائك.