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"
را به کادر متنی دیگری اضافه کنید. - 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 باید عبارات آموزشی را در intent other_option
حاشیه نویسی کنید.
هنگامی که موتور پردازش زبان طبیعی (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
را فشار دهید. - در قسمت Input عبارت
horse
تایپ کرده و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 توییت کنید تا آنچه ساختهاید به اشتراک بگذارید!
نظرسنجی بازخورد
قبل از رفتن، لطفا یک نظرسنجی مختصر در مورد تجربه خود پر کنید.