إنشاء "مهام" في "مساعد Google" باستخدام "أداة إنشاء المهام" (المستوى 2)

1. نظرة عامة

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

يتناول هذا الدرس التطبيقي حول الترميز مفاهيم متوسّطة المستوى لتطوير التطبيقات باستخدام "مساعد Google"، ويستند إلى "الإجراء" الذي تم إنشاؤه في الدرس التطبيقي حول الترميز من المستوى 1. ننصحك بشدة بإكمال المستوى 1 من Codelab قبل البدء في هذا المستوى.

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

ما ستنشئه

في هذا الدرس العملي، ستنشئ "إجراءً حواريًا" متطوّرًا يتضمّن الوظائف التالية:

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

قبل البدء في إنشاء المهمة، يمكنك التفاعل مع المهمة المباشرة على جهازك المتوافق مع "مساعد Google" من خلال قول "Ok Google، أريد التحدث مع Fate and Fortune". يبدو المسار التلقائي خلال هذا الإجراء للمستخدم العائد على النحو التالي:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

أهداف الدورة التعليمية

  • كيفية استخدام الفتحات لجمع البيانات من المستخدم
  • كيفية استخدام الشروط لإضافة منطق إلى مشهد
  • كيفية إضافة حلقة ألعاب
  • كيفية إضافة مسار داعم

المتطلبات

تشمل المتطلبات الأساسية لهذا الدرس العملي ما يلي:

يُنصح بشدة، ولكن ليس مطلوبًا، أن تكون على دراية بلغة JavaScript (الإصدار ES6) لفهم رمز التنفيذ لهذا الدرس التطبيقي حول الترميز.

2. مواصلة إنشاء واجهة محادثة

في الدرس التطبيقي الأول حول الترميز، أنشأت "إجراءًا حواريًا" بسيطًا يتضمّن مشهدًا واحدًا، Start.

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

  • الانتقال إلى مشهد Fortune جديد عندما يريد المستخدم معرفة طالعه
  • اسأل المستخدم عن المساعدة التي يريد اختيارها لرحلته
  • عرض رسالة حظ مخصّصة استنادًا إلى اختيار المستخدم

إنشاء مشهد Fortune

في هذا القسم، يمكنك إنشاء مشهد Fortune وتحديد كيفية انتقال المستخدم إليه أثناء المحادثة.

لإنشاء مشهد جديد باسم Fortune، اتّبِع الخطوات التالية:

  1. افتح مشروع الإجراءات في المستوى 1 من الدرس العملي.
  2. انقر على تطوير في شريط التنقّل.
  3. ضمن المشاهد، انقر على مشهد البداية.
  4. انقر على نية نعم (مربّع عندما يتم العثور على تطابق مع "نعم") لفتح الخيارات.
  5. محو طلبات الإرسال لإزالة الطلب
  6. في قسم الانتقال، انقر على القائمة المنسدلة، ثمّ انقر في مربّع النص واكتب Fortune.
  7. انقر على إضافة. سيؤدي ذلك إلى إنشاء مشهد جديد باسم Fortune. يضيف أيضًا انتقالًا من المشهد Start إلى المشهد Fortune عندما يريد المستخدم معرفة حظه.

56682a0c7459b98c.png

تحديد منطق المحادثة لمشهد Fortune

في هذا الدرس التطبيقي حول الترميز، عليك ضبط مشهد Fortune لطرح السؤال التالي على المستخدم: "ماذا تختار لمساعدتك في مهمتك، تنينًا أم مترجمًا أم بوصلة؟" يمكنك استخدام ميزة ملء الخانات لجمع المعلومات اللازمة من المستخدم قبل المتابعة.

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

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

إنشاء نوع available_options

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

لإنشاء النوع available_options، اتّبِع الخطوات التالية:

  1. في شريط التنقّل، انقر على الأنواع.
  2. انقر على + (علامة الجمع)، واكتب available_options، ثم اضغط على Enter.
  3. انقر على available_options لفتح الخيارات.

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

لإضافة الخيارات الثلاثة التي يمكن للمستخدم الاختيار من بينها، اتّبِع الخطوات التالية:

  1. انتقِل إلى قسم إضافة إدخالات.
  2. في الحقل إدخال جديد، اكتب dragon واضغط على Enter. ينشئ هذا الإجراء مفتاح dragon.
  3. اكتب hydra في حقل إضافة قيم واضغط على Enter لإضافته كقيمة (مرادف). بعد ذلك، كرِّر هذه الخطوة للقيمة lizard.
  4. أضِف بقية المفاتيح والقيم المقابلة:
  • translator | translator، وcommunicator، وmachine، وdecoder، وtranslate
  • compass | compass، وdirection، وguide

8333b1b67445f21.png

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

يفهم الإجراء الآن أنّ available_options هي تنين ومترجم وبوصلة، ويمكنه أيضًا التعرّف على بعض المرادفات ذات الصلة.

ضبط ملء الخانات

بعد ذلك، عليك ضبط ميزة "ملء الخانات" في مشهد Fortune. لضبط منطق ملء الخانات، اتّبِع الخطوات التالية:

  1. في شريط التنقّل، انقر على حظك ضمن المشاهد.
  2. في Fortune المشهد، انقر على + (علامة الجمع) من أجل ملء الخانات.
  3. في الحقل إدخال اسم الفتحة، أضِف chosenOptions كاسم الفتحة.
  4. في القائمة المنسدلة اختيار النوع، اختَر available_options كنوع الفتحة.
  5. ضَع علامة في مربّع الاختيار هذه الخانة مطلوبة.

a461b906476e244.png

  1. انقر على إرسال طلبات، وأضِف الرسالة التالية وشرائح الاقتراحات:
candidates:
  - first_simple:
      variants:
        - speech: >-
            What do you choose to help you on your quest, a dragon, a
            translator, or a compass?
    suggestions:
      - title: 'Dragon'
      - title: 'Translator'
      - title: 'Compass'
  1. انقر على حفظ.

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

يُرجى العِلم أنّه عند تسمية الخانة chosenOptions، يتم تعديل الحقل إعادة كتابة قيمة الخانة المخصّصة بالاسم نفسه ($session.params.chosenOptions). ويمكنك الوصول إلى هذه المَعلمة بهذا الاسم في "أداة إنشاء الإجراءات" وفي عملية التنفيذ من خلال مكتبة العميل.

ضبط شرط scene.slots.status == "FINAL"

عند إضافة خانة، تتم إضافة الشرط scene.slots.status == "FINAL" تلقائيًا إلى قائمة الشروط.

يتحقّق الشرط scene.slots.status == "FINAL" من اكتمال عملية ملء الخانات. عند ملء جميع الخانات، يمكن أن يؤدي الشرط إلى تشغيل خطاف ويب أو الانتقال إلى مشهد جديد أو إضافة طلبات إلى قائمة الطلبات.

في هذا القسم، يمكنك ضبط scene.slots.status == "FINAL" لإضافة طلب إلى قائمة انتظار الطلبات بعد ملء الخانات.

لإضافة هذا الطلب إلى شرط FINAL، اتّبِع الخطوات التالية:

  1. انقر على scene.slots.status == "FINAL" لفتح نافذة الخيارات.
  2. انقر على إرسال الطلبات وأضِف الطلب التالي:
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. انقر على حفظ.

اختبار الإجراء في المحاكي

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

لاختبار الإجراء، اتّبِع الخطوات التالية:

  1. في شريط التنقّل، انقر على اختبار.
  2. انقر على Talk to my test app أو اكتبه في الحقل الإدخال واضغط على Enter.
  3. اكتب Yes في حقل الإدخال واضغط على Enter. (يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم).

a899d45c542668f6.png

  1. انقر على dragon أو اكتبها أو قلها. يجب أن تتلقّى الطلب "لقد اخترت التنين".

في القسم التالي، يمكنك تخصيص الطلبات لكل أداة مساعدة يمكن للمستخدم اختيارها.

تخصيص الطلبات باستخدام الشروط

في هذا القسم، يمكنك إضافة شروط لكل خيار يمكن للمستخدم اختياره وإضافة طلب مخصّص لكل شرط.

تخصيص رسالة الحظ dragon

لتعديل الشرط وتخصيص الطلب الذي يظهر عندما يختار المستخدم "تنين"، اتّبِع الخطوات التالية:

  1. انقر على تطوير في شريط التنقّل.
  2. في شريط التنقّل، انقر على مشهد حظك اليوم.
  3. انقر على scene.slots.status == "FINAL" لفتح نافذة الخيارات.
  4. عدِّل جملة الحالة إلى: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
  5. انقر على إرسال الطلبات.
  6. عدِّل الطلب باستخدام التوقّع التالي في أداة تعديل الرموز:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The people of Gryffinberg will be awestruck by the beauty and power
            of the ancient dragon. Much to your dismay, the townspeople fall
            into dispute over who will receive the honor of riding the dragon
            first. You return home from your quest without everlasting glory or
            a dragon.
  1. انقر على حفظ.

d31767232ad908bd.png

الآن، عندما يقول المستخدم "تنين" أو كلمة مشابهة، يقدّم الإجراء توقعات استنادًا إلى هذا الاختيار. بعد ذلك، أضِف الخيارَين المتبقّيَين.

تخصيص رسالة الحظ translator

لإضافة الشرط وتخصيص الطلب الذي يظهر عندما يختار المستخدم "المترجم"، اتّبِع الخطوات التالية:

  1. انقر على + (علامة الجمع) بجانب الشرط.
  2. أضِف scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" إلى الحقل else if.
  3. انقر على إرسال الطلبات.
  4. أضِف الطلب التالي في أداة تعديل الرموز:
candidates:
  - first_simple:
      variants:
        - speech: >-
            With the help of the translator, the rival factions in Gryffinberg
            are finally able to communicate with each other and resolve their
            disputes. You will complete your quest to restore peace in the town.
            The translator will be used on many subsequent journeys across the
            earth. After its work is done, it retires honorably to a premier
            location in the Gryffinberg History Museum.
  1. انقر على حفظ.

c1af65e70dbf3dfe.png

تخصيص رسالة الحظ compass

لإضافة الشرط وتخصيص الطلب الذي يظهر عندما يختار المستخدم "البوصلة"، اتّبِع الخطوات التالية:

  1. انقر على + (علامة الجمع) بجانب الشرط.
  2. أضِف scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" إلى مربّع النص else if.
  3. انقر على إرسال الطلبات.
  4. أضِف الطلب التالي في أداة تعديل الرموز:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The compass will help you find the mystical and ancient Library of
            Gryffinberg. Among its infinite stacks of dusty books, you find one
            entitled "Wisdom of the Ages". By the time you've read the
            50,000-page tome, the townspeople have forgotten their problems. You
            will write a second edition of "Wisdom of the Ages", but have
            limited commercial success.
  1. انقر على حفظ.

اختبار الإجراء في المحاكي

في هذه المرحلة، يجب أن يقدّم الإجراء الخاص بك تنبؤًا مخصّصًا للمستخدم استنادًا إلى الخيار الذي يحدّده.

لاختبار الإجراء، اتّبِع الخطوات التالية:

  1. في شريط التنقّل، انقر على اختبار.
  2. اكتب Talk to my test app في حقل الإدخال واضغط على Enter.
  3. اكتب Yes في حقل الإدخال واضغط على Enter. يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم.
  4. انقر على Translator أو اكتبها أو قلها.

29e17f950bd0dd71.png

من المفترض أن تتلقّى التوقّعات المناسبة للخيار "المترجم".

3- إضافة حلقة لعبة

في هذا القسم، يمكنك ضبط الإجراء الخاص بك ليتمكّن المستخدم من اختيار خيار آخر والاستماع إلى توقعات مختلفة بعد إجراء عملية اختيار. يشبه هذا التغيير الرسالة "هل تريد اللعب مجددًا؟" التي تظهر في نهاية اللعبة. لإنشاء هذه الحلقة، يمكنك إعادة استخدام نيتي yes وno اللتين تم إنشاؤهما سابقًا، وإضافتهما إلى مشهد جديد باسم Again.

إنشاء مشهد Again

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

لإنشاء Again المشهد، اتّبِع الخطوات التالية:

  1. انقر على تطوير في شريط التنقّل.
  2. انقر على + (علامة الجمع) ضمن المشاهد.
  3. اكتب Again واضغط على Enter.
  4. انقر على مشهد Again في شريط التنقّل.
  5. انقر على + (علامة الجمع) بجانب عند الضغط على مفتاح الإدخال.
  6. انقر على إرسال طلبات، وأضِف طلبات ورقائق اقتراحات التالية:
candidates:
  - first_simple:
      variants:
        - speech: >-
            That is what I see for you. Would you like to choose a different option and
            explore another future?
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. انقر على حفظ.

إضافة انتقال من المشهد Fortune إلى المشهد Again

بعد أن يتلقّى المستخدم رسالة الحظ، يجب أن تنتقل المحادثة إلى مشهد Again الجديد.

لإضافة انتقال من المشهد Fortune إلى المشهد Again، اتّبِع الخطوات التالية:

  1. انقر على مشهد التوقعات.
  2. انقر على الشرط الأول (scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon") لفتح نافذة الخيارات.
  3. انتقِل إلى Again ضمن الانتقال واختَره.
  4. انقر على حفظ.
  5. انقر على الشرط الثاني لفتح نافذة الخيارات.
  6. انتقِل إلى Again ضمن الانتقال واختَره.
  7. انقر على حفظ.
  8. انقر على الشرط الثالث لفتح نافذة الخيارات.
  9. انتقِل إلى Again ضمن الانتقال واختَره.
  10. انقر على حفظ.

اختبار الإجراء في المحاكي

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

لاختبار الإجراء، اتّبِع الخطوات التالية:

  1. في شريط التنقّل، انقر على اختبار.
  2. اكتب Talk to my test app في حقل الإدخال واضغط على Enter.
  3. اكتب Yes في حقل الإدخال واضغط على Enter. يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم.
  4. انقر على dragon أو اكتبها أو قلها.

b299e9fed9aedb69.png

من المفترض أن تتلقّى التوقّعات الخاصة بخيار التنين والطلب Again.

إضافة نوايا والانتقال إلى المشهد Again

في هذا القسم، يمكنك إضافة الغرضين yes وno إلى المشهد Again لكي يفهم الإجراء ما إذا كان المستخدم يريد اختيار خيار جديد أم لا. يمكنك أيضًا إضافة عمليات الانتقال المناسبة للغرضَين yes وno. ينتقل الغرض yes إلى المشهد Fortune، بينما ينتقل الغرض no إلى مشهد النظام End conversation.

لإضافة نوايا وعمليات انتقال إلى المشهد Again، اتّبِع الخطوات التالية:

  1. انقر على تطوير في شريط التنقّل.
  2. انقر على المشهد Again.
  3. انقر على + (علامة الجمع) بجانب التعامل مع نية المستخدم.
  4. اختَر نعم من القائمة المنسدلة الخاصة بالنية.
  5. انقر على Fortune من القائمة المنسدلة الانتقال.
  6. انقر على حفظ.

c2efba35ea881b0d.png

  1. انقر على + (علامة الجمع) بجانب التعامل مع نية المستخدم.
  2. اختَر لا من القائمة المنسدلة الخاصة بالنية.
  3. اختَر إنهاء المحادثة من القائمة المنسدلة الانتقال.
  4. انقر على إرسال طلبات وأضِف الطلب التالي في أداة تعديل الرموز:
candidates:
  - first_simple:
      variants:
        - speech: >-
            It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
  1. انقر على حفظ.

اختبار الإجراء في المحاكي

يجب أن يفهم الإجراء الآن ما إذا كان المستخدم يريد اختيار خيار جديد أو إنهاء المحادثة.

لاختبار الغرض yes، اتّبِع الخطوات التالية:

  1. في شريط التنقّل، انقر على اختبار.
  2. اكتب Talk to my test app في حقل الإدخال واضغط على Enter.
  3. اكتب Yes في حقل الإدخال واضغط على Enter. يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم.
  4. انقر على أحد الخيارات أو اكتبه أو قُله.
  5. اكتب Yes في حقل الإدخال واضغط على Enter.

5d0690332efe2e29.png

من المفترض أن يظهر لك الطلب "ماذا تختار لمساعدتك في رحلتك، تنينًا أم مترجمًا أم بوصلة؟"

لاختبار الغرض no، اتّبِع الخطوات التالية:

  1. انقر على أحد الخيارات أو اكتبه أو قُله.
  2. اكتب No في حقل الإدخال واضغط على Enter.

من المفترض أن تتلقّى الطلب End conversation: "يسرّني أنّك راضٍ عن اختيارك. نتمنى لك التوفيق في رحلتك. إلى اللقاء".

4. إضافة مسار داعم

لقد أنشأت الآن المسار الرئيسي الذي يتّبعه معظم المستخدمين في "الإجراء". ومع ذلك، يمكن للمستخدم الردّ على الطلب من المشهد Fortune، "ماذا تختار لمساعدتك في مهمتك، تنين أم مترجم أم بوصلة؟"، بخيار ليس من بين الخيارات المقدَّمة.

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

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

إنشاء نوع unavailable_options

يمكنك الآن إنشاء نوع unavailable_options يحتوي على مجموعة متنوعة من الخيارات المختلفة حتى يتمكّن الإجراء من التعرّف على هذه البيانات في إدخال المستخدم.

لإنشاء النوع unavailable_options، اتّبِع الخطوات التالية:

  1. انقر على تطوير في شريط التنقّل.
  2. انقر على + (علامة الجمع) ضمن الأنواع (Types).
  3. اكتب unavailable_options واضغط على Enter.
  4. انقر على unavailable_options لفتح الخيارات.
  5. أدخِل الإدخالات التالية والقيم المقابلة لها في قسم إضافة إدخالات:

horse

horse، وstallion، وsteed

magic

magic، وenchanted، وspells

money

money، وcash، وgold

phone

phone، وcell، وapps

يجب أن يبدو جدول المفتاح والقيمة على النحو التالي:

c9e119e0f5fb2a47.png

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

إنشاء نية other_option

بعد ذلك، يمكنك إنشاء غرض باسم other_option وإضافة عبارات تدريبية تتضمّن الخيارات من النوع unavailable_options. تتم مطابقة هذه النية عندما يختار المستخدم خيارًا مضمّنًا في النوع unavailable_options.

لإنشاء وتكوين الغرض other_option، اتّبِع الخطوات التالية:

  1. انقر على + (علامة الجمع) ضمن النيّات المخصّصة.
  2. اكتب other_option واضغط على Enter.
  3. انقر على other_option لفتح النافذة.
  4. أضِف عبارات التدريب التالية واضغط على Enter بعد كل عبارة:
  • I want to use spells
  • I really really want to use a phone
  • magic!
  • cash
  • I want to ride a horse
  1. في قسم إضافة مَعلمات الهدف، عدِّل اسم المَعلمة إلى chosenUnavailableOption.
  2. انقر على حفظ.

أثناء إدخال عبارات التدريب، يتعرّف Actions Builder على spells وphone وmagic وcash وhorse من النوع unavailable_options ويُبرز (يضيف تعليقات توضيحية إلى) هذه الكلمات تلقائيًا. تضيف أداة Actions Builder تلقائيًا مَعلمة هدف في قسم إضافة مَعلمات الهدف، كما هو موضّح في الصورة التالية.

تتيح لك مَعلمة الغرض استخراج اسم الخيار واستخدامه في طلب.

df61d4489f0910.png

إضافة النية other_option إلى المشهد Fortune

لديك الآن غرض، other_option، يمكنه التعامل مع مستخدم يحدّد خيارًا ليس من الخيارات الأصلية. في هذا القسم، يمكنك إضافة الغرض other_option إلى المشهد Fortune. يمكنك استخدام مَعلمة النية لتخصيص الطلب استنادًا إلى إدخال المستخدم.

لإضافة نية other_option إلى مشهد Fortune، اتّبِع الخطوات التالية:

  1. انقر على مشهد التوقعات.
  2. انقر على + (علامة الجمع) بجانب التعامل مع نية المستخدم.
  3. اختَر other_option من القائمة المنسدلة الخاصة بالنية.
  4. انقر على إرسال الطلبات وأضِف الطلب التالي:
candidates:
  - first_simple:
      variants:
        - speech: >-
            I have seen the future and a $intent.params.chosenUnavailableOption.original
            will not aid you on your journey. 

يشير التعبير $intent.params.chosenUnavailableOption إلى عنصر مَعلمة الهدف، ويشير $intent.params.chosenUnavailableOption.original إلى قيمة هذا العنصر. يشير original property إلى الإدخال الأولي الذي يحدّده المستخدم.

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

4bab1efbe21056aa.png

عندما يذكر المستخدم خيارًا مُدرَجًا في النوع unavailable_options أثناء المشهد Fortune، تتم مطابقة الغرض other_option ويتمّ إضافة طلب إلى قائمة انتظار الطلبات. بما أنّه لم يتم تحديد أي انتقال، تستمر حلقة تنفيذ المشهد بإعادة تقييم مرحلة الشروط. بعد ذلك، يضيف خانة chosenOptions طلبها إلى قائمة انتظار الطلبات، ويتم تسليم قائمة انتظار الطلبات إلى المستخدم.

اختبار الإجراء في المحاكي

من المفترض أن يستجيب الإجراء الآن بشكل مناسب عندما يختار المستخدم أحد الخيارات المُدرَجة في النوع unavailable_options، وأن يحدّد المساعدة التي اختارها المستخدم. يجب أن يطلب الإجراء من المستخدم اختيار أحد الخيارات الأصلية (تنين أو مترجم أو بوصلة).

لاختبار الإجراء في المحاكي، اتّبِع الخطوات التالية:

  1. في شريط التنقّل، انقر على اختبار.
  2. اكتب Talk to my test app في حقل الإدخال واضغط على Enter.
  3. اكتب Yes في حقل الإدخال واضغط على Enter. يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم.
  4. اكتب magic في حقل الإدخال واضغط على Enter.

3a42c33eca435f32.png

قد تلاحظ أنّ الطلب لا يبدو صحيحًا عندما يختار المستخدم "سحر" بسبب أداة التعريف "الـ" التي تسبقها. يمكنك معالجة هذه المشكلة في الأقسام التالية.

إضافة معالج unavailable_options

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

لإضافة معالج unavailable_options، اتّبِع الخطوات التالية:

  1. انقر على تطوير في شريط التنقّل.
  2. انقر على المشهد Fortune.
  3. ضمن التعامل مع نية المستخدم، انقر على عند مطابقة other_option لفتح النافذة.
  4. أزِل العلامة من مربّع الاختيار إرسال الطلبات.
  5. ضَع علامة في مربّع الاختيار الاتصال بخطاف الويب.
  6. أدخِل unavailable_options في مربّع النص الخاص بمعالج الأحداث.

52a0fba115f1b377.png

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

تعديل عملية التنفيذ ونشرها

بعد إعداد الإجراء لاستدعاء معالج الحدث unavailable_options، يمكنك تعديل المعالج في التنفيذ ونشره.

لتعديل معلومات التنفيذ، اتّبِع الخطوات التالية:

  1. انقر على Webhook في شريط التنقّل.
  2. أضِف الرمز التالي ضمن معالج greeting:
app.handle('unavailable_options', conv => {
  const option = conv.intent.params.chosenUnavailableOption.original;
  const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
  let message = 'I have seen the future and ';
  if(optionsNeedA.has(optionKey)){
    message = message + 'a ';
  }
  message = message + `${option} will not aid you on your journey. `;
  conv.add(message);
});
  1. أضِف الرمز التالي ضمن const app = conversation();:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. انقر على حفظ معلومات التنفيذ.
  2. انقر على نشر خدمة التنفيذ. عند اكتمال عملية النشر، ستظهر رسالة فوق المحرّر نصّها عملية نشر Cloud Functions محدّثة.

فهم الرمز

ينفِّذ معالج unavailable_options ما يلي:

  • يحصل على بيانات option من العنصر conv ويُعيّن option للسمة original، وهي الإدخال الأولي من المستخدم
  • تُعيّن القيمة optionKey للسمة resolved، وهي المفتاح لنوع unavailable_options
  • يتحقّق مما إذا كان optionKey أحد الخيارات التي تحتاج إلى "a"، وإذا كان كذلك، ينشئ الرسالة مع إضافة "a"
  • إضافة الرسالة من خلال conv.add(message)

اختبار الإجراء في المحاكي

يجب أن يعدّل الإجراء الآن الطلب استنادًا إلى ما إذا كان خيار المستخدم من النوع unavailable_options يتطلّب أداة التعريف "a" قبله.

لاختبار الإجراء، اتّبِع الخطوات التالية:

  1. في شريط التنقّل، انقر على اختبار.
  2. انقر على Talk to my test app أو اكتبه في الحقل الإدخال واضغط على Enter.
  3. اكتب Yes في حقل الإدخال واضغط على Enter. يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم.
  4. اكتب magic في حقل الإدخال واضغط على Enter.
  5. اكتب horse في حقل الإدخال واضغط على Enter.

54ee24c5c3c56e.png

يجب أن يضيف الإجراء الخاص بك أداة التعريف "a" قبل الخيار "horse"، مع إنشاء الطلب بدون أداة التعريف "a" للخيار "magic".

تنظيف مشروعك [يُنصح به]

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

  1. لحذف مشروع Cloud والموارد، أكمِل الخطوات الواردة في قسم إيقاف المشاريع (حذفها).
  1. اختياري: لإزالة مشروعك على الفور من "وحدة تحكّم الإجراءات"، اطّلِع على حذف مشروع. إذا لم تُكمل هذه الخطوة، ستتم إزالة مشروعك تلقائيًا بعد 30 يومًا تقريبًا.

5- تهانينا!

لقد تعرّفت الآن على المهارات المتوسطة المستوى اللازمة لإنشاء "مهام مع مساعد Google".

المواضيع التي تناولتها

  • كيفية تطوير "إجراءات محادثة" باستخدام مكتبة التنفيذ Node.js
  • كيفية استخدام الخانات لجمع البيانات من المستخدم
  • كيفية استخدام الشروط لإضافة منطق إلى المشهد
  • كيفية إضافة حلقة ألعاب
  • كيفية إضافة مسار داعم

مزيد من المعلومات

يمكنك استكشاف المراجع التالية لمعرفة المزيد حول إنشاء "مهام" لـ "مساعد Google":

تابِع حساب ‎@ActionsOnGoogle على Twitter للاطّلاع على آخر إعلاناتنا، وشاركنا ما أنشأته من خلال التغريد باستخدام الهاشتاغ ‎#AoGDevs.

استطلاع لجمع الملاحظات

قبل إنهاء المحادثة، يُرجى ملء استطلاع موجز حول تجربتك.