Build Actions برای Google Assistant با استفاده از Actions Builder (سطح 2)

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 برای یک کاربر بازگشتی شبیه تعامل زیر است:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

چیزی که یاد خواهید گرفت

  • نحوه استفاده از اسلات ها برای جمع آوری داده ها از کاربر
  • نحوه استفاده از شرایط برای افزودن منطق به صحنه
  • چگونه یک حلقه بازی اضافه کنیم
  • نحوه اضافه کردن یک مسیر پشتیبانی

آنچه شما نیاز دارید

پیش نیازهای این کد لبه شامل موارد زیر است:

آشنایی با جاوا اسکریپت (ES6) اکیداً توصیه می‌شود، اگرچه لازم نیست، برای درک کد تکمیلی این کد لبه.

2. به ساخت رابط مکالمه ادامه دهید

در اولین کد لبه ، شما یک اکشن مکالمه ساده با یک صحنه، Start ایجاد کردید.

در این لبه کد، مکالمه Action خود را گسترش می دهید. در بخش های زیر، Action خود را برای انجام موارد زیر پیکربندی می کنید:

  • زمانی که کاربر می‌خواهد بخت خود را بشنود، به صحنه جدید Fortune بروید
  • از کاربر بپرسید که کدام کمک را می‌خواهد برای سفر خود انتخاب کند
  • یک ثروت سفارشی بر اساس انتخاب کاربر ارائه دهید

صحنه Fortune را ایجاد کنید

در این بخش، صحنه Fortune را ایجاد می کنید و نحوه انتقال کاربر به آن را در طول مکالمه تعریف می کنید.

برای ایجاد یک صحنه جدید به نام Fortune مراحل زیر را دنبال کنید:

  1. پروژه اقدامات سطح 1 خود را باز کنید.
  2. روی Develop در نوار ناوبری کلیک کنید.
  3. در زیر صحنه‌ها ، روی صحنه شروع کلیک کنید.
  4. روی Yes intent (کادر When yes is matched ) کلیک کنید تا گزینه ها باز شوند.
  5. برای حذف درخواست، دستورهای ارسال را پاک کنید.
  6. در بخش Transition ، روی منوی کشویی کلیک کنید، در کادر متن کلیک کنید و Fortune تایپ کنید.
  7. روی افزودن کلیک کنید. این یک صحنه جدید به نام Fortune ایجاد می کند. همچنین زمانی که کاربر می خواهد طالع خود را بشنود، یک انتقال از صحنه Start به صحنه Fortune اضافه می کند.

56682a0c7459b98c.png

منطق مکالمه را برای صحنه Fortune تعریف کنید

در این کد لبه، شما صحنه Fortune خود را طوری پیکربندی می‌کنید که از کاربر بپرسید: " چه چیزی را برای کمک به شما در تلاش خود انتخاب می‌کنید، یک اژدها، یک مترجم یا یک قطب نما؟" شما می توانید از قابلیتی به نام slot filling برای جمع آوری اطلاعات لازم از کاربر قبل از ادامه استفاده کنید.

اکشن شما ثروتی برای سه کمک فراهم می کند: اژدها، مترجم و قطب نما. برای پیکربندی Action خود برای شناسایی این سه گزینه در ورودی کاربر، باید یک نوع جدید ایجاد کنید.

می‌توانید از انواع در مرحله پر کردن شکاف صحنه برای تعریف اطلاعاتی که از کاربر می‌خواهید استفاده کنید. هنگامی که موتور NLU تطابق اسلات را در ورودی کاربر تشخیص می‌دهد، شکاف را به عنوان یک پارامتر تایپ شده استخراج می‌کند، بنابراین می‌توانید منطق را با آن در یک صحنه انجام دهید.

نوع available_options ایجاد کنید

در این بخش، یک نوع جدید به نام available_options ایجاد می‌کنید که سه گزینه را که کاربران می‌توانند انتخاب کنند (اژدها، مترجم و قطب‌نما) را در پاسخ به درخواست مشخص می‌کند. شما همچنین چند مترادف برای این گزینه ها تعریف می کنید در صورتی که کاربر چیزی مشابه را بگوید. در بخش بعدی، نوع available_options را به یک اسلات اضافه می‌کنید تا مشخص کنید که می‌خواهید انتخاب کاربر را به دست آورید.

برای ایجاد نوع available_options ، مراحل زیر را دنبال کنید:

  1. در نوار پیمایش، روی Types کلیک کنید.
  2. روی + (علامت به علاوه) کلیک کنید، available_options تایپ کنید و Enter فشار دهید.
  3. روی available_options کلیک کنید تا گزینه ها باز شوند.

نوع ها به صورت جفت اطلاعات کلید-مقدار پیکربندی می شوند، جایی که کلید نام نوع و مقادیر مترادف آن کلید هستند. وقتی کلید را تعریف می کنید، به طور خودکار به عنوان یک مقدار اضافه می شود.

برای افزودن سه گزینه ای که کاربر می تواند انتخاب کند، این مراحل را دنبال کنید:

  1. به بخش افزودن ورودی ها بروید.
  2. در قسمت New entry ، عبارت dragon را تایپ کرده و Enter فشار دهید. این عمل یک کلید dragon ایجاد می کند.
  3. hydra در قسمت Add values تایپ کنید و Enter فشار دهید تا آن را به عنوان یک مقدار (مترادف) اضافه کنید. سپس، این مرحله را برای ارزش lizard تکرار کنید.
  4. بقیه کلیدها و مقادیر مربوطه را اضافه کنید:
  • translator | translator ، communicator ، machine ، decoder ، translate
  • compass | compass ، direction ، guide

8333b1b67445f21.png

  1. روی ذخیره کلیک کنید.

اکنون Action شما می‌داند که available_options اژدها، مترجم و قطب‌نما هستند و می‌توانند چند مترادف مربوطه را نیز تشخیص دهند.

پر کردن اسلات را پیکربندی کنید

در مرحله بعد، باید پر کردن اسلات را در صحنه Fortune پیکربندی کنید. برای پیکربندی منطق پر کردن شکاف، مراحل زیر را دنبال کنید:

  1. در نوار پیمایش، در زیر صحنه‌ها ، روی Fortune کلیک کنید.
  2. در صحنه Fortune ، روی + (علامت بعلاوه) برای پر کردن شکاف کلیک کنید.
  3. در قسمت Enter Slot name ، chosenOptions به عنوان نام اسلات اضافه کنید.
  4. در لیست کشویی Select type ، available_options به عنوان نوع اسلات انتخاب کنید.
  5. کادر این اسلات الزامی است را انتخاب کنید.

a461b906476e244.png

  1. پیام‌های ارسال را انتخاب کنید و تراشه‌های پیام و پیشنهاد زیر را اضافه کنید:
candidates:
  - first_simple:
      variants:
        - speech: >-
            What do you choose to help you on your quest, a dragon, a
            translator, or a compass?
    suggestions:
      - title: 'Dragon'
      - title: 'Translator'
      - title: 'Compass'
  1. روی ذخیره کلیک کنید.

اکنون نوع available_options را به شکاف اضافه کرده‌اید، که اطلاعاتی را که باید قبل از ادامه از کاربر (انتخاب کمک او) جمع‌آوری کنید، به Action شما می‌گوید. شما همچنین یک اعلان را در اسلات پیکربندی کرده‌اید که وقتی کاربر به مرحله پر کردن اسلات صحنه می‌رسد به صف اعلان اضافه می‌شود.

توجه داشته باشید که وقتی اسلات chosenOptions ، فیلد بازگردانی مقدار اسلات سفارشی با همین نام به روز می شود ( $session.params.chosenOptions ). شما می توانید با آن نام در Actions Builder و در تکمیل خود از طریق کتابخانه مشتری به این پارامتر دسترسی داشته باشید.

پیکربندی scene.slots.status == "FINAL"

هنگامی که یک اسلات اضافه می کنید، شرط scene.slots.status == "FINAL" به طور خودکار به لیست شرایط اضافه می شود.

شرط scene.slots.status == "FINAL" تکمیل شدن شکاف را بررسی می کند. هنگامی که همه شکاف ها پر شدند، این شرایط می تواند یک وب هوک را ایجاد کند، به یک صحنه جدید منتقل شود، یا دستورهایی را به صف اعلان اضافه کند.

در این بخش، scene.slots.status == "FINAL" را پیکربندی می‌کنید تا پس از پر شدن شکاف‌ها، یک درخواست به صف درخواست اضافه کنید.

برای افزودن این دستور به شرط FINAL ، مراحل زیر را دنبال کنید:

  1. روی scene.slots.status == "FINAL" کلیک کنید تا پنجره گزینه ها باز شود.
  2. Send prompts را انتخاب کنید و دستور زیر را اضافه کنید:
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. روی ذخیره کلیک کنید.

اکشن خود را در شبیه ساز تست کنید

در این مرحله، شما تعریف کرده اید که کاربر کدام گزینه را برای پر کردن شکاف انتخاب کند. پس از دریافت این اطلاعات از کاربر، Action شما باید به گزینه خاصی که انتخاب کرده است اشاره کند.

برای آزمایش Action خود، این مراحل را دنبال کنید:

  1. در نوار پیمایش، روی تست کلیک کنید.
  2. Talk to my test app در قسمت Input کلیک کنید یا تایپ کنید و Enter فشار دهید.
  3. Yes را در قسمت Input تایپ کرده و Enter فشار دهید. (در روش دیگر، می توانید روی تراشه پیشنهاد بله کلیک کنید.)

a899d45c542668f6.png

  1. کلیک کنید، تایپ کنید، یا بگویید dragon . شما باید اعلان "شما اژدها را انتخاب کردید" دریافت کنید.

در بخش بعدی، درخواست‌ها را برای هر کمکی که کاربر می‌تواند انتخاب کند، سفارشی می‌کنید.

درخواست ها را با استفاده از شرایط سفارشی کنید

در این بخش، شرایطی را برای هر گزینه ای که کاربر می تواند انتخاب کند، اضافه می کند و برای هر شرط یک درخواست سفارشی اضافه می کند.

ثروت dragon را سفارشی کنید

برای به‌روزرسانی شرایط و سفارشی کردن درخواست زمانی که کاربر «dragon» را انتخاب می‌کند، این مراحل را دنبال کنید:

  1. روی Develop در نوار ناوبری کلیک کنید.
  2. در نوار پیمایش، روی صحنه Fortune کلیک کنید.
  3. روی scene.slots.status == "FINAL" کلیک کنید تا پنجره گزینه ها باز شود.
  4. عبارت شرط را به روز رسانی کنید: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
  5. Send prompts را انتخاب کنید.
  6. درخواست را با فورچون زیر در ویرایشگر کد به روز کنید:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The people of Gryffinberg will be awestruck by the beauty and power
            of the ancient dragon. Much to your dismay, the townspeople fall
            into dispute over who will receive the honor of riding the dragon
            first. You return home from your quest without everlasting glory or
            a dragon.
  1. روی ذخیره کلیک کنید.

d31767232ad908bd.png

اکنون، وقتی کاربر می‌گوید «اژدها» یا چیزی که شبیه به آن به نظر می‌رسد، Action شما بر اساس آن انتخاب، ثروتی را فراهم می‌کند. بعد، دو انتخاب باقی مانده را اضافه می کنید.

ثروت translator را سفارشی کنید

برای افزودن شرط و سفارشی کردن درخواست زمانی که کاربر «مترجم» را انتخاب می‌کند، این مراحل را دنبال کنید:

  1. روی + (علامت بعلاوه) در کنار Condition کلیک کنید.
  2. scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" به قسمت other if اضافه کنید.
  3. Send prompts را انتخاب کنید.
  4. دستور زیر را در ویرایشگر کد خود اضافه کنید:
candidates:
  - first_simple:
      variants:
        - speech: >-
            With the help of the translator, the rival factions in Gryffinberg
            are finally able to communicate with each other and resolve their
            disputes. You will complete your quest to restore peace in the town.
            The translator will be used on many subsequent journeys across the
            earth. After its work is done, it retires honorably to a premier
            location in the Gryffinberg History Museum.
  1. روی ذخیره کلیک کنید.

c1af65e70dbf3dfe.png

ثروت compass را سفارشی کنید

برای اضافه کردن شرط و سفارشی کردن درخواست زمانی که کاربر «قطب‌نما» را انتخاب می‌کند، این مراحل را دنبال کنید:

  1. روی + (علامت بعلاوه) در کنار Condition کلیک کنید.
  2. اضافه کردن scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" را به جعبه متن دیگری if .
  3. Send prompts را انتخاب کنید.
  4. دستور زیر را در ویرایشگر کد اضافه کنید:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The compass will help you find the mystical and ancient Library of
            Gryffinberg. Among its infinite stacks of dusty books, you find one
            entitled "Wisdom of the Ages". By the time you've read the
            50,000-page tome, the townspeople have forgotten their problems. You
            will write a second edition of "Wisdom of the Ages", but have
            limited commercial success.
  1. روی ذخیره کلیک کنید.

اکشن خود را در شبیه ساز تست کنید

در این مرحله، Action شما باید بر اساس گزینه ای که کاربر انتخاب می کند، یک ثروت سفارشی برای کاربر فراهم کند.

برای آزمایش Action خود، این مراحل را دنبال کنید:

  1. در نوار پیمایش، روی تست کلیک کنید.
  2. Talk to my test app در قسمت Input تایپ کنید و Enter فشار دهید.
  3. Yes را در قسمت Input تایپ کرده و Enter فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید.
  4. کلیک کنید، تایپ کنید، یا بگویید Translator .

29e17f950bd0dd71.png

شما باید ثروت مناسب برای گزینه "مترجم" دریافت کنید.

3. حلقه بازی را اضافه کنید

در این بخش Action خود را به گونه ای پیکربندی می کنید که کاربر بتواند گزینه دیگری را انتخاب کند و پس از انتخاب، فال متفاوتی را بشنود. این تغییر شبیه به "آیا می خواهید دوباره بازی کنید؟" پیام در پایان بازی برای ساخت این حلقه، می‌توانید از intent‌های yes و no که قبلاً ایجاد شده‌اند، دوباره استفاده کنید و آنها را به صحنه جدیدی به نام Again اضافه کنید.

ایجاد Again صحنه

در این بخش، یک صحنه Again جدید ایجاد می‌کنید و یک اعلان اضافه می‌کنید که از کاربر می‌پرسد آیا مایل است گزینه دیگری را انتخاب کند.

برای ایجاد صحنه Again مراحل زیر را دنبال کنید:

  1. روی Develop در نوار ناوبری کلیک کنید.
  2. روی + (علامت بعلاوه) در زیر صحنه ها کلیک کنید.
  3. Again تایپ کنید و Enter را فشار دهید.
  4. روی صحنه Again در نوار پیمایش کلیک کنید.
  5. روی + (علامت بعلاوه) در کنار On enter کلیک کنید.
  6. درخواست‌های ارسال را انتخاب کنید و تراشه‌های درخواست و پیشنهاد زیر را اضافه کنید:
candidates:
  - first_simple:
      variants:
        - speech: >-
            That is what I see for you. Would you like to choose a different option and
            explore another future?
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. روی ذخیره کلیک کنید.

انتقال از Fortune به Again صحنه را اضافه کنید

پس از اینکه کاربر ثروت خود را دریافت کرد، مکالمه باید به صحنه جدید Again منتقل شود.

برای اضافه کردن یک انتقال از صحنه Fortune به صحنه Again ، این مراحل را دنبال کنید:

  1. روی صحنه Fortune کلیک کنید.
  2. روی شرط اول کلیک کنید ( scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" ) تا پنجره گزینه ها باز شود.
  3. اسکرول کنید و Again را در قسمت Transition انتخاب کنید.
  4. روی ذخیره کلیک کنید.
  5. روی شرط دوم کلیک کنید تا پنجره گزینه ها باز شود.
  6. اسکرول کنید و Again را در قسمت Transition انتخاب کنید.
  7. روی ذخیره کلیک کنید.
  8. روی شرط سوم کلیک کنید تا پنجره گزینه ها باز شود.
  9. اسکرول کنید و Again را در قسمت Transition انتخاب کنید.
  10. روی ذخیره کلیک کنید.

اکشن خود را در شبیه ساز تست کنید

در این مرحله، Action شما باید پس از دریافت ثروت کاربر، اعلان زیر را در اختیار کاربر قرار دهد: "این چیزی است که من برای شما می بینم. آیا می خواهید گزینه دیگری را انتخاب کنید و آینده دیگری را کشف کنید؟"

برای آزمایش Action خود، این مراحل را دنبال کنید:

  1. در نوار پیمایش، روی تست کلیک کنید.
  2. Talk to my test app در قسمت Input تایپ کنید و Enter فشار دهید.
  3. Yes را در قسمت Input تایپ کرده و Enter فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید.
  4. کلیک کنید، تایپ کنید، یا بگویید dragon .

b299e9fed9aedb69.png

شما باید شانس گزینه اژدها و اعلان Again را دریافت کنید.

اضافه کردن مقاصد و انتقال به صحنه Again

در این بخش، قصدهای yes و no را به صحنه Again اضافه می کنید تا Action شما متوجه شود که کاربر می خواهد گزینه جدیدی را انتخاب کند یا خیر. شما همچنین انتقال های مناسب را برای intent های yes و no اضافه می کنید. قصد yes به صحنه Fortune منتقل می شود، در حالی که قصد no به صحنه سیستم انتقال می یابد End conversation .

برای افزودن intent و انتقال به صحنه Again ، این مراحل را دنبال کنید:

  1. روی Develop در نوار ناوبری کلیک کنید.
  2. روی صحنه Again کلیک کنید.
  3. روی + (علامت بعلاوه) در کنار مدیریت قصد کاربر کلیک کنید.
  4. از منوی کشویی intent گزینه yes را انتخاب کنید.
  5. از منوی کشویی Transition Fortune انتخاب کنید.
  6. روی ذخیره کلیک کنید.

c2efba35ea881b0d.png

  1. روی + (علامت بعلاوه) در کنار مدیریت قصد کاربر کلیک کنید.
  2. از منوی کشویی intent گزینه no را انتخاب کنید.
  3. پایان مکالمه را از منوی کشویی Transition انتخاب کنید.
  4. Send prompts را انتخاب کنید و دستور زیر را در ویرایشگر کد اضافه کنید:
candidates:
  - first_simple:
      variants:
        - speech: >-
            It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
  1. روی ذخیره کلیک کنید.

اکشن خود را در شبیه ساز تست کنید

اکنون Action شما باید متوجه شود که آیا کاربر می‌خواهد گزینه جدیدی را انتخاب کند یا مکالمه را پایان دهد.

برای آزمایش قصد yes ، مراحل زیر را دنبال کنید:

  1. در نوار پیمایش، روی تست کلیک کنید.
  2. Talk to my test app در قسمت Input تایپ کنید و Enter فشار دهید.
  3. Yes را در قسمت Input تایپ کرده و Enter فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید.
  4. یکی از گزینه ها را کلیک کنید، تایپ کنید یا بگویید.
  5. Yes را در قسمت Input تایپ کرده و Enter فشار دهید.

5d0690332efe2e29.png

شما باید این پیام را دریافت کنید، "چه چیزی را برای کمک به شما در تلاش خود انتخاب می کنید، یک اژدها، یک مترجم یا یک قطب نما؟"

برای تست no intent مراحل زیر را دنبال کنید:

  1. یکی از گزینه ها را کلیک کنید، تایپ کنید یا بگویید.
  2. 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 ، مراحل زیر را دنبال کنید:

  1. روی Develop در نوار ناوبری کلیک کنید.
  2. روی + (علامت به علاوه) در زیر Types کلیک کنید.
  3. unavailable_options را تایپ کرده و Enter فشار دهید.
  4. روی unavailable_options کلیک کنید تا گزینه ها باز شوند.
  5. ورودی‌های زیر و مقادیر مربوطه را در بخش افزودن ورودی‌ها وارد کنید:

horse

horse ، stallion ، steed

magic

magic ، enchanted ، spells

money

money ، cash ، gold

phone

phone ، cell ، apps

جدول کلید-مقدار شما باید به شکل زیر باشد:

c9e119e0f5fb2a47.png

  1. روی ذخیره کلیک کنید.

قصد other_option ایجاد کنید

بعد، یک intent به نام other_option ایجاد می‌کنید و عبارات آموزشی را اضافه می‌کنید که شامل گزینه‌های نوع unavailable_options می‌شود. این هدف زمانی مطابقت داده می شود که کاربر انتخابی را که در نوع unavailable_options قرار دارد انتخاب کند.

برای ایجاد و پیکربندی intent other_option ، این مراحل را دنبال کنید:

  1. روی + (علامت بعلاوه) در زیر Custom Intents کلیک کنید.
  2. other_option را تایپ کرده و Enter فشار دهید.
  3. روی other_option کلیک کنید تا پنجره باز شود.
  4. عبارات آموزشی زیر را اضافه کنید و بعد از هر کدام Enter فشار دهید:
  • I want to use spells
  • I really really want to use a phone
  • magic!
  • cash
  • I want to ride a horse
  1. در بخش افزودن پارامترهای هدف ، نام پارامتر را به chosenUnavailableOption به روز کنید.
  2. روی ذخیره کلیک کنید.

همانطور که عبارات آموزشی را وارد می کنید، Actions Builder spells ، phone ، magic ، cash و horse را از نوع unavailable_options تشخیص می دهد و به طور خودکار آن کلمات را برجسته می کند (حاشیه نویسی می کند). Actions Builder همانطور که در تصویر زیر نشان داده شده است به طور خودکار یک پارامتر intent را در قسمت Add intent parameters اضافه می کند.

پارامتر intent به شما امکان می دهد نام گزینه را استخراج کنید و از آن گزینه در یک درخواست استفاده کنید.

df61d4489f0910.png

قصد other_option را به صحنه Fortune اضافه کنید

شما اکنون یک intent، other_option دارید، که می تواند کاربر را انتخاب کند که یکی از گزینه های اصلی نیست. در این قسمت، intent other_option را به صحنه Fortune اضافه می کنید. شما از پارامتر intent برای سفارشی کردن اعلان بر اساس ورودی کاربر استفاده می کنید.

برای افزودن intent other_option به صحنه Fortune ، این مراحل را دنبال کنید:

  1. روی صحنه Fortune کلیک کنید.
  2. روی + (علامت بعلاوه) در کنار مدیریت قصد کاربر کلیک کنید.
  3. از منوی کشویی intent other_option را انتخاب کنید.
  4. 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 به ورودی خامی که کاربر مشخص می کند اشاره دارد.

  1. روی ذخیره کلیک کنید.

4bab1efbe21056aa.png

وقتی کاربر در صحنه Fortune گزینه‌ای را در نوع unavailable_options می‌گوید، هدف other_option مطابقت داده می‌شود و یک درخواست به صف درخواست اضافه می‌کند. از آنجایی که هیچ انتقالی مشخص نشده است، حلقه اجرای صحنه با ارزیابی مجدد مرحله شرایط ادامه می یابد. سپس شیار chosenOptions دستور خود را به صف درخواست اضافه می کند و صف درخواست به کاربر تحویل داده می شود.

اکشن خود را در شبیه ساز تست کنید

اکنون زمانی که کاربر یکی از گزینه های فهرست شده در نوع unavailable_options را انتخاب می کند و مشخص می کند که کاربر کدام کمک را انتخاب کرده است، Action شما باید پاسخ مناسبی بدهد. سپس Action شما باید از کاربر بخواهد که یکی از گزینه های اصلی (اژدها، مترجم یا قطب نما) را انتخاب کند.

برای آزمایش Action خود در شبیه ساز، مراحل زیر را دنبال کنید:

  1. در نوار پیمایش، روی تست کلیک کنید.
  2. Talk to my test app در قسمت Input تایپ کنید و Enter فشار دهید.
  3. Yes را در قسمت Input تایپ کرده و Enter فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید.
  4. magic را در قسمت Input تایپ کنید و Enter فشار دهید.

3a42c33eca435f32.png

ممکن است متوجه شوید که وقتی کاربر "جادو" را انتخاب می کند، به دلیل مقاله "a" که قبل از آن قرار داده شده است، اعلان درست به نظر نمی رسد. شما در بخش های بعدی به این موضوع می پردازید.

کنترل کننده unavailable_options اضافه کنید

برای قرار دادن مقاله "a" قبل از انتخاب های مناسب از نوع unavailable_options ، می توانید یک کنترل کننده رویداد را در منطق تحقق خود پیکربندی کنید تا بررسی کنید آیا گزینه ای که کاربر انتخاب می کند به یک "a" قبل از آن نیاز دارد یا خیر. ابتدا باید Action خود را برای فراخوانی کنترل کننده در کنسول پیکربندی کنید.

برای اضافه کردن کنترل کننده unavailable_options ، این مراحل را دنبال کنید:

  1. روی Develop در نوار ناوبری کلیک کنید.
  2. روی صحنه Fortune کلیک کنید.
  3. در قسمت User intent handling ، روی When other_option مطابقت دارد کلیک کنید تا پنجره باز شود.
  4. کادر بررسی Send prompts را پاک کنید.
  5. چک باکس Call your webhook را انتخاب کنید.
  6. unavailable_options در کادر متنی برای کنترل کننده رویداد وارد کنید.

52a0fba115f1b377.png

  1. روی ذخیره کلیک کنید.

به روز رسانی و استقرار تکمیل

اکنون که Action خود را برای فراخوانی رویداد unavailable_options پیکربندی کرده‌اید، می‌توانید کنترل‌کننده را در اجرای خود به‌روزرسانی کرده و آن را اجرا کنید.

برای به‌روزرسانی اجرای خود، این مراحل را دنبال کنید:

  1. روی Webhook در نوار ناوبری کلیک کنید.
  2. کد زیر را در زیر کنترل کننده greeting اضافه کنید:
app.handle('unavailable_options', conv => {
  const option = conv.intent.params.chosenUnavailableOption.original;
  const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
  let message = 'I have seen the future and ';
  if(optionsNeedA.has(optionKey)){
    message = message + 'a ';
  }
  message = message + `${option} will not aid you on your journey. `;
  conv.add(message);
});
  1. کد زیر را در قسمت const app = conversation(); :
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. روی Save Fulfillment کلیک کنید.
  2. روی Deploy Fulfillment کلیک کنید. هنگامی که استقرار کامل شد، پیامی در بالای ویرایشگر شما به این مضمون که استقرار عملکرد ابری شما به‌روز است.

کد را درک کنید

کنترل کننده unavailable_options کارهای زیر را انجام می دهد:

  • داده های option را از شی conv دریافت می کند و option به ویژگی original ، که ورودی خام کاربر است، اختصاص می دهد.
  • optionKey به ویژگی resolved اختصاص می دهد، که کلید نوع unavailable_options است.
  • بررسی می کند که optionKey یکی از گزینه هایی است که به "a" نیاز دارد یا خیر. اگر باشد، پیام را با یک "a" اضافه می سازد.
  • پیام را از طریق conv.add(message) اضافه می کند

اکشن خود را در شبیه ساز تست کنید

Action شما اکنون باید درخواست را بر اساس اینکه انتخاب کاربر از نوع unavailable_options نیاز به یک مقاله "a" قبل از آن دارد تنظیم کند.

برای آزمایش Action خود، این مراحل را دنبال کنید:

  1. در نوار پیمایش، روی تست کلیک کنید.
  2. Talk to my test app در قسمت Input کلیک کنید یا تایپ کنید و Enter فشار دهید.
  3. Yes را در قسمت Input تایپ کرده و Enter فشار دهید. یا روی تراشه پیشنهاد بله کلیک کنید.
  4. magic را در قسمت Input تایپ کنید و Enter فشار دهید.
  5. horse در قسمت Input تایپ کنید و Enter فشار دهید.

54ee24c5c3c56e.png

اکشن شما باید مقاله "a" را قبل از انتخاب "اسب" اضافه کند، در حالی که دستور را بدون مقاله "a" برای انتخاب "جادویی" می سازد.

پروژه خود را تمیز کنید [توصیه می شود]

برای جلوگیری از تحمیل هزینه های احتمالی، توصیه می شود پروژه هایی را که قصد استفاده از آنها را ندارید حذف کنید. برای حذف پروژه هایی که در این کد لبه ایجاد کرده اید، مراحل زیر را دنبال کنید:

  1. برای حذف پروژه Cloud و منابع، مراحل ذکر شده در بخش Shutting down (حذف) پروژه ها را کامل کنید.
  1. اختیاری: برای حذف فوری پروژه از کنسول Actions، به حذف پروژه مراجعه کنید. اگر این مرحله را کامل نکنید، پروژه شما پس از تقریباً 30 روز به طور خودکار حذف خواهد شد.

5. تبریک!

اکنون مهارت‌های متوسط لازم برای ایجاد Actions برای Google Assistant را پوشش داده‌اید.

آنچه شما پوشش داده اید

  • نحوه توسعه کنش های مکالمه با استفاده از کتابخانه تکمیل Node.js
  • نحوه استفاده از اسلات ها برای جمع آوری داده ها از کاربر
  • نحوه استفاده از شرایط برای افزودن منطق به صحنه
  • چگونه یک حلقه بازی اضافه کنیم
  • نحوه اضافه کردن یک مسیر پشتیبانی

بیشتر بدانید

منابع زیر را کاوش کنید تا درباره ساخت Actions برای Google Assistant اطلاعات بیشتری کسب کنید:

@ActionsOnGoogle را در توییتر دنبال کنید تا با آخرین اعلان‌های ما همراه باشید و برای #AoGDevs توییت کنید تا آنچه ساخته‌اید به اشتراک بگذارید!

نظرسنجی بازخورد

قبل از رفتن، لطفاً یک نظرسنجی مختصر در مورد تجربه خود پر کنید.