1. بررسی اجمالی
پلتفرم توسعهدهنده Google Assistant به شما امکان میدهد نرمافزاری ایجاد کنید تا عملکرد Google Assistant، یک دستیار شخصی مجازی، را در بیش از 1 میلیارد دستگاه، از جمله بلندگوهای هوشمند، تلفنها، خودروها، تلویزیونها، هدفونها و موارد دیگر گسترش دهید. کاربران برای انجام کارهایی مانند خرید مواد غذایی یا رزرو سواری، دستیار را در مکالمه قرار می دهند. بهعنوان یک توسعهدهنده، میتوانید از پلتفرم توسعهدهنده Assistant برای ایجاد و مدیریت تجربیات گفتگوی لذتبخش و مؤثر بین کاربران و سرویسهای شخص ثالث خود استفاده کنید.
این کد لبه مفاهیم سطح متوسط را برای توسعه با Google Assistant پوشش می دهد و بر اساس Action ایجاد شده در Codelab سطح 1 است. اکیداً توصیه میشود که قبل از شروع این کد، لابراتوار سطح 1 را تکمیل کنید.
اکشنی که در این کد لبه میسازید، بر اساس کمکی که انتخاب میکنند، به کاربران میگوید که شانس آنها برای جستجویشان در سرزمین افسانهای، گریفینبرگ، چیست.
چیزی که خواهی ساخت
در این کد لبه، شما یک اکشن مکالمه پیچیده با توابع زیر می سازید:
- داده ها را از کاربر جمع آوری می کند و بسته به مقدار، درخواست های مکالمه را اصلاح می کند
- برای ادامه گفتگو با سؤالات بعدی پاسخ می دهد
- یک حلقه بازی ایجاد می کند تا کاربر بتواند پس از دریافت ثروت دوباره با Action تعامل داشته باشد
قبل از شروع ساخت، میتوانید با گفتن «Hey Google, talk to Fate and Fortune» در دستگاه دارای Google Assistant خود با Live Action تعامل کنید. مسیر پیشفرض این Action برای یک کاربر بازگشتی شبیه تعامل زیر است:
چیزی که یاد خواهید گرفت
- نحوه استفاده از اسلات ها برای جمع آوری داده ها از کاربر
- نحوه استفاده از شرایط برای افزودن منطق به صحنه
- چگونه یک حلقه بازی اضافه کنیم
- نحوه اضافه کردن یک مسیر پشتیبانی
آنچه شما نیاز دارید
پیش نیازهای این کد لبه شامل موارد زیر است:
- یک مرورگر وب، مانند گوگل کروم
- یک پروژه اقدامات تکمیل شده Codelab Level 1 ( Build Actions for Google Assistant با استفاده از Actions Builder Level 1 )
آشنایی با جاوا اسکریپت (ES6) اکیداً توصیه میشود، اگرچه لازم نیست، برای درک کد تکمیلی این کد لبه.
2. به ساخت رابط مکالمه ادامه دهید
در اولین کد لبه ، شما یک اکشن مکالمه ساده با یک صحنه، Start
ایجاد کردید.
در این لبه کد، مکالمه Action خود را گسترش می دهید. در بخش های زیر، Action خود را برای انجام موارد زیر پیکربندی می کنید:
- زمانی که کاربر میخواهد بخت خود را بشنود، به صحنه جدید
Fortune
بروید - از کاربر بپرسید که کدام کمک را میخواهد برای سفر خود انتخاب کند
- یک ثروت سفارشی بر اساس انتخاب کاربر ارائه دهید
صحنه Fortune
را ایجاد کنید
در این بخش، صحنه Fortune
را ایجاد می کنید و نحوه انتقال کاربر به آن را در طول مکالمه تعریف می کنید.
برای ایجاد یک صحنه جدید به نام Fortune
مراحل زیر را دنبال کنید:
- پروژه اقدامات سطح 1 خود را باز کنید.
- روی Develop در نوار ناوبری کلیک کنید.
- در زیر صحنهها ، روی صحنه شروع کلیک کنید.
- روی Yes intent (کادر When yes is matched ) کلیک کنید تا گزینه ها باز شوند.
- برای حذف درخواست، دستورهای ارسال را پاک کنید.
- در بخش Transition ، روی منوی کشویی کلیک کنید، در کادر متن کلیک کنید و
Fortune
تایپ کنید. - روی افزودن کلیک کنید. این یک صحنه جدید به نام
Fortune
ایجاد می کند. همچنین زمانی که کاربر می خواهد طالع خود را بشنود، یک انتقال از صحنهStart
به صحنهFortune
اضافه می کند.
منطق مکالمه را برای صحنه Fortune
تعریف کنید
در این کد لبه، شما صحنه Fortune
خود را طوری پیکربندی میکنید که از کاربر بپرسید: " چه چیزی را برای کمک به شما در تلاش خود انتخاب میکنید، یک اژدها، یک مترجم یا یک قطب نما؟" شما می توانید از قابلیتی به نام slot filling برای جمع آوری اطلاعات لازم از کاربر قبل از ادامه استفاده کنید.
اکشن شما ثروتی برای سه کمک فراهم می کند: اژدها، مترجم و قطب نما. برای پیکربندی Action خود برای شناسایی این سه گزینه در ورودی کاربر، باید یک نوع جدید ایجاد کنید.
میتوانید از انواع در مرحله پر کردن شکاف صحنه برای تعریف اطلاعاتی که از کاربر میخواهید استفاده کنید. هنگامی که موتور NLU تطابق اسلات را در ورودی کاربر تشخیص میدهد، شکاف را به عنوان یک پارامتر تایپ شده استخراج میکند، بنابراین میتوانید منطق را با آن در یک صحنه انجام دهید.
نوع available_options
ایجاد کنید
در این بخش، یک نوع جدید به نام available_options
ایجاد میکنید که سه گزینه را که کاربران میتوانند انتخاب کنند (اژدها، مترجم و قطبنما) را در پاسخ به درخواست مشخص میکند. شما همچنین چند مترادف برای این گزینه ها تعریف می کنید در صورتی که کاربر چیزی مشابه را بگوید. در بخش بعدی، نوع available_options
را به یک اسلات اضافه میکنید تا مشخص کنید که میخواهید انتخاب کاربر را به دست آورید.
برای ایجاد نوع available_options
، مراحل زیر را دنبال کنید:
- در نوار پیمایش، روی Types کلیک کنید.
- روی + (علامت به علاوه) کلیک کنید،
available_options
تایپ کنید وEnter
فشار دهید. - روی
available_options
کلیک کنید تا گزینه ها باز شوند.
نوع ها به صورت جفت اطلاعات کلید-مقدار پیکربندی می شوند، جایی که کلید نام نوع و مقادیر مترادف آن کلید هستند. وقتی کلید را تعریف می کنید، به طور خودکار به عنوان یک مقدار اضافه می شود.
برای افزودن سه گزینه ای که کاربر می تواند انتخاب کند، این مراحل را دنبال کنید:
- به بخش افزودن ورودی ها بروید.
- در قسمت New entry ، عبارت
dragon
را تایپ کرده وEnter
فشار دهید. این عمل یک کلیدdragon
ایجاد می کند. -
hydra
در قسمت Add values تایپ کنید وEnter
فشار دهید تا آن را به عنوان یک مقدار (مترادف) اضافه کنید. سپس، این مرحله را برای ارزشlizard
تکرار کنید. - بقیه کلیدها و مقادیر مربوطه را اضافه کنید:
-
translator | translator
،communicator
،machine
،decoder
،translate
-
compass | compass
،direction
،guide
- روی ذخیره کلیک کنید.
اکنون Action شما میداند که available_options
اژدها، مترجم و قطبنما هستند و میتوانند چند مترادف مربوطه را نیز تشخیص دهند.
پر کردن اسلات را پیکربندی کنید
در مرحله بعد، باید پر کردن اسلات را در صحنه Fortune
پیکربندی کنید. برای پیکربندی منطق پر کردن شکاف، مراحل زیر را دنبال کنید:
- در نوار پیمایش، در زیر صحنهها ، روی Fortune کلیک کنید.
- در صحنه
Fortune
، روی + (علامت بعلاوه) برای پر کردن شکاف کلیک کنید. - در قسمت Enter Slot name ،
chosenOptions
به عنوان نام اسلات اضافه کنید. - در لیست کشویی Select type ،
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
را به شکاف اضافه کردهاید، که اطلاعاتی را که باید قبل از ادامه از کاربر (انتخاب کمک او) جمعآوری کنید، به Action شما میگوید. شما همچنین یک اعلان را در اسلات پیکربندی کردهاید که وقتی کاربر به مرحله پر کردن اسلات صحنه میرسد به صف اعلان اضافه میشود.
توجه داشته باشید که وقتی اسلات chosenOptions
، فیلد بازگردانی مقدار اسلات سفارشی با همین نام به روز می شود ( $session.params.chosenOptions
). شما می توانید با آن نام در Actions Builder و در تکمیل خود از طریق کتابخانه مشتری به این پارامتر دسترسی داشته باشید.
پیکربندی scene.slots.status == "FINAL"
هنگامی که یک اسلات اضافه می کنید، شرط scene.slots.status == "FINAL"
به طور خودکار به لیست شرایط اضافه می شود.
شرط scene.slots.status == "FINAL"
تکمیل شدن شکاف را بررسی می کند. هنگامی که همه شکاف ها پر شدند، این شرایط می تواند یک وب هوک را ایجاد کند، به یک صحنه جدید منتقل شود، یا دستورهایی را به صف اعلان اضافه کند.
در این بخش، scene.slots.status == "FINAL"
را پیکربندی میکنید تا پس از پر شدن شکافها، یک درخواست به صف درخواست اضافه کنید.
برای افزودن این دستور به شرط FINAL
، مراحل زیر را دنبال کنید:
- روی
scene.slots.status == "FINAL"
کلیک کنید تا پنجره گزینه ها باز شود. - Send prompts را انتخاب کنید و دستور زیر را اضافه کنید:
candidates:
- first_simple:
variants:
- speech: You picked $session.params.chosenOptions.
- روی ذخیره کلیک کنید.
اکشن خود را در شبیه ساز تست کنید
در این مرحله، شما تعریف کرده اید که کاربر کدام گزینه را برای پر کردن شکاف انتخاب کند. پس از دریافت این اطلاعات از کاربر، Action شما باید به گزینه خاصی که انتخاب کرده است اشاره کند.
برای آزمایش Action خود، این مراحل را دنبال کنید:
- در نوار پیمایش، روی تست کلیک کنید.
-
Talk to my test app
در قسمت Input کلیک کنید یا تایپ کنید وEnter
فشار دهید. -
Yes
را در قسمت Input تایپ کرده وEnter
فشار دهید. (در روش دیگر، می توانید روی تراشه پیشنهاد بله کلیک کنید.)
- کلیک کنید، تایپ کنید، یا بگویید
dragon
. شما باید اعلان "شما اژدها را انتخاب کردید" دریافت کنید.
در بخش بعدی، درخواستها را برای هر کمکی که کاربر میتواند انتخاب کند، سفارشی میکنید.
درخواست ها را با استفاده از شرایط سفارشی کنید
در این بخش، شرایطی را برای هر گزینه ای که کاربر می تواند انتخاب کند، اضافه می کند و برای هر شرط یک درخواست سفارشی اضافه می کند.
ثروت dragon
را سفارشی کنید
برای بهروزرسانی شرایط و سفارشی کردن درخواست زمانی که کاربر «dragon» را انتخاب میکند، این مراحل را دنبال کنید:
- روی Develop در نوار ناوبری کلیک کنید.
- در نوار پیمایش، روی صحنه Fortune کلیک کنید.
- روی
scene.slots.status == "FINAL"
کلیک کنید تا پنجره گزینه ها باز شود. - عبارت شرط را به روز رسانی کنید:
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
- Send prompts را انتخاب کنید.
- درخواست را با فورچون زیر در ویرایشگر کد به روز کنید:
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.
- روی ذخیره کلیک کنید.
اکنون، وقتی کاربر میگوید «اژدها» یا چیزی که شبیه به آن به نظر میرسد، Action شما بر اساس آن انتخاب، ثروتی را فراهم میکند. بعد، دو انتخاب باقی مانده را اضافه می کنید.
ثروت translator
را سفارشی کنید
برای افزودن شرط و سفارشی کردن درخواست زمانی که کاربر «مترجم» را انتخاب میکند، این مراحل را دنبال کنید:
- روی + (علامت بعلاوه) در کنار Condition کلیک کنید.
-
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
به قسمت other if اضافه کنید. - Send prompts را انتخاب کنید.
- دستور زیر را در ویرایشگر کد خود اضافه کنید:
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
را سفارشی کنید
برای اضافه کردن شرط و سفارشی کردن درخواست زمانی که کاربر «قطبنما» را انتخاب میکند، این مراحل را دنبال کنید:
- روی + (علامت بعلاوه) در کنار Condition کلیک کنید.
- اضافه کردن
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
را به جعبه متن دیگری if . - Send prompts را انتخاب کنید.
- دستور زیر را در ویرایشگر کد اضافه کنید:
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.
- روی ذخیره کلیک کنید.
اکشن خود را در شبیه ساز تست کنید
در این مرحله، Action شما باید بر اساس گزینه ای که کاربر انتخاب می کند، یک ثروت سفارشی برای کاربر فراهم کند.
برای آزمایش Action خود، این مراحل را دنبال کنید:
- در نوار پیمایش، روی تست کلیک کنید.
-
Talk to my test app
در قسمت Input تایپ کنید وEnter
فشار دهید. -
Yes
را در قسمت Input تایپ کرده وEnter
فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید. - کلیک کنید، تایپ کنید، یا بگویید
Translator
.
شما باید ثروت مناسب برای گزینه "مترجم" دریافت کنید.
3. حلقه بازی را اضافه کنید
در این بخش Action خود را به گونه ای پیکربندی می کنید که کاربر بتواند گزینه دیگری را انتخاب کند و پس از انتخاب، فال متفاوتی را بشنود. این تغییر شبیه به "آیا می خواهید دوباره بازی کنید؟" پیام در پایان بازی برای ساخت این حلقه، میتوانید از intentهای yes
و no
که قبلاً ایجاد شدهاند، دوباره استفاده کنید و آنها را به صحنه جدیدی به نام Again
اضافه کنید.
ایجاد Again
صحنه
در این بخش، یک صحنه Again
جدید ایجاد میکنید و یک اعلان اضافه میکنید که از کاربر میپرسد آیا مایل است گزینه دیگری را انتخاب کند.
برای ایجاد صحنه Again
مراحل زیر را دنبال کنید:
- روی Develop در نوار ناوبری کلیک کنید.
- روی + (علامت بعلاوه) در زیر صحنه ها کلیک کنید.
-
Again
تایپ کنید وEnter
را فشار دهید. - روی صحنه
Again
در نوار پیمایش کلیک کنید. - روی + (علامت بعلاوه) در کنار On enter کلیک کنید.
- درخواستهای ارسال را انتخاب کنید و تراشههای درخواست و پیشنهاد زیر را اضافه کنید:
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
را در قسمت Transition انتخاب کنید. - روی ذخیره کلیک کنید.
- روی شرط دوم کلیک کنید تا پنجره گزینه ها باز شود.
- اسکرول کنید و
Again
را در قسمت Transition انتخاب کنید. - روی ذخیره کلیک کنید.
- روی شرط سوم کلیک کنید تا پنجره گزینه ها باز شود.
- اسکرول کنید و
Again
را در قسمت Transition انتخاب کنید. - روی ذخیره کلیک کنید.
اکشن خود را در شبیه ساز تست کنید
در این مرحله، Action شما باید پس از دریافت ثروت کاربر، اعلان زیر را در اختیار کاربر قرار دهد: "این چیزی است که من برای شما می بینم. آیا می خواهید گزینه دیگری را انتخاب کنید و آینده دیگری را کشف کنید؟"
برای آزمایش Action خود، این مراحل را دنبال کنید:
- در نوار پیمایش، روی تست کلیک کنید.
-
Talk to my test app
در قسمت Input تایپ کنید وEnter
فشار دهید. -
Yes
را در قسمت Input تایپ کرده وEnter
فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید. - کلیک کنید، تایپ کنید، یا بگویید
dragon
.
شما باید شانس گزینه اژدها و اعلان Again
را دریافت کنید.
اضافه کردن مقاصد و انتقال به صحنه Again
در این بخش، قصدهای yes
و no
را به صحنه Again
اضافه می کنید تا Action شما متوجه شود که کاربر می خواهد گزینه جدیدی را انتخاب کند یا خیر. شما همچنین انتقال های مناسب را برای intent های yes
و no
اضافه می کنید. قصد yes
به صحنه Fortune
منتقل می شود، در حالی که قصد no
به صحنه سیستم انتقال می یابد End conversation
.
برای افزودن intent و انتقال به صحنه Again
، این مراحل را دنبال کنید:
- روی Develop در نوار ناوبری کلیک کنید.
- روی صحنه
Again
کلیک کنید. - روی + (علامت بعلاوه) در کنار مدیریت قصد کاربر کلیک کنید.
- از منوی کشویی intent گزینه yes را انتخاب کنید.
- از منوی کشویی Transition
Fortune
انتخاب کنید. - روی ذخیره کلیک کنید.
- روی + (علامت بعلاوه) در کنار مدیریت قصد کاربر کلیک کنید.
- از منوی کشویی intent گزینه no را انتخاب کنید.
- پایان مکالمه را از منوی کشویی Transition انتخاب کنید.
- Send prompts را انتخاب کنید و دستور زیر را در ویرایشگر کد اضافه کنید:
candidates:
- first_simple:
variants:
- speech: >-
It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
- روی ذخیره کلیک کنید.
اکشن خود را در شبیه ساز تست کنید
اکنون Action شما باید متوجه شود که آیا کاربر میخواهد گزینه جدیدی را انتخاب کند یا مکالمه را پایان دهد.
برای آزمایش قصد yes
، مراحل زیر را دنبال کنید:
- در نوار پیمایش، روی تست کلیک کنید.
-
Talk to my test app
در قسمت Input تایپ کنید وEnter
فشار دهید. -
Yes
را در قسمت Input تایپ کرده وEnter
فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید. - یکی از گزینه ها را کلیک کنید، تایپ کنید یا بگویید.
-
Yes
را در قسمت Input تایپ کرده وEnter
فشار دهید.
شما باید این پیام را دریافت کنید، "چه چیزی را برای کمک به شما در تلاش خود انتخاب می کنید، یک اژدها، یک مترجم یا یک قطب نما؟"
برای تست no
intent مراحل زیر را دنبال کنید:
- یکی از گزینه ها را کلیک کنید، تایپ کنید یا بگویید.
-
No
را در قسمت ورودی تایپ کنید وEnter
فشار دهید.
شما باید اعلان End conversation
را دریافت کنید: "خوشحالم که از انتخاب خود راضی هستید. در تلاشتان موفق باشید. خداحافظ."
4. یک مسیر پشتیبانی اضافه کنید
شما اکنون مسیر اصلی را که اکثر کاربران در Action خود طی می کنند ساخته اید. با این حال، کاربر میتواند به درخواست صحنه Fortune
پاسخ دهد، " چه چیزی را برای کمک به شما در تلاش خود انتخاب میکنید، یک اژدها، یک مترجم یا یک قطب نما؟" ، با انتخابی که جزو گزینه های ارائه شده نیست.
در این بخش، Action خود را به گونهای پیکربندی میکنید که بفهمد کاربر چه زمانی «جادو»، «پول»، «اسب» یا «تلفن» را انتخاب میکند، و از کاربر میخواهد که یکی از سه گزینه اصلی را هنگام انتخاب یکی از این گزینهها انتخاب کند. برای پیکربندی این منطق، باید یک type
جدید ایجاد کنید که شامل این انتخابهای دیگر و یک intent جدید، other_option
باشد، که وقتی کاربر یکی از این گزینهها را میگوید مطابقت دارد. همچنین باید عبارات آموزشی را در intent other_option
برای شناسایی و استخراج پارامترهای intent حاشیه نویسی کنید .
وقتی موتور پردازش زبان طبیعی (NLU) دستیار یک تطابق پارامتر را در ورودی کاربر تشخیص میدهد، مقدار را به عنوان یک پارامتر تایپ شده استخراج میکند تا بتوانید منطق را با آن در یک صحنه انجام دهید. در این لبه کد، Action خود را برای استخراج کمکی که کاربر انتخاب می کند پیکربندی می کنید و در یک اعلان به آن انتخاب مراجعه می کنید.
نوع unavailable_options
ایجاد کنید
اکنون میتوانید یک نوع unavailable_options
ایجاد کنید که حاوی گزینههای مختلف باشد تا Action شما بتواند آن دادهها را در ورودی کاربر شناسایی کند.
برای ایجاد نوع unavailable_options
، مراحل زیر را دنبال کنید:
- روی Develop در نوار ناوبری کلیک کنید.
- روی + (علامت به علاوه) در زیر Types کلیک کنید.
-
unavailable_options
را تایپ کرده وEnter
فشار دهید. - روی
unavailable_options
کلیک کنید تا گزینه ها باز شوند. - ورودیهای زیر و مقادیر مربوطه را در بخش افزودن ورودیها وارد کنید:
| |
| |
| |
| |
جدول کلید-مقدار شما باید به شکل زیر باشد:
- روی ذخیره کلیک کنید.
قصد other_option
ایجاد کنید
بعد، یک intent به نام other_option
ایجاد میکنید و عبارات آموزشی را اضافه میکنید که شامل گزینههای نوع unavailable_options
میشود. این هدف زمانی مطابقت داده می شود که کاربر انتخابی را که در نوع unavailable_options
قرار دارد انتخاب کند.
برای ایجاد و پیکربندی intent other_option
، این مراحل را دنبال کنید:
- روی + (علامت بعلاوه) در زیر Custom Intents کلیک کنید.
-
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 همانطور که در تصویر زیر نشان داده شده است به طور خودکار یک پارامتر intent را در قسمت Add intent parameters اضافه می کند.
پارامتر intent به شما امکان می دهد نام گزینه را استخراج کنید و از آن گزینه در یک درخواست استفاده کنید.
قصد other_option
را به صحنه Fortune
اضافه کنید
شما اکنون یک intent، other_option
دارید، که می تواند کاربر را انتخاب کند که یکی از گزینه های اصلی نیست. در این قسمت، intent other_option
را به صحنه Fortune
اضافه می کنید. شما از پارامتر intent برای سفارشی کردن اعلان بر اساس ورودی کاربر استفاده می کنید.
برای افزودن intent other_option
به صحنه Fortune
، این مراحل را دنبال کنید:
- روی صحنه Fortune کلیک کنید.
- روی + (علامت بعلاوه) در کنار مدیریت قصد کاربر کلیک کنید.
- از منوی کشویی intent
other_option
را انتخاب کنید. - Send prompts را انتخاب کنید و دستور زیر را اضافه کنید:
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
به ورودی خامی که کاربر مشخص می کند اشاره دارد.
- روی ذخیره کلیک کنید.
وقتی کاربر در صحنه Fortune
گزینهای را در نوع unavailable_options
میگوید، هدف other_option
مطابقت داده میشود و یک درخواست به صف درخواست اضافه میکند. از آنجایی که هیچ انتقالی مشخص نشده است، حلقه اجرای صحنه با ارزیابی مجدد مرحله شرایط ادامه می یابد. سپس شیار chosenOptions
دستور خود را به صف درخواست اضافه می کند و صف درخواست به کاربر تحویل داده می شود.
اکشن خود را در شبیه ساز تست کنید
اکنون زمانی که کاربر یکی از گزینه های فهرست شده در نوع unavailable_options
را انتخاب می کند و مشخص می کند که کاربر کدام کمک را انتخاب کرده است، Action شما باید پاسخ مناسبی بدهد. سپس Action شما باید از کاربر بخواهد که یکی از گزینه های اصلی (اژدها، مترجم یا قطب نما) را انتخاب کند.
برای آزمایش Action خود در شبیه ساز، مراحل زیر را دنبال کنید:
- در نوار پیمایش، روی تست کلیک کنید.
-
Talk to my test app
در قسمت Input تایپ کنید وEnter
فشار دهید. -
Yes
را در قسمت Input تایپ کرده وEnter
فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید. -
magic
را در قسمت Input تایپ کنید وEnter
فشار دهید.
ممکن است متوجه شوید که وقتی کاربر "جادو" را انتخاب می کند، به دلیل مقاله "a" که قبل از آن قرار داده شده است، اعلان درست به نظر نمی رسد. شما در بخش های بعدی به این موضوع می پردازید.
کنترل کننده unavailable_options
اضافه کنید
برای قرار دادن مقاله "a" قبل از انتخاب های مناسب از نوع unavailable_options
، می توانید یک کنترل کننده رویداد را در منطق تحقق خود پیکربندی کنید تا بررسی کنید آیا گزینه ای که کاربر انتخاب می کند به یک "a" قبل از آن نیاز دارد یا خیر. ابتدا باید Action خود را برای فراخوانی کنترل کننده در کنسول پیکربندی کنید.
برای اضافه کردن کنترل کننده unavailable_options
، این مراحل را دنبال کنید:
- روی Develop در نوار ناوبری کلیک کنید.
- روی صحنه
Fortune
کلیک کنید. - در قسمت User intent handling ، روی When other_option مطابقت دارد کلیک کنید تا پنجره باز شود.
- کادر بررسی Send prompts را پاک کنید.
- چک باکس Call your webhook را انتخاب کنید.
-
unavailable_options
در کادر متنی برای کنترل کننده رویداد وارد کنید.
- روی ذخیره کلیک کنید.
به روز رسانی و استقرار تکمیل
اکنون که Action خود را برای فراخوانی رویداد 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');
- روی Save Fulfillment کلیک کنید.
- روی Deploy Fulfillment کلیک کنید. هنگامی که استقرار کامل شد، پیامی در بالای ویرایشگر شما به این مضمون که استقرار عملکرد ابری شما بهروز است.
کد را درک کنید
کنترل کننده unavailable_options
کارهای زیر را انجام می دهد:
- داده های
option
را از شیconv
دریافت می کند وoption
به ویژگیoriginal
، که ورودی خام کاربر است، اختصاص می دهد. -
optionKey
به ویژگیresolved
اختصاص می دهد، که کلید نوعunavailable_options
است. - بررسی می کند که
optionKey
یکی از گزینه هایی است که به "a" نیاز دارد یا خیر. اگر باشد، پیام را با یک "a" اضافه می سازد. - پیام را از طریق
conv.add(message)
اضافه می کند
اکشن خود را در شبیه ساز تست کنید
Action شما اکنون باید درخواست را بر اساس اینکه انتخاب کاربر از نوع unavailable_options
نیاز به یک مقاله "a" قبل از آن دارد تنظیم کند.
برای آزمایش Action خود، این مراحل را دنبال کنید:
- در نوار پیمایش، روی تست کلیک کنید.
-
Talk to my test app
در قسمت Input کلیک کنید یا تایپ کنید وEnter
فشار دهید. -
Yes
را در قسمت Input تایپ کرده وEnter
فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید. -
magic
را در قسمت Input تایپ کنید وEnter
فشار دهید. -
horse
در قسمت Input تایپ کنید وEnter
فشار دهید.
اکشن شما باید مقاله "a" را قبل از انتخاب "اسب" اضافه کند، در حالی که دستور را بدون مقاله "a" برای انتخاب "جادویی" می سازد.
پروژه خود را تمیز کنید [توصیه می شود]
برای جلوگیری از تحمیل هزینه های احتمالی، توصیه می شود پروژه هایی را که قصد استفاده از آنها را ندارید حذف کنید. برای حذف پروژه هایی که در این کد لبه ایجاد کرده اید، مراحل زیر را دنبال کنید:
- برای حذف پروژه Cloud و منابع، مراحل ذکر شده در بخش Shutting down (حذف) پروژه ها را کامل کنید.
- اختیاری: برای حذف فوری پروژه از کنسول Actions، به حذف پروژه مراجعه کنید. اگر این مرحله را کامل نکنید، پروژه شما پس از تقریباً 30 روز به طور خودکار حذف خواهد شد.
5. تبریک!
اکنون مهارتهای متوسط لازم برای ایجاد Actions برای Google Assistant را پوشش دادهاید.
آنچه شما پوشش داده اید
- نحوه توسعه کنش های مکالمه با استفاده از کتابخانه تکمیل Node.js
- نحوه استفاده از اسلات ها برای جمع آوری داده ها از کاربر
- نحوه استفاده از شرایط برای افزودن منطق به صحنه
- چگونه یک حلقه بازی اضافه کنیم
- نحوه اضافه کردن یک مسیر پشتیبانی
بیشتر بدانید
منابع زیر را کاوش کنید تا درباره ساخت Actions برای Google Assistant اطلاعات بیشتری کسب کنید:
- اسنادی برای توسعه Actions for Google Assistant
- اقدامات در صفحه Google GitHub برای کد نمونه و کتابخانه ها
- انجمن رسمی Reddit برای توسعه دهندگانی که با Google Assistant کار می کنند
- دستورالعملهای طراحی مکالمه برای بهترین شیوهها و دستورالعملهای مربوط به اقدامات مکالمه
@ActionsOnGoogle را در توییتر دنبال کنید تا با آخرین اعلانهای ما همراه باشید و برای #AoGDevs توییت کنید تا آنچه ساختهاید به اشتراک بگذارید!
نظرسنجی بازخورد
قبل از رفتن، لطفاً یک نظرسنجی مختصر در مورد تجربه خود پر کنید.