1. نظرة عامة
يتيح لك النظام الأساسي لمطوّري برامج "مساعد Google" إنشاء برامج لتوسيع وظائف "مساعد Google"، وهو مساعد شخصي افتراضي، في أكثر من مليار جهاز، بما في ذلك مكبّرات الصوت الذكية والهواتف والسيارات وأجهزة التلفزيون وسماعات الرأس وغيرها. يتفاعل المستخدمون مع "مساعد Google" أثناء إجراء محادثات لإنجاز المهام، مثل شراء البقالة أو حجز رحلة. بصفتك مطوّر برامج، يمكنك استخدام منصة مطوّري البرامج الخاصة بخدمة "مساعد Google" لإنشاء تجارب محادثة ممتعة وفاعلة وإدارتها بين المستخدمين وخدمة توصيل الطلبات التابعة لجهات خارجية.
يتناول هذا الدرس التطبيقي مفاهيم المستوى المتوسط للتطوير باستخدام "مساعد Google"، ويعتمد على الإجراء الذي تم إنشاؤه في الدرس التطبيقي حول الترميز من المستوى 1. ويُوصى بشدة بإكمال الدرس التطبيقي حول الترميز من المستوى 1 قبل بدء هذا الدرس التطبيقي.
من خلال هذا الإجراء الذي يتم إنشاؤه في هذا الدرس التطبيقي حول الترميز، يتم إعلام المستخدمين بثروتهم في مهمتهم في أرض أسطورية، "غريفينبيرغ"، استنادًا إلى المساعدات التي يختارونها.
العناصر التي سيتم إنشاؤها
في هذا الدرس التطبيقي حول الترميز، تُنشئ إجراءً تحاوريًا متطورًا باستخدام الوظائف التالية:
- يجمع البيانات من المستخدم ويُعدِّل رسائل المحادثة استنادًا إلى القيمة
- يردّ بأسئلة متابعة لمواصلة المحادثة
- إنشاء حلقة لعبة حتى يتمكن المستخدم من التفاعل مع الإجراء مرة أخرى بعد تلقي ثروة
قبل بدء البناء، يمكنك التفاعل مع الإجراء المباشر على جهازك المزوّد بخدمة "مساعد Google" من خلال قول "Ok Google، التحدّث إلى Fate وFortune". يبدو المسار التلقائي لهذا الإجراء للمستخدم مكرر التفاعل التالي:
ما ستتعرَّف عليه
- كيفية استخدام الخانات لجمع بيانات من المستخدم
- كيفية استخدام الشروط لإضافة منطق إلى مشهد
- كيفية إضافة حلقة لعبة
- كيفية إضافة مسار داعم
الأشياء التي تحتاج إليها
في ما يلي المتطلبات الأساسية لهذا الدرس التطبيقي حول الترميز:
- متصفح ويب، مثل Google Chrome
- مشروع رموز إجراءات من المستوى 1 اكتمل (إنشاء إجراءات لمساعد Google باستخدام المستوى 1 لأداة إنشاء المهام)
ننصح بشدة باستخدام لغة JavaScript (ES6) للتعرّف على رمز استيفاء هذا الدرس التطبيقي، على الرغم من أنّه غير مطلوب.
2. مواصلة إنشاء واجهة محادثة
في الدرس التطبيقي الأول حول الترميز، أنشأت إجراءً محادثة تبسيطيًا باستخدام مشهد واحد Start
.
في هذا الدرس التطبيقي حول الترميز، يمكنك تمديد محادثة "الإجراءات". في الأقسام التالية، يمكنك ضبط الإجراء لتنفيذ ما يلي:
- الانتقال إلى مشهد
Fortune
جديد عندما يريد المستخدم سماع ثروته - سؤال المستخدم عن المساعدة التي يريد اختيارها لرحلته
- يمكنك توفير ثروة مخصّصة بناءً على خيار المستخدم.
إنشاء مشهد Fortune
في هذا القسم، يمكنك إنشاء مشهد Fortune
وتحديد كيفية انتقال المستخدم إليه أثناء المحادثة.
لإنشاء مشهد جديد اسمه Fortune
، اتبع الخطوات التالية:
- افتح مشروع المهام من المستوى الأول بشأن الرموز البرمجية.
- انقر على تطوير في شريط التنقل.
- ضمن المشاهد، انقر على المشهد ابدأ.
- انقر على النية بالشراء نعم (المربّع عند مطابقة نعم) لفتح الخيارات.
- ويمكنك محو إرسال رسائل المطالبة لإزالة رسالة المطالبة.
- في قسم النقل، انقر على القائمة المنسدلة، ثم انقر على مربع النص واكتب
Fortune
. - انقر على Add (إضافة). يؤدي هذا إلى إنشاء مشهد جديد باسم
Fortune
. ويضيف أيضًا انتقالاً من المشهدStart
إلى المشهدFortune
عندما يريد المستخدم سماع الحظ.
تحديد منطق المحادثة لمشهد Fortune
في هذا الدرس التطبيقي، يمكنك ضبط الإعداد Fortune
لطرح سؤال على المستخدم &&;;brbr;بماذا تختار لمساعدتك في المهمة أو التنين أو مترجم أو بوصلة؟ يمكنك استخدام إمكانية تُسمى ملء الخانة لجمع المعلومات اللازمة من المستخدم قبل المتابعة.
يتيح لك التطبيق الحصول على ثروة لثلاثة مساعدات: تنين ومترجم بوصلة. لإعداد الإجراء من أجل تحديد هذه الخيارات الثلاثة في إدخال المستخدم، يجب إنشاء نوع جديد.
يمكنك استخدام أنواع ضمن مرحلة تعبئة خانة مشهد لتحديد المعلومات التي تريدها من المستخدم. عندما يكتشف محرك NLU تطابق فتحة في إدخال المستخدم، يستخرج الخانة كمعلمة مكتوبة، وبالتالي يمكنك تنفيذ المنطق معها في أحد المشاهد.
إنشاء نوع available_options
في هذا القسم، تُنشئ نوعًا جديدًا باسم available_options
، والذي يحدد الخيارات الثلاثة التي يمكن للمستخدمين اختيارها (التنين والمترجم وبوصلة) استجابةً لطلب المطالبة. ويمكنك أيضًا تحديد بعض المرادفات لهذه الخيارات إذا قال أحد المستخدمين شيئًا مماثلاً. في قسم لاحق، عليك إضافة النوع available_options
إلى الخانة لتحديد رغبتك في الحصول على خيار المستخدم.
لإنشاء النوع available_options
، يُرجى اتباع الخطوات التالية:
- في شريط التنقل، انقر على الأنواع.
- انقر على + (علامة الجمع)، واكتب
available_options
، ثم اضغط علىEnter
. - انقر على
available_options
لفتح الخيارات.
يتم ضبط الأنواع على أنها أزواج من المعلومات/القيم، حيث يكون المفتاح هو اسم النوع والقيم هي مرادفات لهذا المفتاح. عند تعريف المفتاح، تتم إضافته تلقائيًا كقيمة.
لإضافة الخيارات الثلاثة التي يمكن للمستخدم اختيارها، اتّبع الخطوات التالية:
- انتقِل إلى قسم إضافة إدخالات.
- في الحقل إدخال جديد، اكتب
dragon
واضغط علىEnter
. يؤدي هذا الإجراء إلى إنشاء مفتاحdragon
. - اكتب
hydra
في حقل إضافة قيم واضغط علىEnter
لإضافتها كقيمة (مرادف). وبعد ذلك، كرِّر هذه الخطوة للقيمةlizard
. - أضِف بقية المفاتيح والقيم المقابلة لها:
translator | translator
وcommunicator
وmachine
وdecoder
وtranslate
compass | compass
وdirection
وguide
- يُرجى النقر على حفظ.
يتعرّف الإجراء الذي تستخدمه الآن على أن available_options
عبارة عن تنين ومترجم بوصلة ويمكنهم التعرّف على بعض المرادفات المقابلة لها.
إعداد ملء الخانة
بعد ذلك، عليك إعداد ملء الخانة في مشهد Fortune
. لضبط منطق ملء الخانة، اتبع الخطوات التالية:
- في شريط التنقل، ضمن المشاهد، انقر على فورتن.
- في المشهد
Fortune
، انقر على + (علامة الجمع) لملء الخانة. - في الحقل إدخال اسم الخانة، أضف
chosenOptions
كاسم للخانة. - في القائمة المنسدلة اختيار نوع، اختر
available_options
كنوع خانة. - ضع علامة في مربّع الاختيار هذه الخانة مطلوبة.
- اختَر إرسال رسائل المطالبة، وأضِف شرائح الرسائل والاقتراحات التالية:
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'
- يُرجى النقر على حفظ.
لقد أضفت الآن النوع available_options
إلى الخانة، والتي تخبر "الإجراء" بالمعلومات التي تحتاج إلى جمعها من المستخدم (اختياره للمساعدات) قبل المتابعة. يمكنك أيضًا ضبط رسالة مطالبة ضمن الخانة، والتي تتم إضافتها إلى قائمة انتظار المطالبات عندما يصل المستخدم إلى مرحلة ملء الخانة للمشهد.
تجدر الإشارة إلى أنه عند تسمية الفتحة chosenOptions
، يتم تعديل الحقل تخصيص إعادة فتحة قيمة بالاسم نفسه ($session.params.chosenOptions
). ويمكنك الوصول إلى هذه المعلّمة بهذا الاسم في "أداة إنشاء المهام" وفي عملية التنفيذ من خلال مكتبة العملاء.
إعداد شرط scene.slots.status == "FINAL"
عند إضافة خانة، تتم إضافة الحالة scene.slots.status == "FINAL"
تلقائيًا إلى قائمة الشروط.
يتحقق الشرط scene.slots.status == "FINAL"
من اكتمال ملء الخانة. عند ملء جميع الخانة، يمكن أن يؤدي الشرط إلى تشغيل الردّ التلقائي على الويب أو الانتقال إلى مشهد جديد أو إضافة رسائل مطالبة إلى قائمة الانتظار.
في هذا القسم، يمكنك ضبط scene.slots.status == "FINAL"
لإضافة رسالة مطالبة إلى قائمة انتظار المطالبات بعد ملء الشرائح.
لإضافة رسالة المطالبة هذه إلى الشرط FINAL
، اتّبِع الخطوات التالية:
- انقر على
scene.slots.status == "FINAL"
لفتح نافذة الخيارات. - اختَر إرسال رسائل المطالبة وأضِف رسالة المطالبة التالية:
candidates:
- first_simple:
variants:
- speech: You picked $session.params.chosenOptions.
- يُرجى النقر على حفظ.
اختبار الإجراء في المحاكي
في هذه المرحلة، تكون قد حدّدت الخيارات التي يجب أن يختارها المستخدم لملء الشريحة. بعد الحصول على هذه المعلومات من المستخدم، يجب أن يقدم "الإجراء" رسالة مطالبة تشير إلى الخيار المحدد الذي اختاره.
لاختبار الإجراء، اتبع الخطوات التالية:
- في شريط التنقل، انقر على اختبار.
- انقر على
Talk to my test app
أو اكتب في حقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. (بدلاً من ذلك، يمكنك النقر على شريحة الاقتراح نعم).
- انقر على
dragon
أو اكتبها أو قُلها. من المفترض أن تظهر لك رسالة المطالبة "لقد اخترت التنين.
في القسم التالي، يمكنك تخصيص رسائل المطالبة لكل مساعدة يمكن للمستخدم اختيارها.
تخصيص رسائل المطالبة باستخدام الشروط
في هذا القسم، يمكنك إضافة شروط لكل خيار يمكن للمستخدم اختياره وإضافة رسالة مطالبة مخصّصة لكل شرط.
تخصيص الحظ dragon
لتعديل الشرط وتخصيص المطالبة عندما يختار المستخدم "؛dragon", اتبع الخطوات التالية:
- انقر على تطوير في شريط التنقل.
- في شريط التنقل، انقر على مشهد Fortune.
- انقر على
scene.slots.status == "FINAL"
لفتح نافذة الخيارات. - تعديل بيان الشرط إلى:
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
- انقر على إرسال رسائل المطالبة.
- تعديل رسالة المطالبة بالحظة التالية في محرّر الرموز:
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.
- يُرجى النقر على حفظ.
الآن، عندما يقول مستخدم "dragon" أو شيء يبدو مشابهًا له، يقدم الإجراء ثروة استنادًا إلى هذا التحديد. وبعد ذلك، أضِف الخيارَين المتبقيَين.
تخصيص الحظ translator
لإضافة الشرط وتخصيص رسالة المطالبة عند اختيار المستخدم "Translator", اتبع الخطوات التالية:
- انقر على + (علامة الجمع) بجانب الحالة.
- أضف
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
إلى حقل إذا كان. - انقر على إرسال رسائل المطالبة.
- أضِف رسالة المطالبة التالية في محرِّر الرموز:
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.
- يُرجى النقر على حفظ.
تخصيص الحظ compass
لإضافة الشرط وتخصيص رسالة المطالبة عند اختيار المستخدم "compass"، اتبع الخطوات التالية:
- انقر على علامة + (علامة الجمع) بجانب الحالة.
- أضف
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
إلى مربع النص غير ذلك. - انقر على إرسال رسائل المطالبة.
- أضِف رسالة المطالبة التالية في محرِّر الرموز:
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.
- يُرجى النقر على حفظ.
اختبار الإجراء في المحاكي
في هذه المرحلة، يجب أن يقدّم الإجراء ثروة مخصّصة للمستخدم استنادًا إلى الخيار الذي يحدده.
لاختبار الإجراء، اتبع الخطوات التالية:
- في شريط التنقل، انقر على اختبار.
- اكتب
Talk to my test app
في حقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. بدلاً من ذلك، انقر على شريحة اقتراح نعم. - انقر على
Translator
أو اكتبها أو قُلها.
من المفترض أن تتلقى الحظ المناسب لخيار &"؛المترجم"؛.
3- إضافة حلقة ألعاب
في هذا القسم، يمكنك إعداد الإجراء حتى يتمكن المستخدم من تحديد خيار آخر وسماع ثروة مختلفة بعد الاختيار. يتشابه هذا التغيير مع رسالة "& ترغب في اللعب مرة أخرى }{quot; في نهاية اللعبة. لإنشاء هذه التكرار، يمكنك إعادة استخدام أغراض yes
وno
التي تم إنشاؤها سابقًا وإضافتها إلى مشهد جديد باسم Again
.
إنشاء مشهد Again
في هذا القسم، يمكنك إنشاء مشهد Again
جديد وإضافة رسالة مطالبة تسأل المستخدم عما إذا كان يرغب في تحديد خيار مختلف.
لإنشاء مشهد Again
، اتبع الخطوات التالية:
- انقر على تطوير في شريط التنقل.
- انقر على علامة + (علامة الجمع) ضمن المشاهد.
- اكتب
Again
واضغط علىEnter
. - انقر على مشهد
Again
في شريط التنقل. - انقر على علامة + (علامة الجمع) بجانب عند الدخول.
- اختَر إرسال رسائل المطالبة، وأضِف شرائح الاقتراحات والاقتراحات التالية:
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'
- يُرجى النقر على حفظ.
إضافة انتقال من Fortune
إلى مشهد Again
بعد أن يتلقّى المستخدم الحظ، يجب أن تنتقل المحادثة إلى مشهد Again
الجديد.
لإضافة انتقال من مشهد Fortune
إلى مشهد Again
، اتبع الخطوات التالية:
- انقر على المشهد الذي يظهر في Fortune.
- انقر على الشرط الأول (
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
) لفتح نافذة الخيارات. - انتقل واختَر
Again
ضمن النقل. - يُرجى النقر على حفظ.
- انقر على الشرط الثاني لفتح نافذة الخيارات.
- انتقل واختَر
Again
ضمن النقل. - يُرجى النقر على حفظ.
- انقر على الشرط الثالث لفتح نافذة الخيارات.
- انتقل واختَر
Again
ضمن النقل. - يُرجى النقر على حفظ.
اختبار الإجراء في المحاكي
وفي هذه المرحلة، يجب أن يقدّم الإجراء الذي تطلبه للمستخدم رسالة المطالبة التالية بعد أن يتلقّى ثروته: "هذا ما أراه لك. هل ترغب في تحديد خيار آخر والتعرّف على خيار آخر في المستقبل・quot;
لاختبار الإجراء، اتبع الخطوات التالية:
- في شريط التنقل، انقر على اختبار.
- اكتب
Talk to my test app
في حقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. بدلاً من ذلك، انقر على شريحة اقتراح نعم. - انقر على
dragon
أو اكتبها أو قُلها.
من المفترض أن تتلقى ثروة خيار التنين ورسالة المطالبة Again
.
إضافة الأهداف والنقل إلى مشهد Again
في هذا القسم، تضيف yes
وهدف no
إلى مشهد Again
بحيث يدرك الإجراء ما إذا كان المستخدم يريد تحديد خيار جديد أم لا. ويمكنك أيضًا إضافة الانتقالات المناسبة للغرض من yes
وno
. يتم نقل هدف yes
إلى مشهد Fortune
، بينما يتم نقل القصد من no
إلى مشهد النظام End conversation
.
لإضافة الأهداف والنقلات إلى مشهد Again
، اتبع الخطوات التالية:
- انقر على تطوير في شريط التنقل.
- انقر على المشهد
Again
. - انقر على علامة + (علامة الجمع) بجانب معالجة نية المستخدم.
- اختَر yes (نعم) من القائمة المنسدلة "Intent".
- اختَر
Fortune
من القائمة المنسدلة النقل. - يُرجى النقر على حفظ.
- انقر على علامة + (علامة الجمع) بجانب معالجة نية المستخدم.
- اختر لا من القائمة المنسدلة "النية بالشراء".
- حدد إنهاء المحادثة من القائمة المنسدلة النقل.
- اختَر إرسال رسائل المطالبة وأضِف رسالة المطالبة التالية في محرِّر الرموز:
candidates:
- first_simple:
variants:
- speech: >-
It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
- يُرجى النقر على حفظ.
اختبار الإجراء في المحاكي
يجب أن يفهم الإجراء الآن ما إذا كان المستخدم يريد تحديد خيار جديد أو إنهاء المحادثة.
لاختبار هدف yes
، اتبع الخطوات التالية:
- في شريط التنقل، انقر على اختبار.
- اكتب
Talk to my test app
في حقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. بدلاً من ذلك، انقر على شريحة اقتراح نعم. - انقر على أحد الخيارات أو اكتبه أو قُل أحد الخيارات.
- اكتب
Yes
في حقل الإدخال واضغط علىEnter
.
من المفترض أن تتلقى رسالة المطالبة، "ما الذي تختار استخدامه لمساعدتك في المهمة، أو التنين، أو المترجم، أو بوصلة البوصلة؟
لاختبار هدف no
، اتبع الخطوات التالية:
- انقر على أحد الخيارات أو اكتبه أو قُل أحد الخيارات.
- اكتب
No
في حقل الإدخال واضغط علىEnter
.
من المفترض أن تظهر لك رسالة المطالبة End conversation
: "يسعدنا أنّك راضٍ عن اختيارك. كل التوفيق في مهمتك. إلى اللقاء.
4. إضافة مسار داعم
لقد أنشأت الآن المسار الرئيسي الذي يتخذه معظم المستخدمين في الإجراء. ومع ذلك، يمكن للمستخدم الرد على رسالة المطالبة من مشهد Fortune
، "ما الذي تختار استخدامه لمساعدتك في المهمة، أو التنين أو المترجم أو بوصلة؟، بخيار ليس أحد الخيارات المقدمة.
في هذا القسم، يمكنك ضبط الإجراء الذي تريد معرفةه عندما يختار المستخدم اختيار &"magic" أو "money" أو "حصان&أو;; أو "phone", ومطالبة المستخدم بالاختيار من بين الخيارات الثلاثة الأصلية عندما يختار أحد هذه الخيارات. لضبط هذا المنطق، عليك إنشاء type
جديد يحتوي على هذه الخيارات الأخرى وهدف جديد other_option
، تتم مطابقته عندما يقول المستخدم أحد هذه الخيارات. عليك أيضًا إضافة تعليقات توضيحية إلى عبارات التدريب ضمن غرض other_option
لتحديد مَعلمات intent واستخراجها.
عندما يكتشف محرك "معالجة اللغات الطبيعية" (NLU)" مطابقة معلمة في إدخال المستخدم، فإنه يستخلص القيمة كمعلمة مكتوبة حتى تتمكن من تنفيذ المنطق معها في المشهد. في هذا الدرس التطبيقي حول الترميز، يمكنك ضبط "الإجراء" لاستخراج المساعدة التي يختارها المستخدم والإشارة إلى هذا الخيار في رسالة مطالبة.
إنشاء نوع unavailable_options
يمكنك الآن إنشاء نوع unavailable_options
يحتوي على مجموعة متنوعة من الخيارات المختلفة حتى يمكن للإجراء تحديد هذه البيانات في إدخال المستخدم.
لإنشاء النوع unavailable_options
، يُرجى اتباع الخطوات التالية:
- انقر على تطوير في شريط التنقل.
- انقر على + (علامة الجمع) ضمن الأنواع.
- اكتب
unavailable_options
واضغط علىEnter
. - انقر على
unavailable_options
لفتح الخيارات. - أدخل الإدخالات التالية والقيم المقابلة لها في القسم إضافة إدخالات:
|
|
|
|
|
|
|
|
يجب أن يظهر جدول قيمة المفتاح على النحو التالي:
- يُرجى النقر على حفظ.
إنشاء هدف other_option
بعد ذلك، يمكنك إنشاء هدف باسم other_option
وإضافة عبارات تدريب تتضمن الخيارات في النوع unavailable_options
. وتتم مطابقة هذا القصد عندما يختار المستخدم خيارًا مضمّنًا في النوع unavailable_options
.
لإنشاء هدف other_option
وإعداده، اتبع الخطوات التالية:
- انقر على + (علامة الجمع) ضمن الأهداف المخصّصة.
- اكتب
other_option
واضغط علىEnter
. - انقر على
other_option
لفتح النافذة. - أضِف عبارات التدريب التالية واضغط على
Enter
بعد كل منها:
I want to use spells
I really really want to use a phone
magic!
cash
I want to ride a horse
- في قسم إضافة معلّمات intent، عدِّل اسم المعلّمة إلى
chosenUnavailableOption
. - يُرجى النقر على حفظ.
أثناء إدخال عبارات التدريب، تتعرف "أداة إنشاء الإجراءات" على spells
وphone
وmagic
وcash
وhorse
من نوع unavailable_options
وتُبرز (تمت إضافة تعليقات توضيحية) هذه الكلمات تلقائيًا. تضيف أداة إنشاء الإجراءات معلمة intent تلقائيًا في قسم إضافة معلمات intent، كما هو موضّح في الصورة التالية.
تسمح لك المعلمة intent باستخراج اسم الخيار واستخدام هذا الخيار في رسالة مطالبة.
إضافة هدف other_option
إلى مشهد Fortune
لديك الآن هدف، other_option
، يمكنه التعامل مع مستخدم يُحدِّد خيارًا ليس من الخيارات الأصلية. في هذا القسم، تضيف هدف other_option
إلى المشهد Fortune
. ويمكنك استخدام المعلمة intent لتخصيص رسالة المطالبة استنادًا إلى إدخال المستخدم.
لإضافة القصد من other_option
إلى مشهد Fortune
، يُرجى اتّباع الخطوات التالية:
- انقر على المشهد الذي يظهر في Fortune.
- انقر على علامة + (علامة الجمع) بجانب معالجة نية المستخدم.
- اختَر
other_option
من القائمة المنسدلة "النية بالشراء". - اختَر إرسال رسائل المطالبة وأضِف رسالة المطالبة التالية:
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
إلى الإدخال الأولي الذي يحدّده المستخدم.
- يُرجى النقر على حفظ.
عندما يقول مستخدم خيارًا مدرَجًا في النوع unavailable_options
خلال المشهد Fortune
، تتم مطابقة هدف other_option
ويضيف رسالة مطالبة إلى قائمة انتظار المطالبة. وبما أنّه لم يتم تحديد أي انتقال، ستستمر حلقة تنفيذ المشهد من خلال إعادة تقييم مرحلة الشروط. بعد ذلك، تضيف الفتحة chosenOptions
رسالة المطالبة إلى قائمة انتظار المطالبات، ويتم تسليمها إلى المستخدم.
اختبار الإجراء في المحاكي
من المفترض أن يستجيب الإجراء الآن بشكل مناسب عندما يحدد المستخدم أحد الخيارات المدرجة في النوع unavailable_options
ويحدد المساعدة التي اختارها المستخدم. يجب أن يؤدي الإجراء الذي أجريته إلى مطالبة المستخدم باختيار أحد الخيارات الأصلية (تنين أو مترجم أو بوصلة).
لاختبار "الإجراء" في المحاكي، اتّبِع الخطوات التالية:
- في شريط التنقل، انقر على اختبار.
- اكتب
Talk to my test app
في حقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. بدلاً من ذلك، انقر على شريحة اقتراح نعم. - اكتب
magic
في حقل الإدخال واضغط علىEnter
.
قد تلاحظ أن رسالة المطالبة لا تبدو صحيحة عندما يختار المستخدم "magic" بسبب "a" المقالة التي تم وضعها قبلها. يمكنك حلّ هذه المشكلة في الأقسام التالية:
إضافة معالج unavailable_options
لوضع المقالة "&a" قبل الخيارات المناسبة من النوع unavailable_options
، يمكنك ضبط معالِج حدث في منطق توصيل الطلبات لمعرفة ما إذا كان الخيار الذي يختاره المستخدم بحاجة إلى علامة اقتباس&" قبلها. أولاً، يجب ضبط الإجراء لاستدعاء المعالج في وحدة التحكم.
لإضافة معالج unavailable_options
، يُرجى اتّباع الخطوات التالية:
- انقر على تطوير في شريط التنقل.
- انقر على المشهد
Fortune
. - ضمن التعامل مع الهدف من المستخدم، انقر على عند مطابقة خيار_آخر_الاختيار لفتح النافذة.
- أزِل العلامة من مربّع الاختيار إرسال رسائل المطالبة.
- ضَع علامة في مربّع الاختيار الاتصال بالرد التلقائي على الويب.
- أدخِل
unavailable_options
في مربّع النص لمعالج الحدث.
- انقر على حفظ.
تعديل التنفيذ ونشره
الآن وبعد أن أعددت الإجراء الخاص بك لاستدعاء معالج أحداث unavailable_options
، يمكنك تحديث المعالج في الوفاء ونشره.
ولتعديل الطلب، اتّبِع الخطوات التالية:
- انقر على الردّ التلقائي على الويب في شريط التنقل.
- أضِف الرمز التالي ضمن معالج
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);
});
- أضِف الرمز التالي ضمن
const app = conversation();
:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- انقر على حفظ اكتمال الطلب.
- انقر على نشر الطلب. عند اكتمال النشر، ستظهر رسالة أعلى "محرّر إعلانات Google" تفيد بأنّ نشر وظيفة السحابة الإلكترونية محدَّث.
فهم الرمز
يُجري المعالج unavailable_options
ما يلي:
- يحصل على بيانات
option
من الكائنconv
ويخصّصoption
للموقعoriginal
، وهو الإدخال الأولي من المستخدم - إسناد
optionKey
إلىresolved
، وهو المفتاح في النوعunavailable_options
- للتحقّق مما إذا كان
optionKey
هو أحد الخيارات التي تحتاج إلى "a"; إذا كان الأمر كذلك، ينشئ الرسالة باستخدام علامة اقتباس &a&مضافة، - إضافة الرسالة عبر
conv.add(message)
اختبار الإجراء في المحاكي
يجب أن يعدّل الإجراء الآن رسالة المطالبة استنادًا إلى ما إذا كان اختيار المستخدم من النوع unavailable_options
يتطلب ا&لمقالة اقتضاءية قبله.
لاختبار الإجراء، اتبع الخطوات التالية:
- في شريط التنقل، انقر على اختبار.
- انقر على
Talk to my test app
أو اكتب في حقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. بدلاً من ذلك، انقر على شريحة اقتراح نعم. - اكتب
magic
في حقل الإدخال واضغط علىEnter
. - اكتب
horse
في حقل الإدخال واضغط علىEnter
.
يجب أن تتم إضافة المقالة "&& إننا" قبل الاختيار "&&;;حصان&حصص", أثناء إنشاء رسالة المطالبة بدون أي اقتباس
نظِّم مشروعك [مستحسن]
لتجنّب دفع رسوم محتملة، ننصحك بإزالة المشاريع التي لا تنوي استخدامها. لحذف المشاريع التي أنشأتها في هذا الدرس التطبيقي حول الترميز، اتّبِع الخطوات التالية:
- لحذف المشروع على السحابة الإلكترونية والموارد، يُرجى إكمال الخطوات الواردة في قسم إيقاف تشغيل المشاريع (حذفها).
- اختياري: لإزالة مشروعك على الفور من "وحدة تحكُّم الإجراءات"، راجِع حذف مشروع. إذا لم تُكمل هذه الخطوة، ستتم إزالة مشروعك تلقائيًا بعد 30 يومًا تقريبًا.
5. تهانينا.
لقد ستتمكّن الآن من الاطّلاع على المهارات المتوسطة اللازمة لإنشاء "المهام مع مساعد Google".
المجالات التي تناولتها
- كيفية تطوير الإجراءات الحوارية باستخدام مكتبة بيع Node.js
- كيفية استخدام الخانات لجمع البيانات من المستخدم
- كيفية استخدام الشروط لإضافة منطق إلى المشهد
- كيفية إضافة حلقة لعبة
- كيفية إضافة مسار داعم
مزيد من المعلومات
يمكنك الاطّلاع على المراجع التالية لمعرفة المزيد من المعلومات حول إنشاء المهام في خدمة "مساعد Google":
- مستندات تطوير المهام مع "مساعد Google"
- الإجراءات في صفحة GitHub من Google لنموذج الرمز والمكتبات
- منتدى Reddit لمطوّري البرامج الذين يعملون مع "مساعد Google"
- إرشادات تصميم المحادثة لأفضل الممارسات والإرشادات المتعلقة بإجراءات المحادثة
يمكنك متابعة @ActionsOnGoogle على Twitter للبقاء على اطّلاع على آخر إشعاراتنا ومشاركاتنا على التغريدة على #AoGDevs لمشاركة ما أنشأته.
استطلاع الملاحظات
قبل المغادرة، يُرجى ملء استبيان مختصر حول تجربتك.