1. نظرة عامة
تتيح منصة مطوّري "مساعد Google" إنشاء برامج لتوسيع وظائف "مساعد Google"، وهو مساعد شخصي افتراضي، على أكثر من مليار جهاز، بما في ذلك مكبرات الصوت الذكية والهواتف والسيارات وأجهزة التلفزيون وسماعات الرأس وغيرها. يتفاعل المستخدمون مع "مساعد Google" في محادثة لإنجاز المهام، مثل شراء البقالة أو حجز رحلة. بصفتك مطوّرًا، يمكنك استخدام "منصة المطوّرين في مساعد Google" لإنشاء تجارب محادثة ممتعة وفعّالة بين المستخدمين وخدمة التنفيذ التابعة لجهة خارجية وإدارتها بسهولة.
يتناول هذا الدرس التطبيقي حول الترميز مفاهيم متوسّطة المستوى لتطوير التطبيقات باستخدام "مساعد Google"، ويستند إلى "الإجراء" الذي تم إنشاؤه في الدرس التطبيقي حول الترميز من المستوى 1. ننصحك بشدة بإكمال المستوى 1 من Codelab قبل البدء في هذا المستوى.
يخبر الإجراء الذي ستنشئه في هذا الدرس التعليمي المستخدمين عن حظهم في رحلتهم في أرض أسطورية، وهي Gryffinberg، استنادًا إلى المساعدة التي يختارونها.
ما ستنشئه
في هذا الدرس العملي، ستنشئ "إجراءً حواريًا" متطوّرًا يتضمّن الوظائف التالية:
- تجمع هذه الوظيفة البيانات من المستخدم، وتعدّل الطلبات الحوارية استنادًا إلى القيمة.
- الردّ بأسئلة متابعة لتعزيز المحادثة
- إنشاء حلقة ألعاب لكي يتمكّن المستخدم من التفاعل مع الإجراء مرة أخرى بعد تلقّي رسالة حظ
قبل البدء في إنشاء المهمة، يمكنك التفاعل مع المهمة المباشرة على جهازك المتوافق مع "مساعد Google" من خلال قول "Ok Google، أريد التحدث مع Fate and Fortune". يبدو المسار التلقائي خلال هذا الإجراء للمستخدم العائد على النحو التالي:
أهداف الدورة التعليمية
- كيفية استخدام الفتحات لجمع البيانات من المستخدم
- كيفية استخدام الشروط لإضافة منطق إلى مشهد
- كيفية إضافة حلقة ألعاب
- كيفية إضافة مسار داعم
المتطلبات
تشمل المتطلبات الأساسية لهذا الدرس العملي ما يلي:
- متصفّح ويب، مثل Google Chrome
- مشروع مكتمل من المستوى 1 من Codelab حول "المهام" (إنشاء "مهام" في "مساعد Google" باستخدام "أداة إنشاء المهام"، المستوى 1)
يُنصح بشدة، ولكن ليس مطلوبًا، أن تكون على دراية بلغة JavaScript (الإصدار ES6) لفهم رمز التنفيذ لهذا الدرس التطبيقي حول الترميز.
2. مواصلة إنشاء واجهة محادثة
في الدرس التطبيقي الأول حول الترميز، أنشأت "إجراءًا حواريًا" بسيطًا يتضمّن مشهدًا واحدًا، Start
.
في هذا الدرس العملي، ستوسّع نطاق محادثة الإجراء. في الأقسام التالية، يمكنك ضبط الإجراء لتنفيذ ما يلي:
- الانتقال إلى مشهد
Fortune
جديد عندما يريد المستخدم معرفة طالعه - اسأل المستخدم عن المساعدة التي يريد اختيارها لرحلته
- عرض رسالة حظ مخصّصة استنادًا إلى اختيار المستخدم
إنشاء مشهد Fortune
في هذا القسم، يمكنك إنشاء مشهد Fortune
وتحديد كيفية انتقال المستخدم إليه أثناء المحادثة.
لإنشاء مشهد جديد باسم Fortune
، اتّبِع الخطوات التالية:
- افتح مشروع الإجراءات في المستوى 1 من الدرس العملي.
- انقر على تطوير في شريط التنقّل.
- ضمن المشاهد، انقر على مشهد البداية.
- انقر على نية نعم (مربّع عندما يتم العثور على تطابق مع "نعم") لفتح الخيارات.
- محو طلبات الإرسال لإزالة الطلب
- في قسم الانتقال، انقر على القائمة المنسدلة، ثمّ انقر في مربّع النص واكتب
Fortune
. - انقر على إضافة. سيؤدي ذلك إلى إنشاء مشهد جديد باسم
Fortune
. يضيف أيضًا انتقالًا من المشهدStart
إلى المشهدFortune
عندما يريد المستخدم معرفة حظه.
تحديد منطق المحادثة لمشهد Fortune
في هذا الدرس التطبيقي حول الترميز، عليك ضبط مشهد Fortune
لطرح السؤال التالي على المستخدم: "ماذا تختار لمساعدتك في مهمتك، تنينًا أم مترجمًا أم بوصلة؟" يمكنك استخدام ميزة ملء الخانات لجمع المعلومات اللازمة من المستخدم قبل المتابعة.
تقدّم "الإجراء" الخاص بك تنبؤات لثلاثة مساعدين: تنين ومترجم وبوصلة. لضبط الإجراء الخاص بك من أجل التعرّف على هذه الخيارات الثلاثة في إدخال المستخدم، عليك إنشاء نوع جديد.
يمكنك استخدام الأنواع في مرحلة ملء الخانات في المشهد لتحديد المعلومات التي تريد الحصول عليها من المستخدم. عندما يرصد محرّك الفهم اللغوي الطبيعي تطابقًا لخانة في إدخال المستخدم، يستخرج الخانة كمعلَمة مكتوبة، ما يتيح لك تنفيذ منطق باستخدامها في مشهد.
إنشاء نوع 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
لتعديل الشرط وتخصيص الطلب الذي يظهر عندما يختار المستخدم "تنين"، اتّبِع الخطوات التالية:
- انقر على تطوير في شريط التنقّل.
- في شريط التنقّل، انقر على مشهد حظك اليوم.
- انقر على
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.
- انقر على حفظ.
الآن، عندما يقول المستخدم "تنين" أو كلمة مشابهة، يقدّم الإجراء توقعات استنادًا إلى هذا الاختيار. بعد ذلك، أضِف الخيارَين المتبقّيَين.
تخصيص رسالة الحظ translator
لإضافة الشرط وتخصيص الطلب الذي يظهر عندما يختار المستخدم "المترجم"، اتّبِع الخطوات التالية:
- انقر على + (علامة الجمع) بجانب الشرط.
- أضِف
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
إلى الحقل else if. - انقر على إرسال الطلبات.
- أضِف الطلب التالي في أداة تعديل الرموز:
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
لإضافة الشرط وتخصيص الطلب الذي يظهر عندما يختار المستخدم "البوصلة"، اتّبِع الخطوات التالية:
- انقر على + (علامة الجمع) بجانب الشرط.
- أضِف
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
إلى مربّع النص else if. - انقر على إرسال الطلبات.
- أضِف الطلب التالي في أداة تعديل الرموز:
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- إضافة حلقة لعبة
في هذا القسم، يمكنك ضبط الإجراء الخاص بك ليتمكّن المستخدم من اختيار خيار آخر والاستماع إلى توقعات مختلفة بعد إجراء عملية اختيار. يشبه هذا التغيير الرسالة "هل تريد اللعب مجددًا؟" التي تظهر في نهاية اللعبة. لإنشاء هذه الحلقة، يمكنك إعادة استخدام نيتي 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
، اتّبِع الخطوات التالية:
- انقر على مشهد التوقعات.
- انقر على الشرط الأول (
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
) لفتح نافذة الخيارات. - انتقِل إلى
Again
ضمن الانتقال واختَره. - انقر على حفظ.
- انقر على الشرط الثاني لفتح نافذة الخيارات.
- انتقِل إلى
Again
ضمن الانتقال واختَره. - انقر على حفظ.
- انقر على الشرط الثالث لفتح نافذة الخيارات.
- انتقِل إلى
Again
ضمن الانتقال واختَره. - انقر على حفظ.
اختبار الإجراء في المحاكي
في هذه المرحلة، يجب أن يقدّم الإجراء الخاص بك الطلب التالي للمستخدم بعد تلقّيه التوقّع: "هذا ما أراه لك. هل تريد اختيار خيار مختلف واستكشاف مستقبل آخر؟"
لاختبار الإجراء، اتّبِع الخطوات التالية:
- في شريط التنقّل، انقر على اختبار.
- اكتب
Talk to my test app
في حقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم. - انقر على
dragon
أو اكتبها أو قلها.
من المفترض أن تتلقّى التوقّعات الخاصة بخيار التنين والطلب Again
.
إضافة نوايا والانتقال إلى المشهد Again
في هذا القسم، يمكنك إضافة الغرضين yes
وno
إلى المشهد Again
لكي يفهم الإجراء ما إذا كان المستخدم يريد اختيار خيار جديد أم لا. يمكنك أيضًا إضافة عمليات الانتقال المناسبة للغرضَين yes
وno
. ينتقل الغرض yes
إلى المشهد Fortune
، بينما ينتقل الغرض no
إلى مشهد النظام End conversation
.
لإضافة نوايا وعمليات انتقال إلى المشهد Again
، اتّبِع الخطوات التالية:
- انقر على تطوير في شريط التنقّل.
- انقر على المشهد
Again
. - انقر على + (علامة الجمع) بجانب التعامل مع نية المستخدم.
- اختَر نعم من القائمة المنسدلة الخاصة بالنية.
- انقر على
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
، "ماذا تختار لمساعدتك في مهمتك، تنين أم مترجم أم بوصلة؟"، بخيار ليس من بين الخيارات المقدَّمة.
في هذا القسم، يمكنك ضبط الإجراء لفهم متى يختار المستخدم "سحر" أو "مال" أو "حصان" أو "هاتف"، ولحث المستخدم على الاختيار من بين الخيارات الثلاثة الأصلية عند اختيار أحد هذه الخيارات. لضبط هذه المنطق، عليك إنشاء type
جديد يحتوي على هذه الخيارات الأخرى وطلب جديد، other_option
، تتم مطابقته عندما يقول المستخدم أحد هذه الخيارات. عليك أيضًا إضافة تعليقات توضيحية إلى عبارات التدريب ضمن الغرض other_option
لتحديد مَعلمات الغرض واستخراجها.
عندما يرصد محرّك معالجة اللغة الطبيعية (NLU) في "مساعد Google" تطابقًا في المَعلمات في إدخال المستخدم، يستخرج القيمة كمَعلمة مكتوبة حتى تتمكّن من تنفيذ منطق باستخدامها في مشهد. في هذا الدرس العملي، ستضبط "الإجراء" لاستخراج المساعدة التي يختارها المستخدم والإشارة إلى هذا الخيار في طلب.
إنشاء نوع unavailable_options
يمكنك الآن إنشاء نوع unavailable_options
يحتوي على مجموعة متنوعة من الخيارات المختلفة حتى يتمكّن الإجراء من التعرّف على هذه البيانات في إدخال المستخدم.
لإنشاء النوع unavailable_options
، اتّبِع الخطوات التالية:
- انقر على تطوير في شريط التنقّل.
- انقر على + (علامة الجمع) ضمن الأنواع (Types).
- اكتب
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
- في قسم إضافة مَعلمات الهدف، عدِّل اسم المَعلمة إلى
chosenUnavailableOption
. - انقر على حفظ.
أثناء إدخال عبارات التدريب، يتعرّف Actions Builder على spells
وphone
وmagic
وcash
وhorse
من النوع unavailable_options
ويُبرز (يضيف تعليقات توضيحية إلى) هذه الكلمات تلقائيًا. تضيف أداة Actions Builder تلقائيًا مَعلمة هدف في قسم إضافة مَعلمات الهدف، كما هو موضّح في الصورة التالية.
تتيح لك مَعلمة الغرض استخراج اسم الخيار واستخدامه في طلب.
إضافة النية other_option
إلى المشهد Fortune
لديك الآن غرض، other_option
، يمكنه التعامل مع مستخدم يحدّد خيارًا ليس من الخيارات الأصلية. في هذا القسم، يمكنك إضافة الغرض other_option
إلى المشهد Fortune
. يمكنك استخدام مَعلمة النية لتخصيص الطلب استنادًا إلى إدخال المستخدم.
لإضافة نية other_option
إلى مشهد 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.params.chosenUnavailableOption.original
إلى قيمة هذا العنصر. يشير original property
إلى الإدخال الأولي الذي يحدّده المستخدم.
- انقر على حفظ.
عندما يذكر المستخدم خيارًا مُدرَجًا في النوع unavailable_options
أثناء المشهد Fortune
، تتم مطابقة الغرض other_option
ويتمّ إضافة طلب إلى قائمة انتظار الطلبات. بما أنّه لم يتم تحديد أي انتقال، تستمر حلقة تنفيذ المشهد بإعادة تقييم مرحلة الشروط. بعد ذلك، يضيف خانة chosenOptions
طلبها إلى قائمة انتظار الطلبات، ويتم تسليم قائمة انتظار الطلبات إلى المستخدم.
اختبار الإجراء في المحاكي
من المفترض أن يستجيب الإجراء الآن بشكل مناسب عندما يختار المستخدم أحد الخيارات المُدرَجة في النوع unavailable_options
، وأن يحدّد المساعدة التي اختارها المستخدم. يجب أن يطلب الإجراء من المستخدم اختيار أحد الخيارات الأصلية (تنين أو مترجم أو بوصلة).
لاختبار الإجراء في المحاكي، اتّبِع الخطوات التالية:
- في شريط التنقّل، انقر على اختبار.
- اكتب
Talk to my test app
في حقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم. - اكتب
magic
في حقل الإدخال واضغط علىEnter
.
قد تلاحظ أنّ الطلب لا يبدو صحيحًا عندما يختار المستخدم "سحر" بسبب أداة التعريف "الـ" التي تسبقها. يمكنك معالجة هذه المشكلة في الأقسام التالية.
إضافة معالج unavailable_options
لوضع أداة التعريف "a" قبل الخيارات المناسبة من النوع unavailable_options
، يمكنك ضبط معالج أحداث في منطق التنفيذ للتحقّق مما إذا كان الخيار الذي يحدده المستخدم يحتاج إلى أداة التعريف "a" قبله. أولاً، عليك ضبط "الإجراء" لاستدعاء المعالج في وحدة التحكّم.
لإضافة معالج unavailable_options
، اتّبِع الخطوات التالية:
- انقر على تطوير في شريط التنقّل.
- انقر على المشهد
Fortune
. - ضمن التعامل مع نية المستخدم، انقر على عند مطابقة other_option لفتح النافذة.
- أزِل العلامة من مربّع الاختيار إرسال الطلبات.
- ضَع علامة في مربّع الاختيار الاتصال بخطاف الويب.
- أدخِل
unavailable_options
في مربّع النص الخاص بمعالج الأحداث.
- انقر على حفظ.
تعديل عملية التنفيذ ونشرها
بعد إعداد الإجراء لاستدعاء معالج الحدث unavailable_options
، يمكنك تعديل المعالج في التنفيذ ونشره.
لتعديل معلومات التنفيذ، اتّبِع الخطوات التالية:
- انقر على Webhook في شريط التنقّل.
- أضِف الرمز التالي ضمن معالج
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');
- انقر على حفظ معلومات التنفيذ.
- انقر على نشر خدمة التنفيذ. عند اكتمال عملية النشر، ستظهر رسالة فوق المحرّر نصّها عملية نشر Cloud Functions محدّثة.
فهم الرمز
ينفِّذ معالج unavailable_options
ما يلي:
- يحصل على بيانات
option
من العنصرconv
ويُعيّنoption
للسمةoriginal
، وهي الإدخال الأولي من المستخدم - تُعيّن القيمة
optionKey
للسمةresolved
، وهي المفتاح لنوعunavailable_options
- يتحقّق مما إذا كان
optionKey
أحد الخيارات التي تحتاج إلى "a"، وإذا كان كذلك، ينشئ الرسالة مع إضافة "a" - إضافة الرسالة من خلال
conv.add(message)
اختبار الإجراء في المحاكي
يجب أن يعدّل الإجراء الآن الطلب استنادًا إلى ما إذا كان خيار المستخدم من النوع unavailable_options
يتطلّب أداة التعريف "a" قبله.
لاختبار الإجراء، اتّبِع الخطوات التالية:
- في شريط التنقّل، انقر على اختبار.
- انقر على
Talk to my test app
أو اكتبه في الحقل الإدخال واضغط علىEnter
. - اكتب
Yes
في حقل الإدخال واضغط علىEnter
. يمكنك بدلاً من ذلك النقر على شريحة الاقتراح نعم. - اكتب
magic
في حقل الإدخال واضغط علىEnter
. - اكتب
horse
في حقل الإدخال واضغط علىEnter
.
يجب أن يضيف الإجراء الخاص بك أداة التعريف "a" قبل الخيار "horse"، مع إنشاء الطلب بدون أداة التعريف "a" للخيار "magic".
تنظيف مشروعك [يُنصح به]
لتجنُّب تحمّل رسوم محتملة، ننصحك بإزالة المشاريع التي لا تنوي استخدامها. لحذف المشاريع التي أنشأتها في هذا الدرس العملي، اتّبِع الخطوات التالية:
- لحذف مشروع Cloud والموارد، أكمِل الخطوات الواردة في قسم إيقاف المشاريع (حذفها).
- اختياري: لإزالة مشروعك على الفور من "وحدة تحكّم الإجراءات"، اطّلِع على حذف مشروع. إذا لم تُكمل هذه الخطوة، ستتم إزالة مشروعك تلقائيًا بعد 30 يومًا تقريبًا.
5- تهانينا!
لقد تعرّفت الآن على المهارات المتوسطة المستوى اللازمة لإنشاء "مهام مع مساعد Google".
المواضيع التي تناولتها
- كيفية تطوير "إجراءات محادثة" باستخدام مكتبة التنفيذ Node.js
- كيفية استخدام الخانات لجمع البيانات من المستخدم
- كيفية استخدام الشروط لإضافة منطق إلى المشهد
- كيفية إضافة حلقة ألعاب
- كيفية إضافة مسار داعم
مزيد من المعلومات
يمكنك استكشاف المراجع التالية لمعرفة المزيد حول إنشاء "مهام" لـ "مساعد Google":
- المستندات الخاصة بتطوير "المهام مع مساعد Google"
- صفحة GitHub الخاصة بـ "المهام على Google" للحصول على عيّنات من الرموز والمكتبات
- منتدى Reddit الرسمي للمطوّرين الذين يعملون مع "مساعد Google"
- إرشادات تصميم المحادثات للتعرّف على أفضل الممارسات والإرشادات المتعلّقة بالإجراءات الحوارية
تابِع حساب @ActionsOnGoogle على Twitter للاطّلاع على آخر إعلاناتنا، وشاركنا ما أنشأته من خلال التغريد باستخدام الهاشتاغ #AoGDevs.
استطلاع لجمع الملاحظات
قبل إنهاء المحادثة، يُرجى ملء استطلاع موجز حول تجربتك.