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

1. نظرة عامة

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

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

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

العناصر التي سيتم إنشاؤها

في هذا الدرس التطبيقي حول الترميز، تُنشئ إجراءً تحاوريًا متطورًا باستخدام الوظائف التالية:

  • يجمع البيانات من المستخدم ويُعدِّل رسائل المحادثة استنادًا إلى القيمة
  • يردّ بأسئلة متابعة لمواصلة المحادثة
  • إنشاء حلقة لعبة حتى يتمكن المستخدم من التفاعل مع الإجراء مرة أخرى بعد تلقي ثروة

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

dd6f5c61296b8b50.png

eba043f546aa8c51.png

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

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

الأشياء التي تحتاج إليها

في ما يلي المتطلبات الأساسية لهذا الدرس التطبيقي حول الترميز:

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

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

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

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

  • الانتقال إلى مشهد Fortune جديد عندما يريد المستخدم سماع ثروته
  • سؤال المستخدم عن المساعدة التي يريد اختيارها لرحلته
  • يمكنك توفير ثروة مخصّصة بناءً على خيار المستخدم.

إنشاء مشهد Fortune

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

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

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

56682a0c7459b98c.png

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

في هذا الدرس التطبيقي، يمكنك ضبط الإعداد Fortune لطرح سؤال على المستخدم &&;;brbr;بماذا تختار لمساعدتك في المهمة أو التنين أو مترجم أو بوصلة؟ يمكنك استخدام إمكانية تُسمى ملء الخانة لجمع المعلومات اللازمة من المستخدم قبل المتابعة.

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

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

إنشاء نوع 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

لتعديل الشرط وتخصيص المطالبة عندما يختار المستخدم &quot؛dragon", اتبع الخطوات التالية:

  1. انقر على تطوير في شريط التنقل.
  2. في شريط التنقل، انقر على مشهد Fortune.
  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

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

تخصيص الحظ translator

لإضافة الشرط وتخصيص رسالة المطالبة عند اختيار المستخدم "Translator", اتبع الخطوات التالية:

  1. انقر على + (علامة الجمع) بجانب الحالة.
  2. أضف scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" إلى حقل إذا كان.
  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

لإضافة الشرط وتخصيص رسالة المطالبة عند اختيار المستخدم "compass"، اتبع الخطوات التالية:

  1. انقر على علامة + (علامة الجمع) بجانب الحالة.
  2. أضف scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" إلى مربع النص غير ذلك.
  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

من المفترض أن تتلقى الحظ المناسب لخيار &&quot؛المترجم&quot؛.

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

في هذا القسم، يمكنك إعداد الإجراء حتى يتمكن المستخدم من تحديد خيار آخر وسماع ثروة مختلفة بعد الاختيار. يتشابه هذا التغيير مع رسالة "& ترغب في اللعب مرة أخرى }{quot; في نهاية اللعبة. لإنشاء هذه التكرار، يمكنك إعادة استخدام أغراض 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. انقر على المشهد الذي يظهر في Fortune.
  2. انقر على الشرط الأول (scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon") لفتح نافذة الخيارات.
  3. انتقل واختَر Again ضمن النقل.
  4. يُرجى النقر على حفظ.
  5. انقر على الشرط الثاني لفتح نافذة الخيارات.
  6. انتقل واختَر Again ضمن النقل.
  7. يُرجى النقر على حفظ.
  8. انقر على الشرط الثالث لفتح نافذة الخيارات.
  9. انتقل واختَر Again ضمن النقل.
  10. يُرجى النقر على حفظ.

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

وفي هذه المرحلة، يجب أن يقدّم الإجراء الذي تطلبه للمستخدم رسالة المطالبة التالية بعد أن يتلقّى ثروته: "هذا ما أراه لك. هل ترغب في تحديد خيار آخر والتعرّف على خيار آخر في المستقبل・quot;

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

  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. اختَر yes (نعم) من القائمة المنسدلة "Intent".
  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، "ما الذي تختار استخدامه لمساعدتك في المهمة، أو التنين أو المترجم أو بوصلة؟، بخيار ليس أحد الخيارات المقدمة.

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

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

إنشاء نوع unavailable_options

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

لإنشاء النوع unavailable_options، يُرجى اتباع الخطوات التالية:

  1. انقر على تطوير في شريط التنقل.
  2. انقر على + (علامة الجمع) ضمن الأنواع.
  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. في قسم إضافة معلّمات intent، عدِّل اسم المعلّمة إلى chosenUnavailableOption.
  2. يُرجى النقر على حفظ.

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

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

df61d4489f0910.png

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

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

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

  1. انقر على المشهد الذي يظهر في Fortune.
  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، ويشير $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

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

إضافة معالج unavailable_options

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

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

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

52a0fba115f1b377.png

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

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

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

ولتعديل الطلب، اتّبِع الخطوات التالية:

  1. انقر على الردّ التلقائي على الويب في شريط التنقل.
  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. انقر على نشر الطلب. عند اكتمال النشر، ستظهر رسالة أعلى "محرّر إعلانات Google" تفيد بأنّ نشر وظيفة السحابة الإلكترونية محدَّث.

فهم الرمز

يُجري المعالج unavailable_options ما يلي:

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

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

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

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

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

54ee24c5c3c56e.png

يجب أن تتم إضافة المقالة "&& إننا" قبل الاختيار "&&;;حصان&حصص", أثناء إنشاء رسالة المطالبة بدون أي اقتباس

نظِّم مشروعك [مستحسن]

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

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

5. تهانينا.

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

المجالات التي تناولتها

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

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

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

يمكنك متابعة @ActionsOnGoogle على Twitter للبقاء على اطّلاع على آخر إشعاراتنا ومشاركاتنا على التغريدة على #AoGDevs لمشاركة ما أنشأته.

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

قبل المغادرة، يُرجى ملء استبيان مختصر حول تجربتك.