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

۱. مرور کلی

پلتفرم توسعه‌دهندگان دستیار گوگل (Google Assistant) به شما امکان می‌دهد نرم‌افزاری برای گسترش عملکرد دستیار گوگل، یک دستیار شخصی مجازی، در بیش از ۱ میلیارد دستگاه، از جمله بلندگوهای هوشمند، تلفن‌ها، اتومبیل‌ها، تلویزیون‌ها، هدفون‌ها و موارد دیگر ایجاد کنید. کاربران برای انجام کارهایی مانند خرید مواد غذایی یا رزرو تاکسی، با دستیار گوگل در مکالمه مشارکت می‌کنند. به عنوان یک توسعه‌دهنده، می‌توانید از پلتفرم توسعه‌دهندگان دستیار گوگل برای ایجاد و مدیریت آسان تجربیات مکالمه‌ای لذت‌بخش و مؤثر بین کاربران و سرویس تکمیل سفارش شخص ثالث خود استفاده کنید.

این آزمایشگاه کد، مفاهیم سطح مبتدی را برای توسعه با Actions SDK برای دستیار گوگل پوشش می‌دهد؛ برای تکمیل آن نیازی به تجربه قبلی با این پلتفرم ندارید. در این آزمایشگاه کد، شما یک اکشن ساده برای دستیار گوگل می‌سازید که طالع کاربران را در آغاز ماجراجویی آنها در سرزمین افسانه‌ای گریفینبرگ به آنها می‌گوید. در آزمایشگاه کد Actions SDK سطح ۲، شما این اکشن را بیشتر توسعه می‌دهید تا طالع کاربر را بر اساس ورودی‌هایش سفارشی کنید.

آنچه خواهید ساخت

در این آزمایشگاه کد، شما یک اکشن ساده با توابع زیر می‌سازید:

  • با یک پیام خوشامدگویی به کاربران پاسخ می‌دهد
  • از کاربران سوالی می‌پرسد و به انتخاب کاربر پاسخ مناسب می‌دهد.
  • تراشه‌های پیشنهادی ارائه می‌دهد که کاربران می‌توانند برای ارائه نظر روی آنها کلیک کنند
  • پیام خوشامدگویی به کاربر را بر اساس اینکه آیا او یک کاربر بازگشتی است یا خیر، تغییر می‌دهد.

وقتی این کدنویسی را تمام کنید، اکشن تکمیل‌شده‌ی شما جریان مکالمه‌ای زیر را خواهد داشت (متن کنار میکروفون نشان‌دهنده‌ی ورودی کاربر است، در حالی که متن کنار بلندگو نشان‌دهنده‌ی پاسخ اکشن است):

1c1e79902bed7230.png

18ef55647b4cb52c.png

آنچه یاد خواهید گرفت

  • نحوه ایجاد پروژه در کنسول Actions
  • نحوه استفاده از ابزار gactions برای push و pull کردن پروژه Action خود بین کنسول Actions و سیستم فایل محلی شما
  • نحوه ارسال اعلان به کاربر پس از فراخوانی اکشن شما
  • نحوه پردازش ورودی کاربر و بازگرداندن پاسخ
  • چگونه اکشن خود را در شبیه‌ساز اکشن‌ها آزمایش کنید
  • نحوه پیاده‌سازی تکمیل سفارش با استفاده از ویرایشگر توابع ابری

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

ابزارهای زیر باید در محیط شما باشند:

  • یک IDE یا ویرایشگر متن دلخواه شما
  • یک ترمینال برای اجرای دستورات shell برای Node.js و npm
  • یک مرورگر وب، مانند گوگل کروم

۲. راه‌اندازی

بخش‌های زیر نحوه‌ی راه‌اندازی محیط توسعه و ایجاد پروژه‌ی Actions را شرح می‌دهند.

تنظیمات مجوز گوگل خود را بررسی کنید

برای آزمایش اکشنی که در این آزمایشگاه کد می‌سازید، باید مجوزهای لازم را فعال کنید تا شبیه‌ساز بتواند به اکشن شما دسترسی داشته باشد.

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

  1. به کنترل‌های فعالیت بروید.
  2. اگر قبلاً این کار را نکرده‌اید، با حساب گوگل خود وارد شوید.
  3. مجوزهای زیر را فعال کنید:
  • فعالیت وب و اپلیکیشن
  • در بخش «فعالیت وب و برنامه» ، کادر « افزودن سابقه و فعالیت Chrome از سایت‌ها، برنامه‌ها و دستگاه‌هایی که از سرویس‌های Google استفاده می‌کنند» را علامت بزنید.**.**

ایجاد یک پروژه اکشن

پروژه اکشن‌های شما، ظرفی برای اکشن شماست.

برای ایجاد پروژه Actions خود برای این codelab، این مراحل را دنبال کنید:

  1. کنسول Actions را باز کنید.
  2. روی پروژه جدید کلیک کنید.
  3. یک نام پروژه ، مانند actions-codelab وارد کنید. (این نام برای ارجاع داخلی شماست. بعداً می‌توانید یک نام خارجی برای پروژه خود تعیین کنید.)

8cd05a84c1c0a32f.png

  1. روی ایجاد پروژه کلیک کنید.
  2. در صفحه «چه نوع عملیاتی می‌خواهید بسازید؟» ، کارت سفارشی را انتخاب کنید.
  3. روی بعدی کلیک کنید.
  4. در صفحه « چگونه می‌خواهید آن را بسازید؟» ، کارت پروژه خالی را انتخاب کنید.
  5. روی شروع ساخت کلیک کنید.

شناسه پروژه را برای اکشن خود ذخیره کنید

شناسه پروژه یک شناسه منحصر به فرد برای اکشن شماست. شما برای چندین مرحله در این آزمایشگاه کد به شناسه پروژه خود نیاز دارید.

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

  1. در کنسول Actions، روی سه نقطه عمودی کلیک کنید (آیکون را اینجا قرار دهید).
  2. روی تنظیمات پروژه کلیک کنید.

6f59050b85943073.png

  1. شناسه پروژه را کپی کنید**.**

مرتبط کردن یک حساب صورتحساب

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

برای مرتبط کردن یک حساب صورتحساب با پروژه خود، این مراحل را دنبال کنید:

  1. به صفحه پرداخت پلتفرم ابری گوگل بروید.
  2. روی افزودن حساب صورتحساب یا ایجاد حساب کلیک کنید.
  3. اطلاعات پرداخت خود را وارد کنید.
  4. روی شروع دوره آزمایشی رایگان من یا ارسال و فعال کردن صورتحساب کلیک کنید.
  5. به صفحه پرداخت پلتفرم ابری گوگل بروید.
  6. روی برگه «پروژه‌های من» کلیک کنید.
  7. روی سه نقطه زیر Actions کنار پروژه Actions برای codelab کلیک کنید.
  8. روی تغییر صورتحساب کلیک کنید.
  9. در منوی کشویی، حساب صورتحسابی را که پیکربندی کرده‌اید، انتخاب کنید.
  10. روی تنظیم حساب کلیک کنید.

برای جلوگیری از تحمیل هزینه، مراحل موجود در بخش «پاکسازی پروژه» در انتهای این آزمایشگاه کد را دنبال کنید.

رابط خط فرمان gactions را نصب کنید

در این آزمایشگاه کد، شما از ابزار رابط خط فرمان (CLI) gactions برای همگام‌سازی پروژه Actions خود بین کنسول Actions و سیستم فایل محلی خود استفاده می‌کنید.

برای نصب رابط خط فرمان gactions، دستورالعمل‌های موجود در بخش «ابزار خط فرمان نصب gactions» را دنبال کنید.

پروژه اکشن‌های خود را دانلود کنید

با دانلود پروژه Actions از کنسول Actions، توسعه Action خود را شروع کنید.

برای دانلود پروژه اکشن‌های خود، این مراحل را دنبال کنید:

  1. برای ایجاد یک دایرکتوری جدید و رفتن به آن دایرکتوری، دستورات زیر را اجرا کنید:
mkdir myproject
cd myproject
  1. برای کپی کردن پیکربندی پروژه Actions خود به سیستم فایل محلی، دستور زیر را اجرا کنید:
gactions pull --project-id <projectID>

ساختار فایل را درک کنید

پروژه Actions که از کنسول Actions دانلود می‌کنید، در یک ساختار فایل YAML نمایش داده می‌شود. تصویر زیر یک نمایش سطح بالا از ساختار فایل را نشان می‌دهد:

2aefeeab7c8eb32f.png

ساختار فایل شامل موارد زیر است:

  • actions/ : نشان‌دهنده‌ی پروژه‌ی Actions شما است. سیستم هنگام فراخوانی Action، actions.yaml را فراخوانی می‌کند که سپس فایل custom/global/actions.intent.MAIN.yaml را فراخوانی می‌کند.
  • custom/ : دایرکتوری که برای تغییر اکشن خود در آن کار خواهید کرد.
  • global/ : این دایرکتوری شامل intentهای سیستمی است که پلتفرم به طور خودکار به پروژه شما اضافه می‌کند. در ادامه این آزمایشگاه کد، درباره intentهای سیستمی بیشتر خواهید آموخت.
  • manifest.yaml : فایلی که حاوی اطلاعاتی است که قابل انتقال هستند، یا مختص هیچ پروژه خاصی نیستند و می‌توانند بین پروژه‌ها جابجا شوند.
  • settings/ : تنظیمات یک پروژه Actions، مانند نام نمایشی، زبان پیش‌فرض و دسته‌بندی را نشان می‌دهد.

۳. مکالمه را شروع کنید

کاربران از طریق فراخوانی، مکالمه با اکشن شما را آغاز می‌کنند. برای مثال، اگر اکشنی به نام MovieTime دارید، کاربران می‌توانند با گفتن عبارتی مانند "Hey Google, talk to MovieTime" اکشن شما را فراخوانی کنند، که در آن MovieTime نام نمایشی است. اگر می‌خواهید اکشن خود را در محیط عملیاتی مستقر کنید، باید یک نام نمایشی داشته باشد. با این حال، برای آزمایش اکشن خود، نیازی به تعریف نام نمایشی ندارید. در عوض، می‌توانید از عبارت "Talk to my test app" در شبیه‌ساز برای فراخوانی اکشن خود استفاده کنید. در ادامه این بخش، اطلاعات بیشتری در مورد شبیه‌ساز خواهید آموخت.

شما باید فراخوانی اصلی را ویرایش کنید تا تعریف کنید که پس از فراخوانی اکشن توسط کاربر چه اتفاقی می‌افتد.

به طور پیش‌فرض، اکشن شما هنگام فعال شدن فراخوانی، یک اعلان عمومی ارائه می‌دهد ( "با تعریف فراخوانی اصلی، ساخت اکشن خود را شروع کنید.").

در بخش بعدی، اعلان فراخوانی اصلی خود را در فایل custom/global/actions.intent.MAIN.yaml سفارشی‌سازی می‌کنید.

تنظیم فراخوانی اصلی

شما می‌توانید اعلان فراخوانی اصلی خود را در فایل actions.intent.MAIN.yaml ویرایش کنید.

برای تغییر اعلانی که اکشن شما هنگام فراخوانی اکشن شما به کاربر ارسال می‌کند، این مراحل را دنبال کنید:

  1. custom/global/actions.intent.MAIN.yaml را در ویرایشگر متن خود باز کنید.
  2. متن داخل کادر speech ( Start building your action... ) را با پیام خوشامدگویی زیر جایگزین کنید: A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.

action.intent.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: A wondrous greeting, adventurer! Welcome to the mythical land of 
                Gryffinberg! Based on your clothes, you are not from around these lands. 
                It looks like you're on your way to an epic journey.
transitionToScene: actions.scene.END_CONVERSATION
  1. فایل را ذخیره کنید.

فراخوانی اصلی را در شبیه‌ساز آزمایش کنید

کنسول Actions یک ابزار وب به نام شبیه‌ساز برای آزمایش Action شما ارائه می‌دهد. این رابط، دستگاه‌های سخت‌افزاری و تنظیمات آنها را شبیه‌سازی می‌کند، بنابراین می‌توانید با Action خود طوری صحبت کنید که انگار روی یک صفحه نمایش هوشمند، تلفن، بلندگو یا KaiOS در حال اجرا است.

وقتی اکشن خود را فراخوانی می‌کنید، اکنون باید با اعلان سفارشی‌شده‌ای که اضافه کرده‌اید ( "یک تبریک شگفت‌انگیز، ماجراجو!...") پاسخ دهد.

شما می‌توانید از دستور gactions deploy preview برای آزمایش Action خود در کنسول بدون به‌روزرسانی نسخه پروژه Actions خود استفاده کنید. وقتی این دستور را اجرا می‌کنید، هیچ یک از تغییراتی که در سیستم فایل محلی خود ایجاد می‌کنید به نسخه‌های مستقر پروژه Actions شما اعمال نمی‌شود، اما می‌توانید آنها را روی یک نسخه پیش‌نمایش آزمایش کنید.

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

  1. برای استقرار پروژه خود در کنسول Actions جهت آزمایش، دستور زیر را در ترمینال اجرا کنید:
gactions deploy preview

شما باید خروجی‌ای شبیه به خروجی زیر دریافت کنید:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. آدرس اینترنتی ارائه شده را کپی کرده و در مرورگر جایگذاری کنید.
  2. برای فراخوانی اکشن خود در شبیه‌ساز، عبارت Talk to my test app در فیلد ورودی تایپ کرده و Enter را بزنید.

656f5736af6a5a07.png

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

مشاهده گزارش‌های رویداد

وقتی در تب Test در کنسول Actions هستید، پنل، گزارش‌های رویداد را نشان می‌دهد که تاریخچه مکالمه را به صورت گزارش‌های رویداد نمایش می‌دهند. هر گزارش رویداد، رویدادهایی را که در طول آن نوبت مکالمه اتفاق می‌افتند، نمایش می‌دهد.

اکشن شما در حال حاضر یک گزارش رویداد دارد که هم ورودی کاربر ( "با برنامه آزمایشی من صحبت کن" ) و هم پاسخ اکشن شما را نشان می‌دهد. تصویر زیر گزارش رویداد اکشن شما را نشان می‌دهد:

a1b748d1fcebca80.png

اگر در گزارش رویدادها روی فلش رو به پایین کنار Talk to my test app کلیک کنید، می‌توانید رویدادهایی را که در آن نوبت از مکالمه رخ داده‌اند، به ترتیب زمانی مشاهده کنید:

  • userInput : مربوط به ورودی کاربر است ( "با برنامه آزمایشی من صحبت کن" )
  • interactionMatch : مربوط به پاسخ فراخوانی اصلی اکشن شما است که توسط ورودی کاربر فعال شده است. اگر این ردیف را با کلیک روی فلش گسترش دهید، می‌توانید اعلانی را که برای فراخوانی اصلی اضافه کرده‌اید ( A wondrous greeting, adventurer!... ) ببینید.
  • endConversation : مربوط به انتقال انتخاب شده در Main invocation است که در حال حاضر مکالمه را پایان می‌دهد. در بخش بعدی این آزمایشگاه کد، درباره انتقال‌ها بیشتر خواهید آموخت.

گزارش‌های رویداد، نحوه‌ی عملکرد اکشن شما را نشان می‌دهند و در صورت بروز هرگونه مشکل، ابزارهای مفیدی برای اشکال‌زدایی اکشن شما هستند. برای مشاهده‌ی جزئیات یک رویداد، همانطور که در تصویر زیر نشان داده شده است، روی فلش کنار نام رویداد کلیک کنید:

fcc389b59af5bef1.png

۴. گفتگوی مربوط به اقدام خود را ایجاد کنید

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

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

برای مثال، یک اکشن فرضی را تصور کنید که حقایق مربوط به حیوانات را در اختیار کاربر قرار می‌دهد. وقتی کاربر این اکشن را فراخوانی می‌کند، نیت Main invocation تطبیق داده می‌شود و انتقال به صحنه‌ای به نام Facts. این انتقال، صحنه Facts فعال می‌کند که پیام زیر را برای کاربر ارسال می‌کند: Would you like to hear a fact about cats or dogs? در صحنه Facts یک نیت سفارشی به نام Cat وجود دارد که شامل عبارات آموزشی است که کاربر ممکن است برای شنیدن حقیقت مربوط به گربه بگوید، مانند "من می‌خواهم حقیقت مربوط به گربه را بشنوم" یا "cat" . وقتی کاربر درخواست شنیدن حقیقت مربوط به گربه را می‌کند، نیت Cat تطبیق داده می‌شود و انتقال به صحنه‌ای به نام Cat fact. صحنه Cat fact فعال می‌شود و پیامی را برای کاربر ارسال می‌کند که شامل حقیقت مربوط به گربه است.

a78f549c90c3bff6.png

شکل ۱. جریان یک مکالمه‌ی معمولی در یک اکشن ساخته شده با Actions SDK.

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

انتقال از فراخوانی اصلی به صحنه

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

برای ایجاد این صحنه و اضافه کردن یک گذار به آن، این مراحل را دنبال کنید:

  1. custom/global/actions.intent.MAIN.yaml را در ویرایشگر متن خود باز کنید.
  2. متن موجود در فیلد transitionToScene ( actions.scene.END_CONVERSATION ) را با متن زیر جایگزین کنید: transitionToScene: Start

action.intent.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Welcome to the mythical land of  Gryffinberg! Based on your clothes,
              you are not from around these lands. It looks like you're on your way
              to an epic journey.
transitionToScene: Start

این به اکشن شما می‌گوید که از فراخوانی اصلی به صحنه Start scene) منتقل شود.

  1. فایل را ذخیره کنید.
  2. در ترمینال، یک دایرکتوری scenes جدید در دایرکتوری custom ایجاد کنید:
mkdir custom/scenes 
  1. یک فایل جدید به نام Start.yaml در دایرکتوری scenes ایجاد کنید که نشان‌دهنده‌ی صحنه‌ی start در اکشن شما باشد:
touch custom/scenes/Start.yaml 
  1. Start.yaml در ویرایشگر متن خود باز کنید.
  2. کد زیر را در فایل Start.yaml قرار دهید:

شروع.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?

در کد فایل Start.yaml ، فیلدی به نام onEnter وجود دارد که اولین مرحله‌ای است که در چرخه حیات یک صحنه اجرا می‌شود.

در این حالت، وقتی کاربر برای اولین بار وارد صحنه Start می‌شود، اعلان ( Before you continue on your quest... ) به صف اعلان‌ها اضافه می‌شود.

اضافه کردن چیپ‌های پیشنهادی

تراشه‌های پیشنهاد، پیشنهادهای قابل کلیکی را برای کاربر ارائه می‌دهند که اقدام شما به عنوان ورودی کاربر پردازش می‌کند. در این بخش، تراشه‌های پیشنهاد Yes و No اضافه می‌کنید که در زیر اعلانی که اخیراً پیکربندی کرده‌اید ( Before you continue on your quest, would you like your fortune told? ) ظاهر می‌شوند تا از کاربران در دستگاه‌های دارای صفحه نمایش پشتیبانی کنند.

برای افزودن تراشه‌های پیشنهادی به اعلان صحنه Start ، این مراحل را دنبال کنید:

  1. کد موجود در Start.yaml را به‌روزرسانی کنید تا با قطعه کد زیر که شامل کد پیکربندی تراشه‌های پیشنهاددهنده است، مطابقت داشته باشد:

شروع.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?
        suggestions:
        - title: "Yes"
        - title: "No"
  1. فایل را ذخیره کنید.

اکشن خود را در شبیه‌ساز آزمایش کنید

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

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

  1. در ترمینال، دستور زیر را اجرا کنید:
gactions deploy preview

شما باید خروجی‌ای شبیه به خروجی زیر دریافت کنید:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. آدرس اینترنتی ارائه شده را کپی کرده و در مرورگر جایگذاری کنید.
  2. روی تست کلیک کنید تا به شبیه‌ساز هدایت شوید.
  3. عبارت Talk to my test app در فیلد ورودی تایپ کنید و Enter را فشار دهید. اقدام شما باید با اعلان Main invocation و اعلان صحنه Start اضافه شده، "قبل از ادامه ماموریت، آیا مایلید فال شما گرفته شود؟" ، و تراشه‌های پیشنهادی نمایش داده شوند.

تصویر زیر این تعامل را نشان می‌دهد:

3c2013ebb2da886a.png

  1. برای پاسخ به سوال، روی تراشه پیشنهاد بله یا خیر کلیک کنید. (همچنین می‌توانید «بله» یا «خیر» بگویید یا Yes یا No را در قسمت ورودی وارد کنید.)

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

به طور پیش‌فرض، هدف سیستمی NO_MATCH پاسخ‌های عمومی ارائه می‌دهد، اما می‌توانید این پاسخ‌ها را طوری تنظیم کنید که به کاربر نشان دهد ورودی او را متوجه نشده‌اید. دستیار پس از اینکه سه بار نتواند ورودی کاربر را مطابقت دهد، مکالمه کاربر را با اقدام شما پایان می‌دهد.

افزودن اینتنت‌های yes و no

اکنون که کاربران می‌توانند به سوالی که اکشن شما مطرح می‌کند پاسخ دهند، می‌توانید اکشن خود را طوری پیکربندی کنید که پاسخ‌های کاربران ( "بله" یا "خیر" ) را درک کند. در بخش‌های بعدی، شما intentهای سفارشی ایجاد می‌کنید که وقتی کاربر می‌گوید "بله" یا "خیر" مطابقت دارند و این intentها را به صحنه Start اضافه می‌کنید.

هدف yes ایجاد کنید

برای ایجاد هدف yes ، این مراحل را دنبال کنید:

  1. در ترمینال، یک دایرکتوری جدید به نام intents در دایرکتوری custom ایجاد کنید:
mkdir custom/intents 
  1. یک فایل جدید به نام yes.yaml در دایرکتوری intents ایجاد کنید:
touch custom/intents/yes.yaml
  1. yes.yaml را در ویرایشگر متن خود باز کنید.
  2. قطعه کد زیر که شامل عبارات آموزشی است را در yes.yaml قرار دهید:

بله.yaml

trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
  1. فایل را ذخیره کنید.

افزودن قصد yes به صحنه Start

حالا، اکشن می‌تواند بفهمد که کاربر چه زمانی قصد «بله» را بیان می‌کند. می‌توانید قصد سفارشی yes را به صحنه Start اضافه کنید، زیرا کاربر در حال پاسخ به اعلان Start است (« قبل از ادامه ماموریت، آیا دوست دارید فال شما گرفته شود؟» ).

برای افزودن این intent سفارشی به صحنه Start ، مراحل زیر را دنبال کنید:

  1. custom/scenes/Start.yaml را در ویرایشگر متن خود باز کنید.
  2. intentEvents و yes handler را به انتهای فایل Start.yaml اضافه کنید:

شروع.yaml

intentEvents:
- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
  intent: "yes"
  transitionToScene: actions.scene.END_CONVERSATION

وقتی منظور از yes مطابقت داشته باشد، عبارت «آینده شما به آیتمی که برای ماموریت خود انتخاب می‌کنید بستگی دارد...» به صف اعلان‌ها اضافه می‌شود. سپس صحنه Start به صحنه سیستمی actions.scene.END_CONVERSATION منتقل می‌شود که اعلان‌ها را در صف اعلان‌ها ارائه می‌دهد و مکالمه را پایان می‌دهد.

تست قصد yes در شبیه‌ساز

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

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

  1. در ترمینال، دستور زیر را اجرا کنید:
gactions deploy preview

شما باید خروجی‌ای شبیه به خروجی زیر دریافت کنید:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. آدرس اینترنتی ارائه شده را کپی کرده و در مرورگر جایگذاری کنید.
  2. روی تست کلیک کنید تا به شبیه‌ساز هدایت شوید.
  3. برای آزمایش اکشن خود در شبیه‌ساز، عبارت Talk to my test app را در فیلد ورودی تایپ کرده و Enter بزنید.
  4. در فیلد ورودی، Yes را تایپ کنید و Enter را فشار دهید. یا، روی تراشه پیشنهاد بله کلیک کنید.

f131998710d8ffd8.png

اقدام شما به کاربر پاسخ می‌دهد و به او می‌گوید که سرنوشتش به کمکی که انتخاب می‌کند بستگی دارد. سپس اقدام شما جلسه را پایان می‌دهد زیرا شما گذار End conversation را برای هدف yes پیکربندی کرده‌اید.

no قصد و نیتی ایجاد نکنید

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

برای ایجاد این هدف، مراحل زیر را دنبال کنید:

  1. در ترمینال، یک فایل جدید به نام no.yaml در دایرکتوری intents ایجاد کنید:
touch custom/intents/no.yaml
  1. no.yaml در ویرایشگر متن خود باز کنید.
  2. عبارات آموزشی زیر را در فایل no.yaml قرار دهید:

خیر.yaml

trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
  1. فایل را ذخیره کنید.

no قصدی به صحنه Start اضافه نکنید

حالا، اکشن می‌تواند بفهمد که کاربر چه زمانی «نه» یا چیزی شبیه به «نه» را بیان می‌کند، مثلاً «نه» . شما باید اینتنت سفارشی no را به صحنه Start اضافه کنید، زیرا کاربر در حال پاسخ به اعلان Start است (« قبل از ادامه ماموریت، آیا دوست دارید فال شما گرفته شود؟» ).

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

  1. custom/scenes/Start.yaml را در ویرایشگر متن خود باز کنید.
  2. تابع no handler زیر را زیر تابع yes در Start.yaml اضافه کنید:

شروع.yaml

- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: I understand, stranger. Best of luck on your quest! Farewell.
  intent: "no"
  transitionToScene: actions.scene.END_CONVERSATION
  1. فایل را ذخیره کنید.

تست no قصد در شبیه‌ساز

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

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

  1. در ترمینال، دستور زیر را اجرا کنید:
gactions deploy preview

شما باید خروجی‌ای شبیه به خروجی زیر دریافت کنید:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. آدرس اینترنتی ارائه شده را کپی کرده و در مرورگر جایگذاری کنید.
  2. روی تست کلیک کنید تا به شبیه‌ساز هدایت شوید.
  3. در فیلد ورودی Talk to my test app تایپ کرده و Enter را بزنید.
  4. در فیلد ورودی، No را تایپ کنید و Enter را فشار دهید. یا، روی تراشه No پیشنهاد کلیک کنید.

c0c8b04066577eb2.png

به جای اینکه به کاربر ثروت بدهید، اکشن شما در سفرش برای او آرزوی موفقیت می‌کند. سپس اکشن شما جلسه را پایان می‌دهد زیرا شما گذار End conversation را برای « no قصد» پیکربندی کرده‌اید.

۵. اجرای تعهدات

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

تکمیل شما مشخص می‌کند که آیا کاربر، کاربر قبلی است یا کاربر جدید و پیام خوشامدگویی اکشن را برای کاربران قبلی تغییر می‌دهد. پیام خوشامدگویی برای کاربران قبلی کوتاه شده و بازگشت کاربر را اعلام می‌کند: « یک خوشامدگویی شگفت‌انگیز، ماجراجو! به سرزمین افسانه‌ای گریفینبرگ خوش آمدید!»

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

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

رضایت خود را بسازید

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

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

  1. در ترمینال، مطمئن شوید که در دایرکتوری ریشه پروژه خود هستید و یک دایرکتوری جدید webhooks ایجاد کنید:
mkdir webhooks 
  1. یک فایل جدید با نام ActionsOnGoogleFulfillment.yaml در دایرکتوری webhooks ایجاد کنید:
touch webhooks/ActionsOnGoogleFulfillment.yaml
  1. ActionsOnGoogleFulfillment.yaml در ویرایشگر متن خود باز کنید.
  2. کنترل‌کننده‌ی greeting و محتوای inlineCloudFunction را به فایل ActionsOnGoogleFulfillment.yaml اضافه کنید:

ActionsOnGoogleFulfillment.yaml

handlers:
- name: greeting
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment

فایل ActionsOnGoogleFulfillment.yaml کنترل‌کننده‌های وب‌هوک شما (مانند کنترل‌کننده‌ی greeting ) را تعریف می‌کند و به اکشن شما می‌گوید که از توابع ابری (Cloud Functions) به عنوان نقطه‌ی پایانی وب‌هوک استفاده کند.

  1. یک دایرکتوری جدید ActionsOnGoogleFulfillment در دایرکتوری webhooks ایجاد کنید:
mkdir webhooks/ActionsOnGoogleFulfillment
  1. یک فایل جدید به نام index.js در پوشه ActionsOnGoogleFulfillment ایجاد کنید:
touch webhooks/ActionsOnGoogleFulfillment/index.js
  1. index.js در ویرایشگر متن خود باز کنید.
  2. کد زیر را به index.js اضافه کنید:

ایندکس.js

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

const app = conversation({debug: true});

app.handle('greeting', conv => {
 let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
 if (!conv.user.lastSeenTime) {
   message = 'Welcome to the mythical land of  Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
 }
 conv.add(message);
});


exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

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

کاربر

  1. فایل را ذخیره کنید.
  2. یک فایل جدید به نام package.json در پوشه ActionsOnGoogleFulfillment ایجاد کنید:
touch webhooks/ActionsOnGoogleFulfillment/package.json

فایل package.json وابستگی‌ها و سایر فراداده‌های مربوط به وب‌هوک شما را مشخص می‌کند.

  1. package.json در ویرایشگر متن خود باز کنید.
  2. کد را از این مخزن گیت‌هاب کپی کرده و در فایل package.json قرار دهید.
  3. فایل را ذخیره کنید.

کد را بفهمید

تکمیل سفارش شما که از کتابخانه Actions on Google Fulfillment برای Node.js استفاده می‌کند، به درخواست‌های HTTP از دستیار گوگل پاسخ می‌دهد.

در قطعه کد قبلی، شما کنترل‌کننده‌ی greeting را تعریف می‌کنید که بررسی می‌کند آیا کاربر قبلاً با استفاده از ویژگی lastSeenTime از Action بازدید کرده است یا خیر. اگر ویژگی lastSeenTime تعریف نشده باشد، کاربر جدید است و خوشامدگویی که برای کاربران جدید در نظر گرفته شده است را دریافت می‌کند. در غیر این صورت، پیام، بازگشت کاربر را تأیید می‌کند و یک خوشامدگویی اصلاح‌شده ایجاد می‌کند.

به‌روزرسانی فراخوانی اصلی برای راه‌اندازی یک وب‌هوک

حالا که تابع greeting را تعریف کرده‌اید، می‌توانید کنترل‌کننده‌ی رویداد greeting را در invocation intent اصلی خود پیکربندی کنید تا Action شما بداند که وقتی کاربر Action شما را فراخوانی می‌کند، این تابع را فراخوانی کند.

برای پیکربندی اکشن خود برای فراخوانی مدیریت‌کننده‌ی جدید greeting ، این مراحل را دنبال کنید:

  1. custom/global/actions.intent.MAIN.yaml را در ویرایشگر متن خود باز کنید.
  2. کد موجود در actions.intent.MAIN.yaml را با کد زیر جایگزین کنید:

action.intent.MAIN.yaml

handler:
  webhookHandler: greeting
transitionToScene: Start
  1. فایل را ذخیره کنید.

اکنون، هنگامی که هدف اصلی فراخوانی شما مطابقت داشته باشد، کنترل‌کننده وب‌هوک greeting فراخوانی می‌شود.

تست فراخوانی اصلی به‌روزرسانی‌شده در شبیه‌ساز

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

  1. در ترمینال، دستور زیر را اجرا کنید:
gactions deploy preview

شما باید خروجی‌ای شبیه به خروجی زیر دریافت کنید:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. آدرس اینترنتی ارائه شده را کپی کرده و در مرورگر جایگذاری کنید.
  2. برای آزمایش اکشن خود در شبیه‌ساز، عبارت Talk to my test app را در فیلد ورودی تایپ کرده و Enter بزنید.

از آنجایی که شما اکشن خود را قبلاً در این آزمایشگاه کد آزمایش کرده‌اید، کاربر جدیدی نیستید، بنابراین خوشامدگویی کوتاه‌شده‌ی زیر را دریافت خواهید کرد: « یک خوشامدگویی شگفت‌انگیز، ماجراجو! به سرزمین افسانه‌ای گریفینبرگ خوش آمدید!...»

۶. با Actions Builder، عمل را تجسم کنید

کیت توسعه نرم‌افزار اکشن‌ها (Actions SDK) قابلیت همکاری با یک IDE مبتنی بر وب به نام Actions Builder را دارد که در کنسول اکشن‌ها ادغام شده است. شما می‌توانید با دستور gactions push ، سیستم فایل محلی خود را به پیش‌نویس اکشن خود در کنسول منتقل کنید. برخلاف gactions deploy preview که فقط به شما امکان می‌دهد اکشن خود را در شبیه‌ساز آزمایش کنید، gactions push تمام محتوا را از فایل‌های محلی شما به Actions Builder منتقل می‌کند.

کنسول Actions یک نمایش بصری از پیکربندی Action شما ارائه می‌دهد. مشاهده‌ی نقشه‌برداری بصری Action شما می‌تواند در طول توسعه مفید باشد و بر نسخه Action شما که برای آزمایش ارائه می‌شود تأثیری ندارد.

برای ارسال پروژه Actions و مشاهده آن در کنسول Actions، این مراحل را دنبال کنید:

  1. در ترمینال، دستور زیر را اجرا کنید تا پروژه خود را به کنسول Actions منتقل کنید:
gactions push

شما باید خروجی‌ای شبیه به خروجی زیر دریافت کنید:

✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
  1. آدرس اینترنتی ارائه شده را کپی کرده و در مرورگر جایگذاری کنید.
  2. در کنسول Actions ، روی Develop در نوار ناوبری بالا کلیک کنید.
  3. روی فلش کشویی کنار Scenes کلیک کنید و Start را بزنید. شما باید نمایش بصری از صحنه Start اکشن خود را ببینید، همانطور که در تصویر زیر نشان داده شده است:

332404b148609e96.png

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

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

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

۷. تبریک می‌گویم!

شما اصول اولیه ساخت اکشن‌ها برای دستیار گوگل با استفاده از Actions SDK را می‌دانید.

آنچه را که پوشش دادید

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

بیشتر بدانید

برای کسب اطلاعات بیشتر در مورد ساخت اکشن‌ها برای دستیار گوگل، منابع زیر را بررسی کنید:

Follow @ActionsOnGoogle on Twitter for the latest announcements and tweet with #AoGDevs to share what you build!

Feedback survey

Before you go, please fill out a brief survey about your experience.