إنشاء وكيل RBM يستند إلى Dialogflow (متقدّم)

في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية استخدام Dialogflow لإنشاء واجهة حوارية لدعم وكيل RBM.

ما الذي ستنشئه في هذا الدرس التطبيقي حول الترميز؟

  • وكيل Dialogflow يدعم محادثة وكيل RBM
  • واجهة محادثة لمتجر دراجة خيالية تتيح للمستخدمين معرفة معلومات عن متجر الدراجات وتحديد مواعيد لإصلاح دراجتها أو إصلاحها

ما ستتعرَّف عليه

  • كيفية استخدام المكوّنات الثلاثة الأساسية في Dialogflow' (الكيانات والكيانات والسياقات) لإنشاء واجهة محادثة
  • كيفية ربط واجهة المحادثة بخدماتك وواجهات برمجة التطبيقات باستخدام طريقة تنفيذ Dialogflow' والمحرّر المضمّن (بواسطة Cloud Functions لFirebase)
  • كيفية إنشاء أنواع ردود RBM من Dialogflow لإنشاء تجربة RBM مفيدة للمستخدمين

ما تحتاج إليه

  • حساب على Google

إنشاء وكيلك الأول والاستعلام عنه

المدة: 10:00

إنشاء وكيل Dialogflow الأول

لإنشاء وكيل Dialogflow:

  1. افتح علامة تبويب جديدة وسجِّل الدخول إلى Dialogflow.
  2. انقر على إنشاء وكيل في شريط التنقل الأيمن.

  3. أدخِل "CodelabRBMBikeShop";لاسم وكيلك's &"English"كلغة تلقائية واضبط المنطقة الزمنية التلقائية على منطقتك الزمنية. بعد ذلك، انقر على إنشاء.

وحدة تحكُّم Dialogflow

من المفترض أن تظهر لك الآن وحدة تحكُّم Dialogflow. إذا كنت تعمل على شاشة أصغر وكان شريط التنقّل الأيمن مخفيًا، انقر على زر التنقّل في الزاوية العلوية اليمنى. ينقلك زر الإعدادات إلى إعدادات الوكيل الحالية.

يظهر في منتصف الصفحة قائمة أغراض الوكيل. تبدأ برامج Dialogflow تلقائيًا لغرضين. يتطابق وكيلك مع الهدف الاحتياطي التلقائي عندما لا يفهم ما يقوله المستخدمون. ترحّب نية الترحيب التلقائية المستخدمين في مؤسستك. يمكنك تغيير هذه الأغراض لتخصيص التجربة.

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

جارٍ الاستعلام عن الوكيل

من الأفضل وصف وكلاء Dialogflow بوحدات اللغة الطبيعية (NLU). ويمكن تضمينها في تطبيقك أو منتجك أو خدمتك لتحويل طلبات المستخدم الطبيعية إلى بيانات قابلة للتنفيذ.

حان الوقت لتجربة وكيلك. في المحاكي على يسار الصفحة، انقر على حقل النص جرّب الآن واكتب "Hi" واضغط على Enter.

يحدّد Dialogflow طلب البحث ويطابق رسالة الترحيب التلقائية ويردّ على رسالة ترحيب عامة. وتُعدّ هذه الخطوات مفيدة لأنّ Dialogflow تدرّب تلقائيًا هدف الترحيب التلقائي مع بعض نماذج الترحيب.

إنشاء وكيل RBM

سجِّل الدخول إلى Business Connection Developer Console، ثم انقر على إنشاء وكيل.

في حقل "الاسم"، أدخِل "متجر الدراجات" أو "اسم الحزمة" (مثلاً "وكيل الدراجات" أو "سمير"؛) واختَر منطقة، وانقر على إنشاء وكيل.

ربط وكيل RBM بأداة Dialogflow

بعد إنشاء وكيل RBM، انقر على الوكيل للاطّلاع على صفحة نظرة عامة. انقر على رابط عمليات الدمج في شريط التنقل الأيمن.

وفقًا للإعدادات التلقائية، يستخدم وكيل RBM خدمة Google Cloud Pub/Sub للتعامل مع رسائل المستخدمين. لربط وكيل RBM بوكيل Dialogflow الذي أنشأته سابقًا، انقر على دمج Dialogflow.

في مربّع الحوار، انقر على ربط النموذج الحالي. اتّبع التعليمات لمنح وكيل وكيل RBM إذنًا باستدعاء وكيل Dialogflow، ثم انقر على التالي.

أخيرًا، عليك تقديم رقم تعريف مشروع Dialogflow. في علامة تبويب مختلفة على المتصفّح عن وحدة تحكم مطوّري برامج اتصالات الأعمال، انتقِل إلى Dialogflow وافتح وكيل CodelabRBMBikeShop الذي أنشأته في وقت سابق. انقر على رمز الترس بالقرب من اسم المشروع في شريط التنقل الأيمن.

يؤدي النقر على هذا الخيار إلى نقلك إلى إعدادات النموذج. ضمن مشروع Google، ابحث عن رقم تعريف المشروع وانسخه.

ارجع إلى علامة التبويب التي تحتوي على "وحدة تحكم مطوّري برامج اتصالات الأنشطة التجارية" مفتوحة، والصق رقم تعريف المشروع في مربع الحوار، ثم انقر على بدء عملية الدمج.

تستغرق هذه العملية دقيقتين تقريبًا. بعد الانتهاء من ذلك، من المفترض أن يظهر لك خيار دمج Dialogflow وكذلك توفُّر رابط عرض الوكيل.

يتم الآن التعامل مع جميع الرسائل من موظّف الدعم وإليها من خلال موظّف دعم CodelabRBMBikeShop.

دعوة جهاز الاختبار وإرسال رسالة

قبل الغوص في Dialogflow، لنبدأ إعداد جهازك الاختباري. إذا لم يكن لديك جهاز يمكنه تلقّي رسائل RBM من قبل، اتّبِع هذا الدليل لتجهيز جهازك.

من وحدة تحكم مطوّري برامج اتصالات الأعمال، انقر على الأجهزة في شريط التنقل الأيمن. في النموذج، أدخِل رقم الهاتف الكامل لجهازك بتنسيق E.164 (مثل، +12223334444) وانقر على إضافة.

ستتلقى دعوة تجريبية على جهازك. انقر على إنشاء مختبر.

في المتصفِّح، ابحث عن جهازك في قائمة "الأجهزة" وأرسِل رسالة اختبارية إلى جهازك. إذا تلقّيت رسالة على جهازك من وكيل RBM، عليك مواصلة استخدام هذا الدرس التطبيقي حول الترميز.

إنشاء هدف الترحيب

عادةً باستخدام وكيل RBM مدعوم من Dialogflow، يجب إجراء طلب بيانات من واجهة برمجة التطبيقات يحدّد رقم هاتف المستخدم وقصد Dialogflow الذي يبدأ المحادثة (عادةً ما يكون القصد من الوكيل متاحًا). في هذا الدرس التطبيقي حول الترميز، سنتخطّى هذه الخطوة ونستخدِم بدلاً من ذلك سلسلة المحادثات التي أنشأناها سابقًا في الخطوة السابقة باستخدام الجهاز الاختباري من Business Console Console. وإذا كنت تريد الاطّلاع على المزيد من المعلومات حول ميزة واجهة برمجة التطبيقات هذه، يمكنك الاطّلاع على هذا الدليل.

لنبدأ بإضافة ردود RBM إلى هدف الترحيب التلقائي حتى يتمكن Dialogflow من استخدامها مع وكيل RBM. أولاً، انتقِل إلى علامة تبويب المتصفِّح التي تم فتح Dialogflow عليها. انقر على هدف الترحيب التلقائي، ثم انتقِل إلى قسم الردود وانقر على + في قائمة أنواع الردود، واختَر مراسلة الأنشطة التجارية من خلال خدمات الاتصالات التفاعلية (RCS).

انقر على إضافة ردود، ثم اختَر رد بسيط. في حقل النص الاستجابة البسيطة، أدخِل &&مرحبًا، مرحبًا بك في متجر دراجات هوغارث&#39؛ كيف يمكنني المساعدة؟ (استبدل "هوارث" باسمك)، ثم انقر على حفظ.

بدء محادثة

الآن بعد أن أجريت عملية ضبط intent، ارجِع إلى جهازك الاختباري وأرسِل الرسالة "Hi". تؤدي هذه الرسالة إلى عرض هدف الترحيب التلقائي، وستظهر لك رسالة مشابهة للصورة أدناه.

تعديل هدف الترحيب

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

يحتاج موظّف الدعم الذي ننشئه إلى دعم ميزتَين رئيسيتَين، هما: التحقّق من ساعات عمل النشاط التجاري وجدولة موعد. يمكن أن نستبدل رسالة الترحيب البسيطة بالبطاقة التي تقدم ردودًا مقترحة لتنفيذ هذه التفاعلات.

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

في نموذج البطاقة التفاعلية المستقلة، أدخِل ما يلي:

  • بطاقة العنوان: مرحبًا بك في متجر دراجات "هغارث" رقم 39.
  • وصف البطاقة: كيف يمكنني مساعدتك؟ يمكنك التحديد من الخيارات أدناه:
  • اختيار اتجاه البطاقة: عمودي
  • عنوان URL الخاص بالصورة أو الفيديو: https://storage.googleapis.com/df-rbm-codelab/bike-shop.jpg
  • اختيار ارتفاع الوسائط: متوسط

انقر على إضافة اقتراح وأدخِل ما يلي:

  • نص الاقتراح: ما هي ساعات العمل لديك؟
  • الإبلاغ عن الإحالات الناجحة للاقتراح: رد_ساعات

يمكنك إضافة اقتراح آخر من خلال النقر على إضافة اقتراح وإدخال ما يلي:

  • نص الاقتراح: تحديد موعد
  • الإبلاغ عن الإحالات الناجحة للاقتراح: response_appointment

انقر على حفظ.

جرّب ذلك الآن.

بعد ظهور النموذج "تدريب على الوكيل" و"تعليم": انتقِل إلى جهازك وأرسِل الرسالة من المفترض أن تظهر الآن البطاقة التفاعلية المستقلة.

جرِّب النقر على ما هي ساعات العمل لديك؟. لاحظ أنه يتم تشغيل الهدف الاحتياطي التلقائي. ويرجع ذلك إلى أن وكيل Dialogflow لا يعرف كيفية معالجة بيانات الإبلاغ عن الإحالات الناجحة التي ضبطتها لهذا الاقتراح، "reply_hours".

لنحاول إصلاح هذه المشكلة.

جارٍ إنشاء هدف ساعات العمل

يستخدم Dialogflow نيّات المستخدم لتصنيف نوايا المستخدم. السمات عبارة عن عبارات تدريب، وهي أمثلة على ما يمكن أن يقوله المستخدم لوكيلك. على سبيل المثال، يمكن أن يريد شخص ما معرفة ساعات عمل متجر الدراجات لدينا، & "ما ساعات العمل quot;; أو "ما هو الوقت الذي يمكنني أن أحضر فيه inquotquot؟

كل طلبات البحث فريدة من نوعها ولها نية واحدة فقط، وهي الحصول على معلومات عند فتح متجر الدراجات.

لتغطية طلب البحث هذا، أنشئ "Hour&"Intent:

  1. في شريط التنقل الأيمن، انقر على علامة + بجانب Intent.
  2. بالنسبة إلى اسم النية بالشراء، أدخِل &"الساعات&quot.
  3. ضمن عبارات التدريب، انقر على إضافة تعبير المستخدم وأدخِل ما يلي، واضغط على Enter بعد كل إدخال:

    • When do you open?
    • What are your hours?
    • How late can I come in?
    • reply_hours.

    تُستخدم عبارة التدريب الأخيرة هذه لربط بيانات الإبلاغ عن الإحالات الناجحة التي ضبطتها في القسم السابق من خلال هذا النية.

  4. ضمن الردود، انقر على + ثم اختَر مراسلة الأنشطة التجارية من خلال خدمات الاتصالات التفاعلية (RCS).

  5. انقر على إضافة ردود واختر رد بسيط.

  6. في حقل النص الاستجابة البسيطة، أدخِل &&نحن&#39؛ونفتح كل يوم من أيام الأسبوع من الساعة 9 صباحًا إلى الساعة 5:30 مساءً.&quot؛

  7. انقر على حفظ.

جرّب ذلك الآن.

والآن، يُرجى إعلام موظّف الدعم بساعات العمل. على جهازك، في المحادثة المتعلقة بوكيل RBM، أدخِل "متى تفتح Openquot; وأرسل الرسالة إلى وكيلك.

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

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

جارٍ إضافة توصيل الطلب

أثناء تنفيذ البرنامج، يتصرف الوكيل الذي أنشأناه سلوكًا غير طبيعي إلى حد ما. عندما يطرح المستخدم سؤالاً مثل "هل أنت مفتوح</quot, سيستجيب موظّف الدعم باستخدام && ويفتح أبوابه طوال أيام الأسبوع من الساعة 9 صباحًا وحتى 5:30 مساءً. من الطبيعي أن يكون موظّف الدعم مفيدًا إذا أفادا العميل مباشرةً بما إذا كان المتجر مفتوحًا.

لإجراء ذلك، يحتاج موظّف الدعم إلى التحقّق مما إذا كان المتجر مفتوحًا حاليًا وإنشاء رد مختلف في كلتا الحالتين. في Dialogflow، يجب تنفيذ هذا النوع من المنطق المعقّد في الرد التلقائي على الويب المرتبط بطريقة توفّر المركبة.

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

سننتقل الآن إلى عملية نشر ردّ تلقائي على الويب لتوصيل الطلب، ما يجعل وكيلنا يستجيب بشكل أكثر فائدة.

الإعداد: نشر التطبيق وتفعيله

يحتوي Dialogflow على محرّر Cloud Functions for Firebase المدمج الذي يتيح لك كتابة ونشر رمز JavaScript الذي سيتولى تنفيذ طلباتك.

في شريط التنقل الأيمن في Dialogflow، انقر على توصيل الطلب لفتح صفحة التوصيل. انقر على زر التبديل بجانب المحرِّر المضمّن لتفعيل وظائف السحابة الإلكترونية لمحرّر Firebase.

ستلاحظ أنّ المحرّر يحتوي على ملفَين، هما: "index;index.js"، اللذين يحتويان على الرمز الأساسي لتوصيل الطلبات، و&&;;;;quot;package;json.quot; وتفاصيل أخرى مطلوبة.

سنستورد الآن بعض التعليمات البرمجية التي ستساعدك في توصيل الطلب.

نسخ ولصق نص هذا الملف في "index;js.quot" مع استبدال كل محتواه الحالي:

https://storage.googleapis.com/df-rbm-codelab/index.js

انتقِل الآن إلى أسفل الصفحة وانقر على DEPLOY. وبعد دقيقة تقريبًا، سيتم نشر الرمز في Cloud Functions for Firebase.

بعد نشر الدالة، سيظهر لك تاريخ النشر ووقته في أسفل الصفحة:

اطّلِع على رمز توصيل الطلب. تطلب الدالة hoursHandler currentlyOpen لتحديد ما إذا كان المتجر مفتوحًا حاليًا، وتضيف استجابة RBM مختلفة بناءً على الحالة.

function hoursHandler(agent) {
    let responseText = 'We\'re currently closed, but we open every weekday at 9am!';
    if (currentlyOpen()) {
      responseText = 'We\'re open now!! We close at 5pm today.';
    }

    let payload = {
    "fulfillmentMessages": [
        {
          "platform": "GOOGLE_RBM",
          "rbmText": {
              "text": responseText
          }
        }
      ]
    };

    return response.status(200).json(payload);
}

يخبر السطر intentMap.set('Hours', hoursHandler); مكتبة توصيل الطلبات بأنّه يجب تشغيل دالة hoursHandler عند مطابقة الغرض "الساعات&quot؛. ومع ذلك، يجب أيضًا أن نطلب من Dialogflow تفعيل آلية توفّر عنصر "الساعات والساعات&quot.

في شريط التنقل الأيمن، انقر على نوايا وافتَح &&;&;;Hours" intent. افتح قسم توصيل الطلبات في أسفل الشاشة واختَر تفعيل الرد التلقائي على الويب لطلب هذه النية، حتى يتم تفعيله.

وبعد حفظ الغرض، يمكنك تجربته. في المحاكي على يسار الشاشة، أدخِل &"هل تريد فتح ##quot؟ إذا نقرت على معلومات التشخيص وفحصت استجابة واجهة برمجة التطبيقات، من المفترض أن ترى استجابة توصيل الطلب. تجدر الإشارة إلى أن المنطقة الزمنية التي يستخدمها خادم Cloud Functions for Firebase ستكون حسب التوقيت العالمي المنسق (UTC)، لذا قد لا تكون الاستجابة صحيحة في التوقيت المحلي الحالي.

إذا كان هناك خطأ في توصيل الطلب، يستخدم Dialogflow أي ردّ محدّد في قسم الردود من صفحة النية بالشراء، ما يسمح لموظّف الدعم باسترداد بيانات الاتصال بشكل أنيق.

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

استخراج البيانات باستخدام الكيانات

المدة: 12:00

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

إضافة معلمات إلى أغراضك

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

  1. انقر على + بجانب Intent في شريط التنقّل الأيمن لإنشاء هدف جديد.
  2. بالنسبة إلى اسم النية بالشراء، أدخِل "تحديد الموعد" في أعلى الصفحة.
  3. أضِف ما يلي كعبارات تدريب:
    • reply_appointment
    • I'd like to schedule an appointment for next Thursday
    • I'd like to get my bike fixed، I have a mountain bike that needs servicing
    • My bike is broken
    • Can I schedule service for 4pm tomorrow?
    • Can you fix my road bike?
    • Can I set up an appointment for noon on Friday?

يعمل Dialogflow تلقائيًا على اكتشاف المعلَمات المعروفة في عبارات التدريب وإنشائها لك.

أسفل عبارات التدريب، يملأ Dialogflow جدول المعلَّمات تلقائيًا بالمعلومات التي يجمعها:

  • المَعلمة اختيارية (غير مطلوبة)
  • باسم date وtime
  • يتوافق مع نوع كيان النظام@sys.date و@sys.time**
  • ذو قيمة $date و$time
  • ليست قائمة

استخدام بيانات المعلَمات

ويمكنك استخدام قيمة معلّمة في ردودك. في هذه الحالة، يمكنك استخدام $date و$time في الردود، وسيتم استبدالهما بالتاريخ والوقت المحدّدَين في طلب البحث لوكيلك.

في الردود، أضِف علامة التبويب "مراسلة الأنشطة التجارية من خلال خدمات الاتصالات التفاعلية (RCS)"، ثم أضِف ما يلي إلى ردّ بسيط، وانقر على حفظ:

Great! I've set up your appointment for $date at $time.  See you then!

جرّب ذلك الآن.

الآن، يمكنك الاستعلام عن موظّف الدعم من خلال &"هل يمكنني الحصول على موعد الساعة 2 بعد الظهر غدًا?" في المحاكي في اللوحة اليسرى؟

في أسفل مخرجات المحاكي، تبيّن لنا أنّ Dialogflow يستخرج بشكل صحيح المعلّمات ""و غداً"و "2pm"; من طلب البحث ويحلّلها بشكل صحيح كتاريخ ووقت. والآن، جرِّب الأمر نفسه من جهازك الاختباري وتعرّف على كيفية احتواء الاستجابة على التاريخ والوقت اللذين تم تحليلهما بشكل صحيح.

جعل المعلمات مطلوبة

في حالة متجر الدراجات، نحتاج إلى معرفة قيم التاريخ والوقت قبل أن نتمكن من تحديد موعد. بشكل تلقائي، تكون جميع معلّمات Dialogflow اختيارية. لجعلها مطلوبة، علينا وضع علامة في المربّع بجانب كل معلّمة نريد إجراءها. ضَع علامة في المربّع بجانب كل معلّمة في المعلّمة ";

الآن وبعد أن كانت كل معلّمة مطلوبة، علينا إنشاء رسالة مطالبة لكل معلّمة. تطلب رسائل المطالبة من المستخدم تقديم قيمة لأي معلّمة لم يتم تقديمها عندما أشار المستخدم في البداية إلى نيته (في هذه الحالة، تحديد موعد). انقر على تحديد رسائل المطالبة لإنشاء رسالة مطالبة للمعلمة وأدخِل رسائل المطالبة التالية لكل معلّمة:

المعلمة سؤال
التاريخ ما اليوم الذي تريد الحضور فيه؟
الوقت ما هو الوقت المناسب لك؟

بعد إدخال رسائل المطالبة، انقر على حفظ.

جرّب ذلك الآن.

على جهازك، انقر على اقتراح تحديد موعد أو اكتب "أريد إصلاح دراجتي.&quot ستتلقى الاستجابة "ما اليوم الذي تريد الذهاب إليه inquotquot. حدد تاريخًا ("الغد") وستتلقى ردًا يسألك عن موعد في التاريخ. عليك الرد على ذلك وسيعرف أنّك قد تم تحديد موعد.

تعمل طلبات البحث التي تحتوي على بعض المعلومات في الطلب المبدئي (أي &quot،أريد إعداد موعد لـ غدًا") على ملء المعلّمة الصحيحة (التاريخ) وتخطّي رسالة المطالبة بالتاريخ ("ما اليوم الذي تريد الحصول عليه في ;quot@;)، ثم الانتقال إلى وقت رسالة المطالبة ("الوقت المناسب لك").

لقد أضفنا للتو معلّمات ومعلّمات Dialogflow لإنشاء محادثة فريدة بدون أي ترميز وبدون إعداد. سنتناول بعد ذلك كيفية استخدام طريقة توفّر المركبة للمساعدة في توجيه إجابات المستخدم عن رسائل المطالبة، مثل "التاريخ".

الإعداد: تفعيل توصيل الطلبات

في شريط التنقل الأيمن، انقر على نوايا وافتَح "تحديد الموعد&quot. افتح إكمال الطلب، واختَر تفعيل الرد التلقائي على الويب لهذا intent وتفعيل الرد التلقائي على الويب للردّ على ملء الخانة ليتم تفعيلهما، ثم انقر على حفظ.

عند تفعيل الاثنين معًا، عند تنفيذ هذا الغرض، يستخدم Dialogflow تنفيذ الاستجابة لإنشاء الردود للمَعلمات المطلوبة، إذا لزم الأمر، بالإضافة إلى استجابة RBM للغرض.

تنفيذ توصيل الطلبات

في شريط التنقل الأيمن في Dialogflow، انقر على توصيل الطلب لفتح صفحة التوصيل. انتقِل للأسفل إلى السطر

intentMap.set('Hours', hoursHandler);

وأضِف ما يلي إلى السطر التالي:

intentMap.set('Make Appointment', makeAppointment);

يؤدي ذلك إلى إعلام مكتبة التنفيذ اللازمة بأنّه يجب تشغيل دالة makeAppointment عند مطابقة القصد من عملية الحجز.

بعد ذلك، انسخ الرمز أدناه والصقه أسفل الدالة currentlyOpen. تعمل الوظيفتان getSuggestedTimes وgetSuggestedDates على إنشاء قوائم شرائح مفيدة لتسهيل ردود المستخدمين.

function getSuggestedTimes() {
  return [
        {
          "reply": {
            "text": "9 am",
            "postbackData": "9:00am"
            }
        },
        {
          "reply": {
            "text": "10 am",
            "postbackData": "10:00am"
          }
        },
        {
          "reply": {
            "text": "1 pm",
            "postbackData": "1:00pm"
          }
        },
        {
          "reply": {
            "text": "2 pm",
            "postbackData": "2:00pm"
          }
        }
      ];
}

function getSuggestedDates() {
  return [
        {
          "reply": {
            "text": "Tomorrow",
            "postbackData": "Tomorrow"
          }
        },
        {
          "reply": {
            "text": "A week from now",
            "postbackData": "A week from now"
          }
        },
        {
          "reply": {
            "text": "Two weeks from now",
            "postbackData": "Two weeks from now"
          }
        }
      ];
}

بعد ذلك، أسفل hoursHandler، انسخ الرمز أدناه والصقه، ثم انقر على نشر.

function makeAppointment(agent) {
    // extract required parameters
    const appointmentDate = agent.parameters.date;
    const appointmentTime = agent.parameters.time;

    const gotAppointmentDate = appointmentDate.length > 0;
    const gotAppointmentTime = appointmentTime.length > 0;

    let responseText = '';
    let suggestions = [];

    if(gotAppointmentDate && gotAppointmentTime) {
      // We have all required parameters, return success message
      responseText = 'Great! I\'ve set up your appointment for ' +
          appointmentDate + ' at ' + appointmentTime + '.  See you then!';
    }
    else if(gotAppointmentDate) {
      responseText = 'What time works for you?';
      suggestions = getSuggestedTimes();
    }
    else if(gotAppointmentTime) {
      responseText = 'What day do you want to come in?';
      suggestions = getSuggestedDates();
    }
    else {
      responseText = 'What day do you want to come in?';
      suggestions = getSuggestedDates();
    }

    let payload = {
      "fulfillmentMessages": [
      {
        "platform": "GOOGLE_RBM",
        "rbmText": {
          "text": responseText,
          "rbmSuggestion": suggestions
        }
      }
    ]
    };

    return response.status(200).json(payload);
  }

خصِّص بضع دقائق لفحص الرمز. لاحظ أنه يتم التحقّق من المعلّمات المطلوبة بحثًا عن القيم، وإذا لم يتم ضبطها، ستظهر للمستخدم رسالة مناسبة ومجموعة من الاقتراحات.

جرّب ذلك الآن.

على جهازك، انقر على اقتراح تحديد موعد أو اكتب "أريد إصلاح دراجتي.&quot ستتلقّى الردّ، وفي أي يوم تريد أن تتلقّى ردًّا؟ بالإضافة إلى بعض الاقتراحات المفيدة: &"غدًا"&&;;;;أسبوعًا من الآن"&&;;;أسبوعَين من الآن&quot: حدِّد تاريخًا ("الغد غدًا&;;) وسوف نردّ عليك بشأن بعض الوقت. ستجيب ردًا بذلك، وستلاحظ أنّه قد تم تحديد موعدك.

إدارة الحالة من خلال السياقات

المدة: 7:00

إضافة سياقات إلى حالة المحادثة

بعد إعداد المستخدم موعدًا بنجاح، قد نحتاج إلى جمع بعض المعلومات الإضافية منه. لنفترض أنّ متجرنا للدرّاجات يقدّم نوعَين من المواعيد: الإصلاح أو ضبط الدراجات. نريد معرفة أي من هذه المتطلبات يحتاجها المستخدم.

للبدء، لنعدّل الردّ الخاص بالخاصية "تحديد الموعد&عرض الأسعار; ;Intent; لسؤال المستخدم عن نوع الموعد الذي يحتاجه. استبدِل استجابة النجاح في دالة توصيل الطلب من makeAppointment بالنص التالي، ثم انقر على نشر.

responseText = 'Great! I\'ve set up your appointment for ' +
    appointmentDate + ' at ' + appointmentTime + '.  Do you need a repair for just a tune-up?';

للحصول على إجابة عن هذا السؤال، علينا إنشاء هدف آخر. ومع ذلك، من المهم ألا تتم مطابقة هذا النية الجديدة إلا بعد الإجابة عن هذا السؤال. لفرض ذلك، يمكننا تعريفه على أنه هدف متابعة.

نُهج المتابعة هي أغراض لا يمكن مطابقتها إلا بعد رغبتهم في الاطّلاع على "quot;parent"quot; , (في هذه الحالة، "تحديد موعد&عرض الأسعار/النية بالشراء]. انقر على Intent في شريط التنقّل الأيمن (إذا كانت القائمة مخفية، انقر على زر ⁠ القائمة في أعلى يمين الصفحة). بعد ذلك، مرِّر مؤشر الماوس فوق رمز"التحديد والطلب"و"ال تحديد والنقطة"وانقر على إضافة نية المتابعة، التي تظهر على يسار اسم الهدف:

بعد ذلك، انقر على مخصص من القائمة المنسدلة.

أطلق Dialogflow تلقائيًا على اسم نية المتابعة "وتحديد موعد - مخصَّص&&" ويشير السهم إلى العلاقة بين الأهداف.

ولا يمكن مطابقة نوايا المتابعة إلا بعد مطابقة intent الرئيسية. بما أنّ هذا النية لن تتم مطابقتها إلا بعد &"جعل الموعد ";Intent; يمكن افتراض أن المستخدم قد طُرح عليه للتو السؤال &;;هل تحتاج إلى إصلاح أم توليف عفوي;;

للحصول على الإجابة عن هذا السؤال، سنحتاج أولاً إلى تحديد بعض الكيانات.

إنشاء الكيان الأول

يتيح لك Dialogflow تحديد كيانات مطوّر البرامج التي تعمل على نحو مشابه لعناصر نظام Dialogflow's. لنبدأ بإنشاء نوع كيان. وبما أننا نسعى إلى أن يتمكّن المستخدمون من اختيار نوع الموعد الذي يريدونه مع متجرنا، يُرجى استدعاء نوع الكيان AppointmentType. سنضيف كيانَين في نوع الكيان AppointmentType لنوعَين مختلفَين من المواعيد: service وfix.

لإنشاء نوع كيان:

  1. انقر على + بجانب الكيانات في شريط التنقّل الأيمن.
  2. بالنسبة إلى اسم نوع الكيان، أدخِل "AppointmentType".
  3. انقر على حقل النص وأضِف الإدخالات التالية:
    • الخدمة
    • إصلاح المشكلة
  4. عند إدخال إدخال، يؤدي الضغط على مفتاح Tab إلى نقل المؤشر إلى حقل المرادفات. يمكنك إضافة المرادفات التالية لكل إدخال. احرص على إضافة كل كلمة على حدة بدلاً من نسخ السلسلة بأكملها ولصقها:
تذكرة الدخول مرادف
الخدمة
  • الخدمة
  • إصلاح
  • أعمال صيانة
  • ضبط
  • توليف
إصلاح المشكلة
  • إصلاح المشكلة
  • إصلاح
  • إصلاح
  • إطار مسطح
  • ثابتة
  1. انقر على حفظ.

يجب أن يتضمّن كل نوع كيان ما يلي:

  • اسم لتعريف الفئة ("AppointmentType")
  • إدخال واحد أو أكثر ("service", "fix")
  • واحد أو أكثر من المرادفات ("maintenance", "tune up" وغير ذلك)

تتعامل لعبة Dialogflow مع بعض الأمور البسيطة، مثل الجمع والكتابة بالأحرف الكبيرة، ولكن احرص على إضافة جميع المرادفات الممكنة. وكلما أضفت المزيد من العناصر، كان موظّف الدعم قادرًا على تحديد الكيانات بشكل أفضل.

جارٍ إضافة الكيان الجديد

الآن بعد أن حدّدنا نوع الكيان الخاص بنا لتحديد المواعيد، يمكننا استخدامه في عبارات التدريب الخاصة بـ "تحديد الموعد - مخصّص"

  1. انقر على نوايا في شريط التنقل الأيمن، ثم انقر على السهم بجانب &&;;; Appointment"Intent: للكشف عن نوايا المتابعة. انقر على "تحديد الموعد - مخصّص&quot:.
  2. أضِف ما يلي كعبارات للتدريب:

    • هل يمكنك صيانة دراجتي؟
    • أحتاج إلى إصلاح.

  3. يجب أن يظهر لك نوع كيان الموعد المُضاف إليه تعليقات توضيحية تلقائيًا في عبارات التدريب التي أدخلتها. ويؤدي ذلك إلى إضافة المعلّمة AppointmentType إلى الجدول، أسفل قسم عبارات التدريب. انقر على مربّع الاختيار لوضع علامة على هذه المعلّمة باعتبارها مطلوبة.

  4. انقر على تحديد رسائل المطالبة وأدخِل &quotيمكننا صيانة دراجتك أو إصلاحها. أَيُّ خِيَارْ هُوَ الْمَطْلُوبْ؟

  5. في الردود، غيِّر الرد إلى "حسنًا، سنجدول $AppointmentType&&quot، ثم انقر على حفظ.

جرّب ذلك الآن.

على جهازك، انقر على اقتراح تحديد موعد أو اكتب "أريد إصلاح دراجتي.&quot ستتلقّى الردّ، وفي أي يوم تريد أن تتلقّى ردًّا؟ بالإضافة إلى بعض الاقتراحات المفيدة: &"غدًا"&&;;;;أسبوعًا من الآن"&&;;;أسبوعَين من الآن&quot: حدِّد تاريخًا ("الغد&quot؛) ورُدّ إلينا ردًا على سؤالك في وقت معيّن في التاريخ.

اختر وقتًا، وسيظهر لك الرد الجديد الذي أنشأته تسألك عما إذا كان هذا الأمر متعلقًا بالخدمة أم تحسينًا.

بعد ذلك، أدخِل "أحتاج إلى إصلاح&quot. من المفترض أن يظهر لك الردّ "حسنًا، سنحدّد موعدًا لحلّ &"تشير إلى أنّ Dialogflow استخرج نوع AppointmentType الصحيح على أنه كيان.

في الوقت الحالي، الردّ على هذا intent ("حسنًا، سنحدد موعدًا لحلّ المشكلة&"وغير مفيد إلى حدٍّ كبير). سيكون من الرائع أن يتم تأكيد التاريخ والوقت اللذين تم تحديد الموعد فيهما. لإجراء ذلك، نحتاج إلى التاريخ والوقت، ولكن لا تتوفر معلّمات التاريخ والوقت إلا في عنصرَي "ال تحديد" و"التحديد" و"التحديد" و"وليس" في "الموعد" - "الضبط المخصّص" - "النية بالشراء".

النوايا والسياقات

للرد باستخدام معلّمة تم جمعها من المعلّمة "Make Appointment";Intent، عليك معرفة آلية عمل نيّات المتابعة. تستخدم أغراض المتابعة سياقات لتتبُّع ما إذا تم بدء هدف رئيسي. وإذا أجريت فحصًا لـ "جعل النقطة&نوايا; يظهر لك "MakeAppointment-followup" مُدرج كسياق للمخرجة، ويظهر قبله الرقم 2:

بعد مطابقة "Make Appointment&quot, intent، يرفق Dialogflow السياق "MakeAppointment-followup" إلى المحادثة لمدة دورتين. لذلك، عندما يستجيب المستخدم للسؤال ("هل تحتاج إلى إصلاح أو مجرد توليف متابعة؛) السياق "MakeAppointment-followup" نشط. سيتم تفضيل أي عناصر intent لها سياق الإدخال نفسه بشكل كبير عندما تتطابق Dialogflow مع الأهداف.

انقر على Intent في شريط التنقّل الأيمن، ثم انقر على "MakeAppointment - custom"Intent.

يتضح لك أنّ غرض intent سياق السياق نفسه ("MakeAppointment- followup") مثل سياق الإخراج لـ "Make Appointment". لهذا السبب، لا تتطابق عامل التشغيل "&&;;MakeAppointment - custom" إلا بعد مطابقة &&;;جعل الموعد"مقتنياتي.

السياقات والمعلّمات

تُخزِّن السياقات قيم معلّمات، ما يعني أنّه بإمكانك الوصول إلى قيم المعلّمات المحدّدة في "Make Appointment" intent في الأغراض الأخرى مثل "MakeAppointment - custom".

أضِف الرد التالي إلى "MakeAppointment - custom"Intent وانقر على حفظ: "حسنًا، سنجدول $AppointmentType, #MakeAppointment- continueup.date، في #MakeAppointment-followup.time. سنراك بعد ذلك.

يمكنك الآن الاستعلام من موظّف الدعم مرة أخرى والحصول على الردّ المناسب. أدخِل أولاً "هل يمكن تحديد موعد لصيانة دراجتي في الساعة 11 صباحًا غدًا・quot؛ ثم الردّ على السؤال بـ "&مطلوب إصلاح"؛

في الرد الذي يؤكّد الموعد، من المفترض أن يتم استرداد قيم التاريخ والوقت من المعلّمة.

تحسين تنسيق الاستجابة

المدة: 5:00

استخدِم طريقة توفّر المركبة لتنسيق التاريخ والوقت.

كما لاحظت على الأرجح، التاريخ والوقت الظاهران في رسالة النجاح ليس سهلاً جدًا. لحلّ هذه المشكلة، نحتاج إلى استخدام طريقة التنفيذ مرة أخرى حتى نتمكّن من استخدام JavaScript لتنسيق معلّمات التاريخ والوقت بطريقة يمكن للمستخدم قراءتها بسهولة.

انتقِل إلى "تحديد الموعد - مخصّص&quot: intent بالنقر على Intent في شريط التنقّل الأيمن، ثم النقر على "MakeAppointment - custom". انتقِل إلى أسفل الصفحة وفعِّل الخيار تفعيل الرد التلقائي على الويب لهذا الغرض، ثم انقر على حفظ.

انتقِل إلى توصيل الطلب من خلال النقر على رابط توصيل الطلب في شريط التنقّل على يمين الصفحة. انسخ الرمز أدناه والصقه أسفل الدالة makeAppointment.

function makeAppointmentFollowUp(agent) {
    let context = agent.getContext('makeappointment-followup');

    // extract required parameters
    const appointmentDate = new Date(context.parameters.date);
    const appointmentTime = new Date(context.parameters.time);
    const appointmentType = agent.parameters.AppointmentType;

    // format date and time to be human-readable
    const dateAsString = appointmentDate.toLocaleDateString('en-US',
        { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
    const timeAsString = appointmentTime.toLocaleString('en-US',
        { hour: 'numeric', minute: 'numeric', hour12: true });

    // compose response for user
    let responseText = 'Okay, we'll schedule a ' + appointmentType + ', ' + dateAsString +
        ', at ' + timeAsString + '.  We'll see you then.';

    let payload = {
      "fulfillmentMessages": [
      {
        "platform": "GOOGLE_RBM",
        "rbmText": {
          "text": responseText
        }
      }
    ]
    };

    return response.status(200).json(payload);
  }

أسفل هذه الدالة، ابحث عن السطر intentMap.set('Make appointment', makeAppointment); وأضِف intentMap.set('Make appointment - custom', makeAppointmentFollowUp); حتى يتم استدعاء الغرض من المتابعة، ويتم استدعاء الدالة التي لصقتها سابقًا.

اطّلِع على رمز makeAppointmentFollowUp وتعرَّف على كيفية استخراج المعلّمات من كل من السياق الوارد والهدف من ذلك. وقبل إنشاء responseText، يتم الآن تنسيق التاريخ والوقت ليفهم المستخدمان الرمز.

جرّب ذلك الآن.

على جهازك، انقر على اقتراح تحديد موعد أو اكتب "أريد إصلاح دراجتي.&quot ستتلقّى الردّ، وفي أي يوم تريد أن تتلقّى ردًّا؟ بالإضافة إلى بعض الاقتراحات المفيدة: &"غدًا"&&;;;;أسبوعًا من الآن"&&;;;أسبوعَين من الآن&quot: حدِّد تاريخًا ("الغد&quot؛) ورُدّ إلينا ردًا على سؤالك في وقت معيّن في التاريخ.

اختر وقتًا، وسيظهر لك الرد الجديد الذي أنشأته تسألك عما إذا كان هذا الأمر متعلقًا بالخدمة أم تحسينًا.

بعد ذلك، أدخِل "أحتاج إلى إصلاح&quot. من المفترض أن يظهر لك الردّ الذي يؤكّد الموعد مع نوع الموعد والتاريخ والوقت بتنسيق يمكن قراءته.

لقد أنهيت عملك!

المدة: 1:00

رائع!

لقد أكملت الآن جميع مراحل إنشاء وكيل RBM مدعوم من Dialogflow.

ندعوك إلى تطوير هذه المنصّة الجديدة والشيّقة.